Мониторинг репликации MySQL при помощи Zabbix |
[исправить] |
0. Кому как удобно ставим zabbix агента. Создаем директорию /zabix/
1. Создаем пользователя на слейве mysql.
GRANT REPLICATION CLIENT ON *.* TO 'replication'@'localhost' IDENTIFIED BY 'S0mEPass';
2. пишем скрипт slave_status
#!/bin/sh
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:
mysql --defaults-file=/zabix/.my.cnf -Bse "show slave status\\G" | grep $1 | awk '{ print $2 }' | head -n 1
3. Делаем конфиг /zabbix/.my.cnf
[client]
user=replication
host=localhost
password='S0mEPass'
Конфиг нужен затем, чтобы в вывод не попадали такие сообщения:
Warning: Using a password on the command line interface can be insecure.
Yes
4. В конфиг zabbix агента добавляем
UserParameter=mysql-slave[*],/scripts/slave_status "$1"
5. Делаем рестарт zabbix агента
Забираем (http://opennet.ru/soft/zbx_export_templates.xml или https://cloud.mail.ru/public/2feb5f4dee82/zbx_export_templates.xml
) шаблон для zabbix (работает на 2.2), в шаблоне три параметра и два триггера.
Допиливаем под себя, не забываем делать рестарты.
|
|
|
|
Раздел: Корень / Администратору / Система / Просмотр состояния и мониторинг системы |
1, Громозека (?), 10:08, 14/11/2014 [ответить]
| +/– |
show slave status не всегда говорит правду. На личном опыте проверено. Для гарантированного мониторинга стоит использовать дополнительную табличку где автоинкрементом раз в N минут увеличивать поле, и сравнивать его значение с значением на slave серверах.
| |
2, Зевака (?), 11:16, 14/11/2014 [ответить]
| +/– |
Пользователю replication@localhost можно сделать пустой пароль.
| |
3, имя (?), 09:01, 17/11/2014 [ответить]
| +1 +/– |
> grep $1 | awk '{ print $2 }' | head -n 1
awk "/$1/ {print \$2; exit}"
| |
4, McLeod095 (ok), 12:52, 18/11/2014 [ответить]
| +/– |
Костыль на костыле и с велосипедом.
В поставке zabbix-agent поставляется шаблон для мониторинга mysql. В CentOS лежит примерно тут
/usr/share/doc/zabbix20-agent-2.0.11/userparameter_mysql.conf
Создаем .my.cnf в хомяке zabbix и в файл параметров добавляем строки
UserParameter=mysql.master[*], HOME=/var/lib/zabbix mysql -e "show master status\G" | awk '/'$1'/{print $$2}'
UserParameter=mysql.slave[*], HOME=/var/lib/zabbix mysql -e "show slave status\G" | awk '/'$1'/{gsub(/NULL/,"99999",$$2); print $$2}'
И этого достаточно для просмотра show slave status
Ну и можно еще
UserParameter=mysql.replication, HOME=/var/lib/zabbix mysql -BNe "SELECT ABS(TIMESTAMPDIFF(SECOND,replication_date,(SELECT replication_date FROM system_monitor.master_status))) FROM system_monitor.slave_status;"
только создать базу и сделать автоинкремент даты уже скриптами.
| |
|