Tech Recipe Book
My Services
  • Book
    • About the author
    • Architect
      • Algorithms
        • DB index algorithms
          • How does database indexing work
        • Neural network optimization
          • Neural Network Optimization
        • Route search
          • Road network in a database to build a route
          • Traveling Salesman Problem (TSP)
      • Architecture Frameworks
        • DODAF
        • TOGAF
        • Enterprise Architecture (EA) Tools Reviews 2023 | Gartner
      • Zero Trust
      • Billing
        • SHM billing system
      • Bots
        • Discord
        • Telegram
          • Chat GPT Telegram bot
          • Получаем статистику Telegram-канала при помощи api и python или свой tgstat с регистрацией и смс
          • Как хостить телеграм-бота (и другие скрипты на Python) на Repl.it бесплатно 24/7
          • Создание Telegram бота на PHP #1: основные понятия для работы с API
          • Создание Telegram бота на PHP #2: создание первого бота для Telegram
          • Создание Telegram бота на PHP #3: примеры отправки сообщений с кнопками в Telegram
          • Создание Telegram бота на PHP #4: отправка файлов и изображений в Telegram
          • Создание Telegram бота на PHP #5: работа с хуками
      • Business intelligence
      • Cloud Storage
        • Ceph
        • Virtual Distributed File System
      • Cryptography
        • Open Source PKI Software
        • OpenPGP
          • Email Encryption
          • Kleopatra
          • Miscellaneous Tools
          • Server side applications
      • Message broker
        • Kafka
          • Kafka UI-tools
          • Kafka streams ksqlDb
        • RabbitMQ
      • DB
        • MySQL
          • Auto sharding
          • MariaDB Zabbix monitoring
          • MySQL and MariaDB replication with Zabbix monitoring
        • Postgres
          • HA PostgreSQL with Patroni, Haproxy, Keepalived
          • Mass parallel requests - Greenplum
          • PostgreSQL cluster for development and testing
        • Vitess - Scalable. Reliable. MySQL-compatible. Cloud-native. Database.
      • Identity and Access Management (IDM)
        • FreeIPA - Identity, Policy, Audit
        • FreeIPA as an Enterprise solution
        • Keycloak
          • Keycloak HA cluster
        • Open Identity Platform
        • SSO
          • Keycloak for Java app
          • OpenAM
          • OpenIG
      • Firewall
        • nftables
      • Infrastructure As a Code
        • Ansible
        • IaC Packer Ansible Teraform
        • Installing Jenkins using terraform in Kubernetes in Yandex Cloud with letsencypt
        • Teraform Crosplan Pulumi
        • Yandex IaC solutions
      • Kubernetes
        • Installation
          • Install Kubernetes cluster
          • Deploying a Kubespray cluster to OpenStack using Terraform
          • Kube deploy in Yandex cloud
        • Frameworks
          • Deckhouse
            • LDAP authentification
            • On premise Install
            • Yandex Cloud Install
          • K3S
          • OpenShift OKD
          • RKE2
          • Rancher
            • Rancher Install
        • Auth
          • Keycloak in k8s
          • LDAP
        • GUI management Lens
        • Monitoring
          • Monitoring with Falco
          • Network monitoring
          • Nginx ingress
          • Prometheus Graphana for sample Nodejs app
          • Rsource monitoring Avito
        • Exposing services
          • Exposing Kubernetes Services
          • Cilium BGP
        • CNCF
        • Helm
          • Repositories
            • Artifact Hub | official
            • Bitnami | vmware
          • Awesome helm charts and resources
          • Essential Services for Modern Organizations
          • Security and Compliance
          • Additional charts
        • Isolation
          • vcluster - Virtual Kubernetes Clusters
          • Kiosk
          • KubeArmor
          • Control Plane Hardening
          • Hierarchical namespaces
        • Security Center
          • Minesweeper
          • NeuVector by SUSE
          • SOAR in Kubernetes
          • Security Сenter for Kubernetes
        • Terraform CI security
          • Terraform plan analysis with Checkov and Bridgecrew
          • Yandex Terraform scan
        • Vulnerability management
          • Aqua
          • Sysdig
          • Kyverno
          • GitLab
          • NeuVector by SUSE
        • Image scanning
          • Snyk
          • Sysdig
          • Harbor
          • Trivy
        • Signature verification
          • Sigstore
        • Control plane security
          • Gatekeeper
            • Applying OPA Gatekeeper
          • Kyverno
            • Policy as a code. Kyverno
        • Runtime Security
          • Osquery
          • Falco
          • ClamAV
        • Network security
          • Cilium
          • Control Plane Hardening (API restriction)
          • Network policy recipes
          • Service mesh
            • Istio HA, LoadBalance, Rate limit
          • mTLS Autocert
        • Honeypot
          • Building honeypot using vcluster and Falco
        • Backup
          • Kasten K10
        • Secrets
          • Vault CSI Driver
      • Load Balance
        • Nginx
        • HAProxy
          • Proxy methods
          • HAProxy for RDP
          • Payment gateway A/B test with HAProxy
          • HAPRoxy for Percona or Galera
      • Monitoring
        • Zabbix
          • Apache Zabbix
          • Disc Quota
          • Nginx Zabbix
          • SSL certificates Zabix
          • Zabbix notifications
        • Nagios
          • Datacenter monitoring
        • Prometheus and Grafana
      • Windows
        • Sysmon enhanced Windows audit
        • Sysmon to Block Unwanted File
      • Linux
        • Rsync
        • Debian based
          • Apt-Cacher NG
          • Unattended Upgrades in Debian / Ubuntu
        • RedHat basede
          • RPM Server
        • Logs analysis
        • Build armhf qemu
      • NGFW
      • CI/CD
        • DevSecOps
          • DAST
            • Burp
              • Dastardly
            • StackHawk
            • ZAP and GitHub Actions
          • SAST
            • Checkmarx
            • OSV by Google
            • Snyk
            • SonarQube
        • GitLab Runner in Yandex Cloud
        • Dynamic Gitlab Runners in Yandex Cloud
        • GitLab runner in Kubernetes with Werf
        • Kubernetes deploy strategies
        • Kubernetes highload deploy. part 1
        • Kubernetes highload deploy. part 2
        • Kubernetes Argo Rollouts
        • Jenkins in Kubernetes
        • Ansible Semaphore
        • Image storage, scaning and signing
        • Install WireGuard with Gitlab and Terraform
        • CI/CD example fror small web app
        • Threat matrix for CI CD Pipeline
      • SIEM / SOC
        • Datadog
        • Splunk
          • Splunk — general description
        • MaxPatrol
          • MaxPatrol 8 and RedCheck Enterprise
        • QRadar IBM
        • Cloud Native Security Platform (CNAPP) - Aqua
        • OSSIM | AT&T
          • AlienVault (OSSIM) install
        • Wazuh
        • EDR
          • Cortex XDR | Palo Alto Networks
          • Cynet
          • FortiEDR | Fortinet
          • Elastic
        • Elastic
          • Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on Ubuntu 22.04
          • Setting Up Elastic 8 with Kibana, Fleet, Endpoint Security, and Windows Log Collection
        • Threat Intelligence
          • MISP
          • msticpy Microsoft
          • X-Force | IBM
          • Elastic
      • VPN
        • Full-Mesh VPN fastd, tinc, VpnCloud
        • Wireguard
          • WireGuard for Internet access
          • WireGuard on MikroTik and Keenetic
          • WireGuard site to site
        • SoftEther VPN Project
        • Cisco AnyConnect client
        • OpenConnect
        • SSTP python server
      • OS hardening
        • CIS Benchmarks
      • Cloud Providers
      • OpenNebula
        • OpenNebula Edge Cloud - Open Source Cloud & Edge Computing
        • Discover OpenNebula – Open Source Cloud & Edge Computing Platform
        • OpenNebula Multi-Cloud
        • Kubernetes on OpenNebula
        • The Open Source Alternative to Nutanix
        • The Simple Alternative to OpenStack
        • OpenNebula Partner Ecosystem
      • OpenStack
        • Install manual
        • Install with DevStack
      • VM
        • Create a VHD file from a Linux disk
        • Backup / Migration
          • Coriolis
          • Proxmox Backup Server
        • oVirt
        • VMware vCenter
        • Proxmox
      • Docker
        • Container optimization
        • Ubuntu RDP container
      • LXC
        • LXD on Ubuntu 18.04
        • Install, Create and Manage LXC in Ubuntu/Debian
    • Big Data
      • OLAP data qubes
      • Storage and autoscale in Lerua
    • Machine Learning
      • Yandex YaLM 100B. GPT model
      • Kaggle Community Datasts Models
      • AI in video production
      • Image search
      • Chat bots
        • You.com
        • Chat GPT
          • Implementing GPT in NumPy
        • Jailbreak Chat
      • Coding plugins CodeWhisperer
    • Malware
      • Isiaon/Pitraix: Modern Cross-Platform Peer-to-Peer Botnet over TOR
      • theZoo A repository of LIVE malwares
    • Pentest
      • Red Team
        • MITRE ATT&CK matrix
        • C2 Frameworks
          • Brute Ratel C4
          • Cobalt Strike
          • Covenant
          • Havoc Framework
          • Merlin
          • Metasploit
          • Sillenttrinity
          • Sliver
        • Manage and report
          • Dradis Framework
          • Hexway
        • Underground
      • Social engineering
        • Social Engineer Toolkit setoolkit
      • OSINT
        • OSINT for comapny
        • Instagram fishing
      • Forensics
        • Forensics tools
      • Pentesting Methodology
      • Web
      • CI/CD Methodology
      • Cloud Methodology
        • Hacking The Cloud
      • Kubernetes Pentesting
      • Android
        • SSL Unpinning for Android applications
      • iOS
        • SSL unpinning iOS and macOS applications
      • HackBar tool
      • CyberChef Tools
      • Python virtualenv
      • IppSec - YouTube
      • Hacktricks.xyz
    • Compliance
      • 152 ФЗ. Personal data
      • PCI DSS and ГОСТ Р 57580.1-2017
      • Cloud compliance
      • ГОСТ Р 57580.1-2017 для Kubernetes
      • Kubernets as DevSecOps and NIST compliance
      • NIST SP 800-61 cyberincidece control
      • CIS Kubernetes Benchmark v1.6 - RKE2 v1.20
      • CIS Kubernetes Benchmark v1.23 - RKE2
      • Requirements for Russian Banks
      • Tools
        • Chef InSpec
        • Elastic SIEM
    • Asset management
      • CMDBuild
    • Project management
    • Incident management SRE
    • Risk management
      • IT risk management
      • BSI-Standard 200-3
    • Web Dev
      • Cookie security
      • OWASP Top 10 2021
      • Docker nginx php mysql
      • Docker tor hiddenservice nginx
      • Docker Compose wp nginx php mariadb
      • Dependency Checking
        • Nexus Analyzer
        • OWASP dependency-check
      • Yii skeeks cms
      • YiiStudio
    • Art
      • GTK Themes
      • Themes for Xfce Desktop
      • XFCE / Xubuntu Windows 95
      • Moscow events
      • Photo goods
      • Russian style gifts
    • Cryptocurrency
      • News
      • Arbitrage
      • Stocks
      • Exchange aggregators
      • Where to use
      • Prepaid cards
        • BitFree
        • Pyypl Your Money at Your Fingertips
    • IT magazines
      • WIKI and Writeups tools
        • BookStack
        • GitBook
        • MkDocs
        • Wiki.js
        • DokuWiki
    • Languages
    • Learning
      • (ISC)2
        • CISSP
      • Offensive Security
        • OSCP
        • OSEP
        • OSED
      • DevSecOps
        • Certified DevSecOps Professional (CDP)
        • Certified DevSecOps Expert (CDE)
      • Web Security Academy: PortSwigger
    • Relocation
      • London experience
      • IT visas in 2022
      • Remote work
      • Running business in UAE
    • Freenet
      • Independent online services: the philosophy of a free Internet
      • Tor Project Anonymity Online
      • I2P Anonymous Network
    • Services
      • SMS Registration
        • Registering ChatGPT in Russia
      • Local and regional eSIMs for travellers - Airalo
      • Digital busines cards
      • No KYC services and exchanges
Powered by GitBook
On this page
  • Disc Quota
  • Мониторинг дисковых квот с помощью Zabbix
  • Настройка квот файловой системы на сервере
  • Настройка журналируемых квот
  • Ручная проверка использования квот
  • Программа для мониторинга квот check_quota.pl с помощью Zabbix
  • Задание crontab для запуска программы check_quota.pl
  • Шаблон для Zabbix

Was this helpful?

  1. Book
  2. Architect
  3. Monitoring
  4. Zabbix

Disc Quota

Last updated 1 year ago

Was this helpful?

Disc Quota

Мониторинг дисковых квот с помощью Zabbix

Если постоянно не контролировать свободное пространство на дисках сервера, то рано или поздно диски переполнятся. В результате перестанут работать сервисы, и даже может получиться так, что вы не сможете подключиться к консоли сервера через SSH.

Конечно, стандартные шаблоны мониторинга Zabbix для операционных систем содержат триггеры, которые сработают при опасном уменьшении свободного пространства на диске.

Однако на серверах лучше ограничивать использование файловой системы для пользователей с помощью дисковых квот. Это предотвратит переполнение всего диска, если один из пользователей запишет на диск слишком много файлов. Такая ситуация бывает, например, на серверах хостинга интернет-магазинов, импортирующих крупные каталоги товаров.

В этой статье мы расскажем про настройку квот файловой системы Linux, а также про то, как организован мониторинг квот на хостинговых серверах SAAS-сервиса интернет-магазинов.

Настройка квот файловой системы на сервере

Проще всего настроить использование квот, если на сервере установлена какая-нибудь панель управления, например ISPmanager или Hestia Control Panel. Если же никакая панель не используется, можно настроить квоты вручную.

Настройка через панель управления ISPmanager

Если на вашем сервере установлена панель управления ISPmanager, то для включение дисковых квот достаточно установить флажок Дисковые квоты на странице Конфигурация ПО, доступную в меню Настройки (рис. 1).

Рис. 1. Включение дисковых квот в панели ISPmanager

Настройка через панель управления Hestia Control Panel

В бесплатной панели управления Hestia Control Panel для включения квот нужно использовать плагин File System Disk Quota. Чтобы его включить, щелкните значок шестеренки справа вверху, затем щелкните кнопку Configure и раскройте блок Plugins (рис. 2).

Рис. 2. Блок Plugins в панели Hestia Control Panel

Убедитесь, что в меню File System Disk Quota выбрана строка Yes.

Чтобы задавать различные квоты для разных пользователей, нужно создать необходимое количество пакетов (Package), указав в них нужные значения квот.

Для добавления пакета откройте список пользователей при помощи кнопки USERS, щелкните кнопку Packages, а затем — кнопку Add Package.

При добавлении пакета укажите нужное значение квоты в поле Quota (рис. 3).

Рис. 3. Указание квоты в пакете панели Hestia Control Panel

Далее щелкните кнопку Save для сохранения изменений.

Настройка вручную для Debian

Прежде всего, обновите пакеты и установите пакет quota:

# apt update
# apt install quota

Проверьте версию установленного пакета:

# quota --version
Quota utilities version 4.06.
…

Далее отредактируйте файл /etc/fstab при помощи любого текстового редактора, например vim:

# vim /etc/fstab

Найдите в этом файле строку раздела /, для которого нужно добавить квоты:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/vda3       /               ext4    errors=remount-ro 0       1
/dev/vda2       /boot           ext2    defaults        0       2

Затем добавьте «,usrquota,grpquota» без пробела, как это показано ниже:

/dev/vda3       /               ext4    errors=remount-ro,usrquota,grpquota 0       1
/dev/vda2       /boot           ext2    defaults        0       2

Сохраните файл /etc/fstab и перемонтируйте файловую систему:

# mount -o remount /

Убедитесь, что при монтировании файловой системы добавились нужные нам опции:

~# cat /proc/mounts | grep ' / '
/dev/vda3 / ext4 rw,relatime,quota,usrquota,grpquota,errors=remount-ro 0 0

Далее запустите команду quotacheck, которая создаст файлы /aquota.user и /aquota.group, предназначенные для хранения информации об ограничениях и использовании файловой системы:

# quotacheck -ugm /

Проверьте, что файлы создались:

# ls -lh / | grep aquota
-rw-------   1 root root 6.0K Aug  4 15:12 aquota.group
-rw-------   1 root root 6.0K Aug  4 15:12 aquota.user

Если все хорошо, включите квоты:

# quotaon -v /
/dev/vda3 [/]: group quotas turned on
/dev/vda3 [/]: user quotas turned on

Чтобы установить квоты, например, для пользователя quotausr, введите такую команду:

# setquota -u quotausr 100M 120M 0 0 /

Эта команда установит для пользователя quotausr квоту 100 Мбайт и лимит 120 Мбайт.

Проверьте, что квота и лимит были установлены:

# quota -vs quotausr
Disk quotas for user quotausr (uid 1000):
Filesystem   space   quota   limit   grace   files   quota   limit   grace
/dev/vda3     16K    100M    120M               4       0       0

Настройка журналируемых квот

При включении квот командой quotaon на консоли может появиться следующее сообщение:

quotaon: Your kernel probably supports ext4 quota feature but you are using external quota files. Please switch your filesystem to use ext4 quota feature as external quota files on ext4 are deprecated.

Оно говорит, что вам нужно настроить так называемые журналируемые квоты. Они хороши тем, что после аварийного завершения работы ОС не нужно запускать проверку квот вручную.

Для настройки журналируемых квот добавьте в файл /etc/fstab строку (без пробелов) «,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0»:

/dev/vda3       /               ext4    errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0       1
/dev/vda2       /boot           ext2    defaults        0       2

Если ранее были созданы файлы /aquota.user и /aquota.group, удалите их:

# rm /aquota.user
# rm /aquota.group

Перемонтируйте корневой раздел и запустите проверку квот::

# mount -o remount /
# quotacheck -avugm

При первом запуске вы получите предупреждающие сообщения, которые можно игнорировать:

quotacheck: Your kernel probably supports ext4 quota feature but you are using external quota files. Please switch your filesystem to use ext4 quota feature as external quota files on ext4 are deprecated.
quotacheck: Scanning /dev/vda3 [/] done
quotacheck: Cannot stat old user quota file //aquota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file //aquota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old user quota file //aquota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file //aquota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Checked 5029 directories and 42224 files
quotacheck: Old file not found.
quotacheck: Old file not found.

Далее включите квоты:

# quotaon -avug
quotaon: Your kernel probably supports ext4 quota feature but you are using external quota files. Please switch your filesystem to use ext4 quota feature as external quota files on ext4 are deprecated.

Опять игнорируйте предупреждающие сообщения, но убедитесь, что квоты включены:

/dev/vda3 [/]: group quotas turned on
/dev/vda3 [/]: user quotas turned on

Далее, как и при работе с обычными квотами, установите квоты для пользователя и проверьте, что они успешно установились:

# setquota -u quotausr 100M 120M 0 0 /
# quota -vs quotausr
Disk quotas for user quotausr (uid 1000):
Filesystem   space   quota   limit   grace   files   quota   limit   grace
/dev/vda3     16K    100M    120M               4       0       0

Однако не создавайте вручную файлы /aquota.user и /aquota.group, как там рекомендуется. Эти файлы будут созданы автоматически командой quotacheck.

Ручная проверка использования квот

Чтобы проверить использование квот вручную, используйте команду repquota:

# repquota -s /
*** Report for user quotas on device /dev/vda3
Block grace time: 7days; Inode grace time: 7days
                        Space limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   1496M      0K      0K          44653     0     0
man       --   1688K      0K      0K            160     0     0
_apt      --     12K      0K      0K              3     0     0
ntp       --     12K      0K      0K              3     0     0
zabbix    --     72K      0K      0K              8     0     0
quotausr  --     16K    100M    120M              4     0     0

Параметр -s указывает программе включить в отчет использованное дисковое пространство, а также количество индексных узлов inode. Второй параметр указывает файловую систему, для которой нужно проверить использование квот.

Обратите внимание, что здесь выводятся значения для так называемой мягкой (soft) и жесткой (hard) квот.

Если будет превышено значение мягкой квоты, пользователь получит предупреждающе сообщение. Что же касается жесткой квоты, то ее значение пользователь превысить не сможет — сработает ограничение.

Команда repquota с параметрами -v и -g показывают все квоты, в том числе для групп, даже если квоты не используются:

# repquota -v -g /
*** Report for group quotas on device /dev/vda3
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      -- 1493712       0       0          44605     0     0
adm       --    2600       0       0             26     0     0
tty       --      76       0       0              3     0     0
mail      --      28       0       0              2     0     0
man       --    1688       0       0            160     0     0
shadow    --     168       0       0              7     0     0
utmp      --    1828       0       0              4     0     0
staff     --       8       0       0              2     0     0
systemd-journal -- 32780   0       0              3     0     0
crontab   --      48       0       0              2     0     0
messagebus --     52       0       0              1     0     0
ssh       --     348       0       0              1     0     0
ntp       --      12       0       0              3     0     0
zabbix    --      72       0       0              8     0     0
quotausr  --      16       0       0              4     0     0

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 15
Used average: 15.000000

Если добавить параметр -p, то команда repquota будет показывать период времени grace, в течение которого система будет предупреждать пользователя о переполнении квоты, но не ограничивать его:

# repquota -c -v -p -g /
*** Report for group quotas on device /dev/vda3
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      -- 1493712       0       0      0   44605     0     0      0
adm       --    2608       0       0      0      26     0     0      0
tty       --      76       0       0      0       3     0     0      0
mail      --      28       0       0      0       2     0     0      0
man       --    1688       0       0      0     160     0     0      0
shadow    --     168       0       0      0       7     0     0      0
utmp      --    1832       0       0      0       4     0     0      0
staff     --       8       0       0      0       2     0     0      0
systemd-journal -- 32780   0       0      0       3     0     0      0
crontab   --      48       0       0      0       2     0     0      0
messagebus --     52       0       0      0       1     0     0      0
ssh       --     348       0       0      0       1     0     0      0
ntp       --      12       0       0      0       3     0     0      0
zabbix    --      72       0       0      0       8     0     0      0
quotausr  --      16       0       0      0       4     0     0      0

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 15
Used average: 15.000000

Программа для мониторинга квот check_quota.pl с помощью Zabbix

Эта программа не пытается отслеживать квоты для каждого пользователя. Вместо этого она получает общий список квот и определяет максимальное использование квоты в процентах по всей файловой системе.

Предполагается, что если какой-либо пользователь приблизился к переполнению жесткой квоты, то системный администратор получает сообщение об этом от Zabbix. Далее он вручную с помощью панели ISPmanager проверяет "провинившегося" пользователя и увеличивает ему квоту, чтобы сайт продолжил свою работу.

Если оказалось, что какой-либо сайт интернет-магазина стал занимать слишком много места на диске сервера, то нужно решить, повышать ли ему тариф за использование дискового пространства или попросить клиента удалить ненужную информацию. Возможно, придется перенести сайт на другой сервер.

Практика показала, что этот способ вполне себя оправдывает. Автоматическая обработка переполнения квоты едва ли возможна, так как необходимо обсуждение возникшей ситуации с клиентом.

Инициализация программы check_quota.pl

В процессе инициализации программа check_quota.pl получает параметры командной строки, определяет версию ОС (Linux или FreeBSD), пути для запуска утилит zabbix_sender и repquota, а также задает параметры запуска для repquota:

my $zabbix_server_ip = $ARGV[0];
my $hostname = $ARGV[1];
if($ARGV[2] eq 'debug') { $debug = 1; } else { $debug = 0; }
if($^O eq 'linux')
{
  $zabbix_sender = '/usr/bin/zabbix_sender';
  $bin_repquota = '/usr/sbin/repquota';
  $cmd = "$bin_repquota -c -v -p -g /";
}
elsif($^O eq 'freebsd')
{
  $zabbix_sender = '/usr/local/bin/zabbix_sender';
  $bin_repquota = '/usr/sbin/repquota';
  $cmd = "$bin_repquota -v -g /";
}
else
{
  print "\nUnsupported OS: $^O";
}

Получение информации об использовании квот

Для получения информации об использовании квот программа запускает утилиту repquota:

my @rqout = ();
@rqout = split /\n/, `$cmd`;

Результаты обрабатываются в цикле:

my $max_quota_use=0;
foreach my $line (@rqout)
{
   my @dat = split /\s+/, $line;
   next if (($#dat < 9) or ($dat[4] !~ /^\d+/));
   my ($quotaname, $quota_status, $quota_inuse, $quota_softlimit, $quota_hardlimit,$quota_grace) = ( $dat[0], $dat[1], $dat[2], $dat[3], $dat[4], $dat[5] );
   if ($quotaname =~ /#/)
   {
     $quotaname =~ s/#//g;
     $quotaname = "${quotaname}";
   }
   my $quotaname_perfdata = $quotaname; $quotaname_perfdata =~ s/^uid /uid/g;
   my $percent;
   if ($quota_hardlimit != 0)
   {
      $percent = int(($quota_inuse * 100) / $quota_hardlimit);
   }
   else
   {
     $percent=0;
   }
   if($percent != 0)
   {
     if($max_quota_use < $percent) { $max_quota_use = $percent; }
   }
}

Максимальное значение использованной квоты, выраженной в процентах, сохраняется в переменной max_quota_use.

Отправка результатов на серверы Zabbix

Чтобы отправить результат, а именно максимальное значение использованной квоты на серверы Zabbix, программа запускает в цикле утилиту zabbix_sender:

my $zabbix_item_key = 'quota.key';
my @zabbix_server_ip_array = split(',', $zabbix_server_ip);
foreach my $server_ip (@zabbix_server_ip_array)
{
  my $trap_cmd = $zabbix_sender.' -vv -z '.$server_ip.' -s "'.$hostname.'" -k '.$zabbix_item_key.' -o '.$max_quota_use;
  my @trapout = ();
  @trapout = split /\n/, `$trap_cmd`;
}

Отправка выполняется на серверы, адреса IP которых были заданы в командной строке при запуске программы.

Задание crontab для запуска программы check_quota.pl

Программу check_quota.pl нужно запускать периодически как задание crontab с правами пользователя root:

*/11 * * * *    /usr/bin/perl /home/frolov/zabbix_quota/check_quota.pl [Zabbix_IP_1], [Zabbix_IP_2] [Hostname

Здесь программа запускается каждые 11 минут. Вы, конечно, можете задать другой график запуска программы в зависимости от ваших потребностей.

В качестве параметров программе передается список адресов IP серверов Zabbix, разделенных запятой, а также имя хоста, как оно определено на серверах Zabbix.

Шаблон для Zabbix

В шаблоне определен один ключ quota.key (рис. 4).

Рис. 4. Ключ quota.key

Также в этом шаблоне определены два триггера (рис. 5).

Рис. 5. Триггеры в шаблоне программы check_quota.pl

Первый из этих триггеров срабатывает, когда максимальное использование квоты достигло 90% или более. Этот триггер отмечен как серьезный (High), так как переполнение квоты требует срочного вмешательства системного администратора.

Второй триггер срабатывает, если данные о текущем использовании квот не поступают полтора часа или дольше. Как правило, такое бывает при неправильной настройке задания crontab или при наличии других ошибок в настройке сервера. Здесь важность не так велика (Warning), и системный администратор может действовать в плановом, а не срочном порядке.

Автор: Александр Фролов.

Возможно, вам будет полезна .

Более подробное руководство по настройке квот вы .

Вы можете также обратиться к .

Параметр -c включит кэширование. Более подробное описание параметров программы repquota .

Чтобы автоматически контролировать использование дисковых квот с помощью Zabbix, мы подготовили программу .

Для программы check_quota.pl мы подготовили шаблон, который можно загрузить .

документация разработчика панели по настройке квот
найдете здесь
следующей инструкции
можно найти здесь
check_quota.pl
по этому адресу
https://habr.com/ru/companies/first/articles/685114/