Оптимизация производительности Zabbix

1.Оптимизация Zabbix-сервера

1.Использование активных Zabbix-agent проверок вместо пассивных Zabbix-agent проверок
(уменьшает нагрузку на Zabbix-сервер и количество TCP-соединений)
При этом на Zabbix-агенте, возможно,есть смысл увеличить дефолтные значения параметров
Ниже приведены дефолтные значения

На Zabbix-сервере необходимо увеличить кол-во процессов Zabbix-trapper, которые принимают входящие соединения активных агентов, Zabbix-sender и активных прокси.

2.Использование наименее дорогого с точки зрения чтения/записи базы данных типа элемента данных

Каждый элемент данных записывается в отдельные таблицу history*, в которых содержится разный тип и длина полей для хранения одного значения.

3.Использовать наименее дорогого с точки зрения нагрузки процессора триггера

Например, функции min/max/avg сильнее нагружают процессор в отличии от функций last,nodata

4.Время хранения данных в таблицах history,trends,events
Уменьшаем время хранения истории с дефолтных 90 дней на 7 дней (при создании элемента данных)
Время хранения в таблице trends оставляем дефолтное 365 дней (при создании триггера)(если нет необходимости в просмотре информации за год,то сокращаем время хранения тенденций)
Время хранения событий, генерируемых триггерами, можно уменьшить с дефолтных 365 дней, чтобы не увеличивать размер таблицы events при частых колебаниях/срабатывании триггеров

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

2.Оптимизация базы данных Zabbix

Например, используется MySQL в качестве СУБД и общий размер всех innodb-таблиц базы данных zabbix равен 1,8Gb)

(один пул на каждый 1GB памати в innodb_buffer_pool_size)

(если допускается потеря данных при аварийном прекращении работы MySQL, то для оптимизации производительности рекомендуется установить значение в 0)

Произведение innodb_log_file_size(256M) и innodb_log_files_in_group (2)должно бать примерно равно ¼ значения innodb_buffer_pool_size(2048M))

(дефолтное значение)
На SSD-дисках необходимо увеличить до 2000

Отключение кеша

3.Оптимизация графического интерфейса Zabbix (GUI)

Оптимизация WEB-сервера Apache
Включение поддержки сжатия (установить и активировать модули mod_deflate и/или mod_gzip)

Добавить в виртуальный хост Zabbix в Apache

Оптимизация WEB-сервера Nginx

Включение поддержки PHP-кеширования средствами OpCache

4. Оптимизация операционной системы

1.Оптимизация файловой системы
Для нагруженных Zabbix-серверов

На уровне userspace(пользовательского пространства)

Проверить и увеличить лимит на кол-во открытых файлов для пользователя, под которым работает Zabbix-сервер(например ,для пользователя zabbix до 100000)

На уровне kernelspace(пространства ядра)
Проверить/увеличить лимит на кол-во открытых файлов

2. Изменение политики использования SWAP
Переменная ядра vm.swappiness
Установка высоких значений будет приводить к более частому использованию SWAP-раздела/файла, в отличии от низких значений
По умолчанию используется 60
Операционная система выгружает данные при заполнении ОЗУ на 60%

Необходимо изменить до значения 5-10.
Так мы вынуждаем операционную систему использовать больше физической памяти прежде чем задействовать виртуальную память (swap-раздел/файл )

Два других параметра ядра должны быть оценены и, при необходимости, изменены для уменьшения тенденции свопинга.
Эти значения напрямую влияют на ввод-вывод
Эти параметры следующие:

максимальный объем системной памяти, которую можно заполнить dirty pages;

процент системной памяти, который можно заполнить dirty pages до того, как фоновые процессы pdflush/flush/kdmflush запишут их на диск;

3.Оптимизация сетевых параметров

5. Мониторинг состояния Zabbix

Метрики/Элементы данных важные для диагностики Zabbix-сервера

Метрики/Элементы данных важные для диагностики производительности Zabbix-proxy

Метрики/Элементы данных важные для диагностики производительности Zabbix-базы данных
1.Мониторинг медленных запросов
2.Мониторинг DELETE,INSERT,UPDATE,SELECT-запросов (для этого отличо подходит встроенный в Zabbix шаблон Template App MySQL)

Дальнейшая оптимизация производительности Zabbix связана с разделением всех/некоторых его компонентов Zabbix-сервера/GUI/Zabbix-базы данных на отдельные сервера.
Например, на одном сервере размещать Zabbix-сервер и графический интерфейс(GUI), а базу данных вынести на отдельный сервер.

Также для разгрузки Zabbix-сервера и мониторинга териториально распределенных сетей есть смыл устанавливать и использовать Zabbix-proxy