Zabbix

Как увеличить количество файловых дескрипторов в Zabbix 7.0 LTS

"В этой статье рассказываю о настройках на уровне ОС для увеличения количества файловых дескрипторов в Zabbix 7.0."
Александр Романюк
автор, инженер-проектировщик систем мониторинга
Zabbix:
…the user limit of 1024 file descriptors is insufficient. The maximum number of concurrent checks per worker has been reduced…
User:
Пришло время увеличить количество файловых дескрипторов.
Эта запись в логе указывает на то, что текущий лимит файловых дескрипторов для пользователя (в данном случае пользователя, под которым работает Zabbix сервер или прокси) установлен на 1024. Лимит недостаточен для того количества операций, которые выполняет Zabbix, что приводит к автоматическому снижению максимального количества одновременных проверок для одного воркера. В реальности это означает, что система не может одновременно открывать достаточно файлов или сетевых подключений, что ограничивает производительность Zabbix при обработке данных.
Что такое файловые дескрипторы?
Файловые дескрипторы — это идентификаторы, используемые операционной системой для доступа к файлам и сетевым ресурсам. Каждый процесс в системе имеет свой собственный лимит файловых дескрипторов, который ограничивает количество файлов или сокетов, которые могут быть открыты одновременно.
Зачем увеличивать лимит файловых дескрипторов?
С ростом числа устройств и элементов данных, которые отслеживает Zabbix, может потребоваться больше файловых дескрипторов. Если Zabbix требуется больше дескрипторов, чем текущий лимит, это может привести к ошибкам или ограничениям производительности, что в итоге приведет к уменьшению количества одновременных проверок на один воркер и замедлению обработки данных.
Как проверить текущее количество файловых дескрипторов?
Сначала проверим текущий лимит файловых дескрипторов для запущенного zabbix_server процесса с помощью команды:

# cat /proc/$(pgrep -o zabbix_server)/limits | grep "Max open files"
Эта команда вернет текущие soft и hard лимиты файловых дескрипторов для процесса  zabbix_server. Например:

Max open files   1024   524288   files
  • Первое значение — soft лимит.
  • Второе значение — hard лимит.
Теперь нужно увеличить soft лимит с 1024 до 10000. Значение должно быть установлено в соответствии с конкретными потребностями и может быть выше, чем в примере. Zabbix уведомит в логе, если лимитов недостаточно.
Как переопределить количество файловых дескрипторов?
Создадим каталог для хранения новой конфигурации системы:

# mkdir /etc/systemd/system/zabbix-server.service.d
Установим нужные разрешения для этого каталога:

# chmod 755 /etc/systemd/system/zabbix-server.service.d
Создадим файл с переопределенной конфигурацией, чтобы увеличить лимит файловых дескрипторов. В этом примере установим ограничение на 10000:

# nano /etc/systemd/system/zabbix-server.service.d/override.conf
[Service]
LimitAS=infinity
LimitRSS=infinity
LimitNOFILE=10000
LimitNOPROC=1024
Перезагрузим конфигурацию systemd, чтобы применить новые настройки

# systemctl daemon-reload
Проверим состояние службы сервера Zabbix:

# systemctl status zabbix-server.service
В результате должны увидеть что-то вроде:
Перезапустим Zabbix:

# systemctl restart zabbix-server.service
Проверим результат:

# cat /proc/$(pgrep -o zabbix_server)/limits | grep "Max open files"
Он должен выглядеть так:

Max open files   10000   10000   files
В заключение
Увеличение лимита файловых дескрипторов для пользователя поможет предотвратить проблемы с производительностью и стабильностью Zabbix-сервера или прокси-сервера. Следуя шагам, описанным выше, можно увеличить ограничения файловых дескрипторов для пользователя, гарантируя, что ваш Zabbix сможет эффективно обрабатывать больше одновременных запросов.
Что дальше

Приглашаем наши тренинги по Zabbix, OpenSearch, ElasticSearch

Максимум знаний за короткое время