Очень важно, чтобы система Zabbix была оптимизирована для получения максимальной производительности.
Типовые советы по выбору аппаратной конфигурации:
Можно оптимизировать многие параметры для получения оптимальной производительности.
StartPollers
Основное правило - использовать как можно меньшее значение. Каждый лишний процесс zabbix добавляет определенную нагрузку, В то же время, распараллеливание увеличивается. Оптимальное количество процессов достигается, когда очередь, в среднем, содержит минимальное количество параметров (идеально, 0 в любой момент времени). За этим значением можно следить, используя внутренний элемент данных zabbix[queue].
DebugLevel (Уровень журналирования)
Оптимальное значение 3.
DBSocket
Только для MySQL. Для соединения с базой данных рекомендуется использовать DBSocket. Это более быстрый и более защищенный путь.
Это возможно наиболее важная часть оптимизации Zabbix. Zabbix сильно зависит от доступности и производительности базы данных.
Проблемы связанные с производительностью веб-интерфейса можно диагностировать при помощи режима отладки веб-интерфейса.
Начиная с Zabbix 2.2, процессы отображают в командной строке текущую активность и значимую статистику, примерно так:
UID PID PPID C STIME TTY TIME CMD zabbix22 4584 1 0 14:55 ? 00:00:00 zabbix_server -c /home/zabbix22/zabbix_server.conf zabbix22 4587 4584 0 14:55 ? 00:00:00 zabbix_server: configuration syncer [synced configuration in 0.041169 sec, idle 60 sec] zabbix22 4588 4584 0 14:55 ? 00:00:00 zabbix_server: db watchdog [synced alerts config in 0.018748 sec, idle 60 sec] zabbix22 4608 4584 0 14:55 ? 00:00:00 zabbix_server: timer #1 [updated 0 hosts, suppressed 0 events in 0.000472 sec, idle 59 sec] zabbix22 4637 4584 0 14:55 ? 00:00:01 zabbix_server: history syncer #3 [processed 0 values, 0 triggers in 0.000036 sec, idle 1 sec] zabbix22 4657 4584 0 14:55 ? 00:00:00 zabbix_server: vmware collector #1 [updated 0, removed 0 VMware services in 0.000004 sec, idle 5 sec] zabbix22 4670 1 0 14:55 ? 00:00:00 zabbix_proxy -c /home/zabbix22/zabbix_proxy.conf zabbix22 4673 4670 0 14:55 ? 00:00:00 zabbix_proxy: configuration syncer [synced config 15251 bytes in 0.111861 sec, idle 60 sec] zabbix22 4674 4670 0 14:55 ? 00:00:00 zabbix_proxy: heartbeat sender [sending heartbeat message success in 0.013643 sec, idle 30 sec] zabbix22 4688 4670 0 14:55 ? 00:00:00 zabbix_proxy: icmp pinger #1 [got 1 values in 1.811128 sec, idle 5 sec] zabbix22 4690 4670 0 14:55 ? 00:00:00 zabbix_proxy: housekeeper [deleted 9870 records in 0.233491 sec, idle 3599 sec] zabbix22 4701 4670 0 14:55 ? 00:00:08 zabbix_proxy: http poller #2 [got 1 values in 0.024105 sec, idle 1 sec] zabbix22 4707 4670 0 14:55 ? 00:00:00 zabbix_proxy: history syncer #4 [processed 0 values, 0 triggers in 0.000039 sec, idle 1 sec] zabbix22 4738 1 0 14:55 ? 00:00:00 zabbix_agentd -c /home/zabbix22/zabbix_agentd.conf zabbix22 4739 4738 0 14:55 ? 00:00:00 zabbix_agentd: collector [idle 1 sec] zabbix22 4740 4738 0 14:55 ? 00:00:00 zabbix_agentd: listener #1 [waiting for connection] zabbix22 4741 4738 0 14:55 ? 00:00:00 zabbix_agentd: listener #2 [processing request]
Основной процесс является исключением. Вместо текущей активности отображается изначальная командная строка. Такое поведение помогает разделять в системе процессы с несколькими экземплярами Zabbix.
Такая возможность не реализована на платформах Microsoft Windows.
Если уровень журналирования указан равным DebugLevel=4, подобные сообщения о активности и статистике также записываются в файл журнала.
В системах Linux команда ps
может использоваться с командой watch
для наблюдения, что делает Zabbix. Например, запуска команды ps
5 раз в секунду для наблюдения за активностью процессов:
watch -n 0.2 ps -fu zabbix
Наблюдение только за процессами Zabbix прокси и агента:
watch -tn 0.2 'ps -f -C zabbix_proxy -C zabbix_agentd'
Наблюдение только за процессами history syncer:
watch -tn 0.2 'ps -fC zabbix_server | grep history'
Команда ps
предоставляет широкий вывод (примерно 190 символов), который требуется для некоторых сообщений активности. Если ваш терминал имеет менее чем 190 символов для текста, вы можете попробовать следующий способ:
watch -tn 0.2 'ps -o cmd -C zabbix_server -C zabbix_proxy -C zabbix_agentd'
для отображения только полезной информации без UID, PID, времени старта и прочего.
Можно также использовать команду top
для наблюдения за производительностью Zabbix. Нажатие клавиши 'c' в команде top
отобразит процессы с их командами строками. В наших тестах в Linux top
и atop
отображают корректно изменения активности процессов Zabbix, но в htop
смена активности не отображалась.
Если команда watch
не установлена, подобный вывод можно получить следующим способом:
while [ 1 ]; do ps x; sleep 0.2; clear; done
Если команда watch
не доступна, можно использовать следующий метод:
while [ 1 ]; do ps -fu zabbix; sleep 1; clear; done
По умолчанию команда ps
не отображает изменения активности. Вместо этой команды можно использовать /usr/ucb/ps
.
Если команда watch
не установлена, периодическое обновление списка процессов может выполнить следующим сособом:
while [ 1 ]; do /usr/ucb/ps gxww; sleep 1; clear; done
В Solaris 11:
/usr/ucb/ps
по умолчанию не установлен. Вам возможно потребуется установить ucb пакет, т.е. pkg install compatibility/ucb
,sleep
принимает не только секунды, но также и дроби секунд (т.е. sleep 0.2
).