Расширение возможностей агентов Zabbix
В этом разделе приведены пошаговые инструкции по расширению функциональности агента Zabbix с помощью пользовательского параметра.
В приведенном ниже примере извлекается количество операторов, выполненных сервером MySQL. Эти шаги применимы как к агенту Zabbix, так и к агенту Zabbix 2.
В этом примере показано, как работают пользовательские параметры. Для мониторинга MySQL в рабочей среде рекомендуется использовать предопределенные шаблоны MySQL, которым не требуются пользовательские параметры.
Шаг 1. Подготовка доступа к MySQL
агент работает от имени пользователя операционной системы zabbix.
Не используйте учетную запись MySQL root, так как для нее может применяться аутентификация через сокет, что может помешать подключению агента.
Вместо этого создайте отдельного пользователя MySQL:
CREATE USER 'zbx_monitor'@'localhost' IDENTIFIED BY '<password>';
Сохраните учетные данные в файле, доступном для чтения только пользователю zabbix, например /etc/zabbix/mysql_monitor.cnf (путь зависит от операционной системы и способа установки Zabbix):
[client]
user=zbx_monitor
password=<strong password>
Установите владельца и права доступа к файлу:
sudo chown zabbix:zabbix /etc/zabbix/mysql_monitor.cnf
sudo chmod 600 /etc/zabbix/mysql_monitor.cnf
Явно укажите этот файл с помощью --defaults-extra-file (этот параметр должен быть первым параметром, переданным клиенту MySQL), вместо использования ~/.my.cnf, поскольку переменная окружения HOME демона может быть не задана или иметь значение, отличное от ожидаемого.
Если MySQL использует нестандартный путь к сокету, добавьте в этот же файл строку socket=.
Шаг 2. Написание команды
Напишите пользовательский скрипт или команду для получения требуемого параметра и убедитесь, что она работает в тех же условиях, что и демон агента.
Следующая команда возвращает количество операторов, выполненных сервером MySQL:
/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e "SHOW GLOBAL STATUS LIKE 'Questions'" | /usr/bin/awk '{print $2}'
Вы можете протестировать команду от имени пользователя zabbix; она должна вывести одно число:
sudo -u zabbix sh -c "/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e \"SHOW GLOBAL STATUS LIKE 'Questions'\" | /usr/bin/awk '{print \$2}'"
Шаг 3: Добавьте команду в конфигурацию агента Zabbix
Вместо редактирования основного файла конфигурации агента (zabbix_agentd.conf или zabbix_agent2.conf) создайте отдельный файл в каталоге, подключаемом параметром Include.
Отдельные файлы проще обслуживать, и вероятность их изменения при обновлении пакетов ниже.
Например, создайте файл /etc/zabbix/zabbix_agentd.d/mysql.conf (/etc/zabbix/zabbix_agent2.d/mysql.conf для агента Zabbix 2) со следующим содержимым:
UserParameter=mysql.questions,/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e "SHOW GLOBAL STATUS LIKE 'Questions'" | /usr/bin/awk '{print $2}'
mysql.questions — уникальный ключ элемента данных.
Он должен быть уникальным в конфигурации агента.
Проверить параметр можно, запустив агент Zabbix с флагом -t.
Выполняйте проверку от имени пользователя zabbix и укажите файл конфигурации, если он находится не в расположении по умолчанию:
Для агента Zabbix:
sudo -u zabbix zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t mysql.questions
Для агента Zabbix 2:
sudo -u zabbix zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -t mysql.questions
Ожидаемый результат содержит число, например:
mysql.questions [t|4567]
Шаг 4. Перезагрузка и проверка пользовательского параметра
Перезагрузите пользовательские параметры из файла конфигурации, выполнив следующую команду:
Для агента Zabbix:
sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R userparameter_reload
Для агента Zabbix 2:
sudo zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -R userparameter_reload
Выполните команду от имени root или пользователя операционной системы, от имени которого работает агент.
Также можно перезапустить агент, чтобы применить изменения конфигурации.
Проверить параметр в работающем агенте можно с помощью утилиты zabbix_get, например с сервера Zabbix:
zabbix_get -s <IP address> -k mysql.questions
Здесь <IP address> — IP-адрес узла сети, на котором работает агент, к которому подключается zabbix_get.
IP-адрес узла сети, на котором выполняется zabbix_get, должен быть указан в параметре Server агента.
Чтобы эта проверка прошла успешно, агент должен принимать пассивные проверки (для агента Zabbix параметр StartAgents не должен иметь значение 0).
Если агент настроен только на активные проверки, пропустите эту проверку и после выполнения последнего шага проверьте элемент данных в разделе Мониторинг > Последние данные.
Шаг 5: Создание элемента данных
Создайте новый элемент данных на отслеживаемом узле сети с ключом элемента данных mysql.questions.
Выберите тип элемента данных: Zabbix Agent или Zabbix Agent (active).
Для пассивного Zabbix агента адрес сервера Zabbix или прокси должен быть указан в параметре Server агента.
Для активного Zabbix агента параметр ServerActive должен указывать на сервер Zabbix или прокси, а параметр Hostname агента должен в точности совпадать с именем узла сети, настроенным в веб-интерфейсе.
Выберите Тип информации элемента данных. Агент всегда возвращает значение в виде текста; параметр Тип информации определяет, как Zabbix интерпретирует и сохраняет значение после выполнения всех шагов предварительной обработки.
Для необработанного накопительного счетчика выберите Числовой (без знака). Чтобы измерять количество операторов в секунду, выберите Числовой (с плавающей точкой) и добавьте шаг предварительной обработки Изменение в секунду.