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

ZabbixMySQL

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

dev-db/mysql-5.1.67
net-analyzer/zabbix-2.2.2-r1

Статья рассказывает о том как настроить мониторинг многочисленных параметров MySQL сервера с помощью Zabbix.

Как ни странно в сети оказалось весьма мало действенных и эффективных рецептов по мониторингу производительности MySQL в заббиксе, поэтому я предлагаю свой вариант. Он отличается большой гибкостью и эффективностью, т.к. он не использует ни perl ни php скриптов, а только bash и в нем предусмотрен кэш.

Установка скрипта

Создание папки для скриптов:

mkdir /etc/zabbix/scripts/
chown root:zabbix -R /etc/zabbix/scripts/
chmod 750 /etc/zabbix/scripts/

Создадим сам скрипт:

Листинг

Кеш необходим ввиду особенности работы zabbix когда на каждый элемент собираемых данных выполняется по отдельному запросу. Т.е. если вы мониторинге 20 параметров MySQL, то за один период обновления будет инициировано 20 обращений к БД.
Время действия кэша в секундах должно устанавливается чуть меньше чем период опроса элементов.

Установка прав

chown root:zabbix /etc/zabbix/scripts/mysql-stats.sh
chmod 550 /etc/zabbix/scripts/mysql-stats.sh

Проверка

sudo -u zabbix /etc/zabbix/scripts/mysql-stats.sh none questions USER PASSWORD

Вы должны получить статистические данные, если этого не произошло, то конфигурация выполнена не правильно.

Если для проверки скрипт запускался с правами root, то он будет владельцем кэш файла - удалите кэш файл после проверок.

Чтобы посмотреть список доступных метрик выполните

mysqladmin -uroot -p extended-status

Настройка MySQL

Создать пользователя zabbix@localhost в MySQL.

mysql [(NONE)]> SHOW grants FOR zabbix@localhost;
+---------------------------------------------------------------------------------------------------------------+
| Grants FOR zabbix@localhost                                                                                   |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY PASSWORD '*F5C5B411175D3849C095FBCBD20C8F084E7AC49E' |
+---------------------------------------------------------------------------------------------------------------+

Настройка Zabbix сервера

Вызов скрипта через zabbix-agent

Настройка

/etc/zabbix/zabbix_agentd.conf

...

UserParameter=mysql-stats[*],/etc/zabbix/scripts/mysql-stats.sh "none" "$1" [USER] [PASSWORD]

Для работы скрипта нужно передать имя пользователя и пароль для подключения к MySQL. Их можно указать в конфиге zabbix-agent или в самом скрипте.

Перезапустить

/etc/init.d/zabbix-agentd restart

Проверка

zabbix_get -s HOST -k 'mysql-stats[questions]'

Для контролируемых данных нужно создать соответствующее элементы с типом «Zabbix агент» и ключом вида:

mysql-stats[key]

где key - контролируемая метрика Пример конфигурации элемента

Готовый Шаблон для мониторинга MySQL Stats (agent) с уже настроенными элементами и графиками.




Результат

Обсуждение

Сергей Усов, 2010/11/02 14:46

Спасибо!

7x7, 2011/02/11 14:49, 2011/06/06 16:41

у меня заработало после исправления

TIMECACHE=`stat -c"%Z" "$CACHE"`

на

TIMECACHE=`stat -f "%c" "$CACHE"`
kyourselfer, 2016/01/12 21:50

Выражаю благодарность автору статьи и поситителю 7x7 за коректную правку поправку автор P.S. FreeBSD 10.1-RELEASE+autossh ⇒ Zabbix 2.2.7 (Debian 8.0 Jessie)

Дмитрий, 2019/02/06 04:28

Присоединяюсь к kyourselfer . FreeBSD 10.4-⇒ Zabbix 3.2 (FreeBSD 10.4)

Sergey Budnikov, 2011/05/04 11:01

может быть проблема с правами на файлик /tmp/mysqlstat.cache, если вы в первый раз запустили скрип не забикс агентом, будьте внимательней. А так все работает, спасибо!

Александр, 2011/08/03 10:33

Спасибо! Установка прошла без проблем.

nik, 2011/11/23 20:47

а как можно приспособить данный скриgт для получения данных с других серверов mysql(под win)? или может есть что иное для мониторига множества баз

lexa, 2011/11/24 11:57

Можно, если слегка модернизировать:

  1. ввести еще один передаваемый параметр host
  2. к имени CACHEFILE добавить имя хоста, что бы различать файлы
  3. в шаблоне заббикс ввести макросы, что бы один шаблон использовать для нескольких хостов
mysql[connections,${MYSQL_USER},${MYSQL_PASS},${MYSQL_HOST}]
DRek, 2012/01/09 20:46

Не подскажете в чем может быть проблема? не снимается статистика через скрипт,в логах пишет:

sh: /etc/zabbix/scripts/mysql_stat.sh: Permission denied

при этом например

/etc/zabbix/scripts/mysql_stat.sh qcache_hits username pass

из консоли срабатывает без проблем

lexa, 2012/01/10 10:05, 2012/01/10 10:06
Permission denied

Проверяйте права. Доступность на выполнение скрипта пользователю zabbix.

Алексей, 2012/02/15 18:02

Прописал логин и пароль на агенте.

UserParameter=mysql[*],/etc/zabbix/externalscripts/mysql_stat.sh $1 root my_password
Запускаю с сервера:
zabbix_get -s server_ip  -k "mysql[qcache_hits]"
ZBX_NOTSUPPORTED
В логе агента появляется
/etc/zabbix/externalscripts/mysql_stat.sh: not found
хотя он именно там и есть. Подскажите куда копать.

Aleksey, 2012/02/15 19:01

Работает из консоли?

sudo -u zabbix /etc/zabbix/externalscripts/mysql_stat.sh qcache_hits root my_password
Роман, 2012/05/31 17:55

Наткнулся на те-же грабли ( Алексей у Вас есть решение ?

Роман, 2012/05/31 18:27

Отвечу на свои грабли) в логах строчка "mysql_stat.sh: not found" появлялась потому что не установил bash.

Konstantin, 2012/05/14 11:48

Супер. Спасибо

Кадышев Денис, 2012/11/27 09:09, 2013/12/15 20:31

у команды stat на Linux и FreeBSD синтаксис разный! в Linux используется GNU stat

Владислав, 2014/07/02 08:13

Чтобы графики из приложенного шаблона заработали, нужно

Вместо UserParameter=mysql-stats[*],/etc/zabbix/scripts/mysql-stats.sh "none" "$1" [USER] [PASSWORD] и zabbix_get -s HOST -k 'mysql-stats[questions]'

Указать UserParameter=mysql[*],/etc/zabbix/scripts/mysql-stats.sh "none" "$1" [USER] [PASSWORD] и тогда проверка по zabbix_get -s HOST -k 'mysql[questions]'

В шаблоне все item через mysql[*] прописаны

Aleksey, 2014/07/02 11:30

Это был шаблон для 2.0, для 2.2 надо было брать, пожалуй надо было выделить это красным

Максис, 2014/07/18 10:48, 2014/07/18 11:05

Все сделал по статье вроде, но ни один параметр не работает. В логах zabbix-сервера:

error reason for "mysql:mysql-stats[aborted_connects]" changed: "Not supported by Zabbix Agent"
error reason for "mysql:mysql-stats[alive]" changed: "Not supported by Zabbix Agent"
error reason for "mysql:mysql-stats[bytes_received]" changed: "Not supported by Zabbix Agent"

и т.д.

В чем может быть дело? Куда копать?

Aleksey, 2014/07/18 11:08, 2014/07/18 11:08

проверку скрипта из консоли под пользователем zabbix делали? содержимое кеш-файла смотрели?

Максим, 2014/07/18 11:52, 2014/07/18 12:51

Команда

sudo -u zabbix /etc/zabbix/scripts/mysql-stats.sh none questions USER PASSWORD 

работает, кеш заполняется метриками, а команда

zabbix_get -s HOST -k 'mysql-stats[questions]' выдает ZBX_NOTSUPPORTED

bash установлен. После ряда перезапусков ошиьбки из логов чудом ушли (по могу понять из-за чего) Агент не выдает результатов

Aleksey, 2014/07/18 12:52, 2014/07/18 13:03

а так

zabbix_agentd -t "mysql-stats[questions]" -c /etc/zabbix/zabbix_agentd.conf

права на кеш-файл

конфиг агента (UserParameter и Server)

Lev, 2017/11/03 00:06

Ребят кто шарит подскажите! Этот шаблон, Template App MySQL, он мониторит полностью всю субд mysql? А могу ли я как-то настроить мониторинг одной отдельной базы???

Tudor, 2018/02/21 17:52

to run this script you don't need any mysql privileges "SHOW STATUS provides server status information (see Section 5.1.7, “Server Status Variables”). This statement does not require any privilege. It requires only the ability to connect to the server." So, just create a user to monitor: Create user ‘zabbix’@’localhost’ identified by ‘password’; Thanks a lot for your article. Is the best under the whole Gogole results

Ваш комментарий. Вики-синтаксис разрешён:
172 +13 = 
 
howto/zabbix/advanced_mysql_monitoring.txt · Последнее изменение: 2022/08/31 14:53 — 127.0.0.1
Gentoo Linux Gentoo Linux Driven by DokuWiki