2 Оптимизация производительности
Очень важно, чтобы система Zabbix была оптимально настроена для получения максимальной производительности.
2.1 Аппаратное обеспечение
Общие советы по оборудованию:
-
Используйте самый быстрый процессор из доступных
-
SCSI или SAS лучше чем IDE (производительность IDE дисков может быть существенно улучшена с помощью утиллиты hdparm) и SATA
-
15K RPM лучше чем 10K RPM, что в свою очередь лучше чем 7200 RPM
-
Пользуйтесь быстрым хранилищем RAID
-
Используйте быстрый адаптер подключения к сети
-
Наличие дополнительной памяти это всегда хорошо.
2.2 Операционная система
-
Используйте последнюю (стабильную!) версию ОС
-
Выключите из ядра не требуемую функциональность
-
Оптимизируйте параметры ядра
2.3 Параметры настройки Zabbix
Много параметров могут быть оптимизированы для получения оптимальной производительности.
2.3.1 zabbix_server
StartPollers
Общее правило – удерживать значение этого параметра как можно более низким. Каждый дополнительный процесс zabbix_server добавляет определенные накладные расходы, в то же время, увеличивает параллелизм. Оптимальное количество процессов достигается тогда, когда очередь в среднем содержит минимальное количество параметров (в идеале, 0 в любой данный момент). Это значение может контролироваться с помощью внутренней метрики zabbix[queue].
DebugLevel
Оптимальное значение 3.
DBSocket
Только для MySQL. Рекомендуется использовать DBSocket для подключений к базе данных. Это самый быстрый и самый безопасный способ.
2.4 Движок базы данных
Это, вероятно, самая важная часть оптимизации Zabbix. Zabbix во многом зависит от доступности и производительности базы данных.
-
Используйте самый быстрый движок базы данных, т.е. MySQL))
-
Используйте стабильный релиз движка базы данных
-
Перекомпилируйте MySQL или PostgreSQL из исходных кодов для получения максимальной производительности
-
Следуйте инструкциям по оптимизации производительности из документации по MySQL или PostgreSQL
-
Для MySQL, используйте структуру таблиц InnoDB
-
Zabbix работает по крайней мере в 1.5 раза быстрее если используется InnoDB (при сравнении с MyISAM). Это происходит за счет увеличения параллелизма. Однако, InnoDB требует больших ресурсов процессора.
-
Очень рекомендуется оптимизация сервера баз данных для лучшей производительности.
-
Разнесите таблицы базы данных на разные жесткие диски
-
'history', 'history_str, 'items' 'functions', triggers', и 'trends' наиболее активно используемые таблицы.
-
Для больших установок, рекомендуется в MySQL для временных файлов использовать tmpfs
2.5 Общие советы
-
Наблюдать только нужные параметры
-
Оптимизируйте 'Интервал обновления' для всех элементов данных. Использование маленького интервала обновления может быть хорошо для красивых графиков, однако, это может чрезмерно нагружать Zabbix
-
Оптимизируйте параметры для шаблонов по умолчанию
-
Оптимизируйте параметры очистки истории
-
Не осуществляйте мониторинг за параметрами, которые возвращают одну и ту же информацию.
Пример: зачем использовать system.cpu.util[,user,avg1] и system.cpu.util[,user,avg5], если system.cpu.util[,user,avg1] уже содержит получаемые данные, причем более детальные.
-
Избегайте использования триггеров с большим периодом времени, переданным в качестве аргумента функции. Например, max(3600) будет высчитано значительно медленнее, чем max(60).
Data source: Zabbix