Мониторинг MySQL в ZABBIX

MySQL в ZABBIX

http://www.zabbix.com/

Мониторинг любой СУБД необходим как для поиска узких мест в производительности, так и для дальнейшего «тюнинга», а потому вопрос отслеживания основных параметров является достаточно актуальным. Это не касается каких-то небольших серверов, речь идет о достаточно ресурсоемких приложениях, тесно взаимодействующих с СУБД. MySQL умеет отдавать данные о собственной производительности, вопрос лишь в том как их подцепить к системе мониторинга, в нашем случае Zabbix. Об этом и пойдет речь в этой статье.


Вводная статья по шаблонам мониторинга ZABBIX — Шаблоны ZABBIX.

Если вам интересна тематика ZABBIX, рекомендую обратиться к основной статье — Система мониторинга ZABBIX, в ней вы найдете дополнительную информацию.


Настройка мониторинга MySQL в ZABBIX

Создаем каталог для скриптов, если его все ещё у вас нет. Сразу назначаем права и меняем владельца:
root@debian7:~# mkdir -m 750 /usr/local/etc/zabbix_agent_scripts
root@debian7:~# chown root:zabbix /usr/local/etc/zabbix_agent_scripts

Создаем скрипт:
root@debian7:~# nano /usr/local/etc/zabbix_agent_scripts/mysql-stats.sh

Со следующим содержанием:

#!/bin/bash
##### OPTIONS VERIFICATION #####
if [[ -z «$1» || -z «$2″ ]]; then
exit 1
fi
##### PARAMETERS #####
RESERVED=»$1″
METRIC=»$2″
USER=»${3:-user}»
PASS=»${4:-pass}»
#
MYSQLADMIN=»/usr/bin/mysqladmin»
MYSQL=»/usr/bin/mysql»
CACHE_TTL=»55″
CACHE_FILE=»/tmp/zabbix.mysql-stats.cache»
EXEC_TIMEOUT=»1″
NOW_TIME=`date ‘+%s’`
##### RUN #####
if [ «${METRIC}» = «alive» ]; then
${MYSQLADMIN} -u${USER} -p${PASS} ping | grep alive | wc -l | head -n1
exit 0
fi
if [ «${METRIC}» = «version» ]; then
${MYSQL} -V | sed -e ‘s/^.*\(ver.*\)$/\1/gI’ | head -n1
exit 0
fi
#
if [ -s «${CACHE_FILE}» ]; then
CACHE_TIME=`stat -c»%Y» «${CACHE_FILE}»`
else
CACHE_TIME=0
fi
DELTA_TIME=$((${NOW_TIME} — ${CACHE_TIME}))
#
if [ ${DELTA_TIME} -lt ${EXEC_TIMEOUT} ]; then
sleep $((${EXEC_TIMEOUT} — ${DELTA_TIME}))
elif [ ${DELTA_TIME} -gt ${CACHE_TTL} ]; then
echo «» >> «${CACHE_FILE}» # !!!
DATACACHE=`${MYSQLADMIN} -u${USER} -p${PASS} extended-status 2>&1`
echo «${DATACACHE}» > «${CACHE_FILE}» # !!!
chmod 640 «${CACHE_FILE}»
fi
#
cat «${CACHE_FILE}» | grep -iw «$METRIC» | cut -d’|’ -f3 | head -n1
#
exit 0

Изменим владельца скрипта и сделаем его исполняемым для владельца и группы, назначив соответствующие права:
root@debian7:~# chown root:zabbix /usr/local/etc/zabbix_agent_scripts/mysql-stats.sh
root@debian7:~# chmod 550 /usr/local/etc/zabbix_agent_scripts/mysql-stats.sh

Далее необходимо создать пользователя в MySQL.
root@debian7:~# mysql -u root -p
mysql> grant usage on *.* to ‘zabbix’@’localhost’ identified by ‘your-password’ 1;
mysql> flush privileges;
mysql> quit;

Следующий шаг будет создание каталога для пользовательских параметров. В принципе вы можете добавлять эти параметры в самом конце конфигурационного файла zabbix-агента, но грамотней будет в этом же конфиге определить внешний путь для дополнительных параметров, что я и сделал. Создаем каталог и сразу назначаем ему права и меняем владельца:
root@debian7:~# mkdir -m 750 /usr/local/etc/zabbix_agent_configs
root@debian7:~# chown root:zabbix /usr/local/etc/zabbix_agent_configs
Далее открываем конфигурационный файл zabbix-агента, ищем параметр «Include» (необходимо его раскомментировать), его значением будет определенный выше путь для дополнительных конфигурационных файлов.
root@debian7:~# nano /usr/local/etc/zabbix_agentd.conf
Include=/usr/local/etc/zabbix_agent_configs/

Создаем файл с дополнительными пользовательскими параметрами, выставляем ему необходимые права и меняем владельца:
root@debian7:~# nano /usr/local/etc/zabbix_agent_configs/mysql.conf

UserParameter=mysql-stats[*],/usr/local/etc/zabbix_agent_scripts/mysql-stats.sh «none» «$1» user-name user-pass
Надо отметить, что в файле необходимо прописать в открытом виде имя пользователя и пароль, так что позаботьтесь о безопасности, не назначая дополнительных прав пользователю.

root@debian7:~# chown root:zabbix /usr/local/etc/zabbix_agent_configs/mysql.conf
root@debian7:~# chmod 550 /usr/local/etc/zabbix_agent_configs/mysql.conf

Перезапускаем агента:
root@debian7:~# service zabbix-agent restart

Остается импортировать новый шаблон на zabbix-сервер. Скачать готовый шаблон для мониторинга MySQL можно тут: Шаблон для мониторинга MySQL Stats (agent)

Для надежности проверим как отдаются данные:
root@debian7:~# zabbix_get -s 127.0.0.1 -k mysql-stats[questions]

Вместо «127.0.0.1» вставьте адрес вашего сервера с MySQL.

Настройка завершена. Ниже небольшой пример поступающих данных:

zabbix mysql monitoring 01

Вопрос анализа данных в этой статье не рассматривается, т.к. он упирается в комплексное отслеживания совокупности зависящих друг от друга параметров, которые нельзя рассматривать по-одному.


Мониторинг параметров MySQL в Zabbix

comments powered by HyperComments