Настройка мониторинга репликации MariaDB/MySQL с помощью Zabbix

Тематические термины: ZabbixMariaDBMySQL.

Мониторинг репликации СУБД MySQL или MariaDB сводится к написанию скрипта получения состояния репликации баз, настройки UserParameter в агенте zabbix на сервере баз данных и добавлении триггера на zabbix-сервере. На сервере СУБД должен быть установлен Zabbix Agent. Данная инструкция написана на примере заббикса версии 6, но она подойдет как для более новых версий, так и старых.

Предполагается, что у нас уже настроен сервер Zabbix и установлены агенты на серверы СУБД. Полезные инструкции можно найти в конце данной инструкции.

Получение состояния репликации

Состояние репликации можно получить sql-командой:

> show slave statusG;

В ответ мы получим ряд параметров, из которых нам нужны 2:

  1. Slave_IO_Running — состояние работы получения бинарного лога с сервера Master. Если состояние будет NO, то репликация не работает.
  2. Slave_SQL_Running — статус выполнения команд из лога на сервере Slave. Если состояние будет NO, то репликация не работает.

На данном этапе мы напишем скрипт, с помощью которого мы будем подключаться к базе и вытаскивать данные параметры состояния репликации.

Для начала, подключаемся к командной оболочке SQL:

mysql -uroot -p

Создаем пользователя, от которого мы будем подключаться к базе и смотреть состояние репликации:

> CREATE USER 'replmon'@'localhost' IDENTIFIED BY 'repl_password3';

> GRANT REPLICATION CLIENT, SLAVE MONITOR ON *.* TO 'replmon'@'localhost';

* этими командами мы создаем пользователя replmon с паролем repl_password3. У него будут права на получение статуса репликации для СУБД.

Выходим из командной оболочки mysql:

> quit

На сервере Slave создаем скрипт для получения статуса репликации:

vi /etc/zabbix/zabbix_agentd.d/repl_mon.sh

Или для Zabbix Agent 2:

vi /etc/zabbix/zabbix_agent2.d/repl_mon.sh

* путь до скрипта repl_mon.sh может быть любой. В данном примере мы разместили его в каталог агента заббикс — во-первых, для порядка, во-вторых, не будет проблем с SELinux (если он используется).

Если у нас кластер настроен по принципу master — master, то данный скрипт нужно создать на обоих серверах MySQL/MariaDB.

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

#!/bin/bash
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

myuser='replmon'
mypass='repl_password3'

Slave_IO=`mysql -u${myuser} -p${mypass} —vertical -e "SHOW SLAVE STATUS" | grep "Slave_IO_Running:" | cut -d":" -f2 | tr -d " " 2>&1`
Slave_SQL=`mysql -u${myuser} -p${mypass} —vertical -e "SHOW SLAVE STATUS" | grep "Slave_SQL_Running:" | cut -d":" -f2 | tr -d " " 2>&1`

if [ "$Slave_IO" != "Yes" ]
then
    echo "0"
    exit 0
fi

if [ "$Slave_SQL" != "Yes" ]
then
    echo "0"
    exit 0
fi

echo "1"
exit 0

* в данном скрипте мы подключаемся к базе и получаем статус репликации, после — мы парсим значения двух параметров (Slave_IO_Running и Slave_SQL_Running). Если значение этих параметров не равно Yes, скрипт вернет 0, иначе — 1. В Zabbix мы будем проверять значение и реагировать на значение 0.

Устанавливаем права на скрипт — разрешаем запуск на выполнение и задаем владельца zabbix:

chmod 770 /etc/zabbix/zabbix_agentd.d/repl_mon.sh

chown zabbix:zabbix /etc/zabbix/zabbix_agentd.d/repl_mon.sh

Для Zabbix Agent 2:

chmod 770 /etc/zabbix/zabbix_agent2.d/repl_mon.sh

chown zabbix:zabbix /etc/zabbix/zabbix_agent2.d/repl_mon.sh

Можно проверить работу скрипта, запустив его:

/etc/zabbix/zabbix_agentd.d/repl_mon.sh

/etc/zabbix/zabbix_agent2.d/repl_mon.sh

Настройка UserParameter агента Zabbix

На slave сервере открываем настройки zabbix агента:

vi /etc/zabbix/zabbix_agentd.conf

Или:

vi /etc/zabbix/zabbix_agent2.conf

Добавляем строку:

UserParameter=mysql_repl_mon[*],/etc/zabbix/zabbix_agentd.d/repl_mon.sh

UserParameter=mysql_repl_mon[*],/etc/zabbix/zabbix_agent2.d/repl_mon.sh

* в данном случае, мы создаем в zabbix агенте пользовательский параметр с именем mysql_repl_mon — при его вызове будет запускаться скрипт /etc/zabbix/zabbix_agentd.d/repl_mon.sh, который мы ранее создали.

Перезапускаем агента:

systemctl restart zabbix-agent

systemctl restart zabbix-agent2

Проверяем работу параметра.

Для этого с сервера zabbix выполняем команду:

zabbix_get -s 192.168.0.15 -k mysql_repl_mon

Если агент доступен по нестандартному порту (10050), то указываем его опцией p:

zabbix_get -s 192.168.0.15 -p 10555 -k mysql_repl_mon

* данной командой мы обращаемся к серверу 192.168.0.15 (это должен быть адрес сервера, на котором мы настроили агента и скрипт); mysql_repl_mon — параметр, который мы вызывает.
* если после запуска команды система вернет ошибку Can't connect to local MySQL server through socket, необходимо проверить, не запущен ли SELinux — если запущен, необходимо его отключить или настроить.

… команда должна вернуть либо 0 (если есть проблемы с репликацией), либо 1.

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

На сервере Zabbix мы делаем два действия:

  • Создаем шаблон для мониторинга репликации.
  • Привязываем к хосту шаблон.

Создание шаблона

Скачиваем шаблон mysql_repl_template.xml. Заходим на веб-портал управления сервером мониторинга с правами администратора. Переходим в раздел НастройкаШаблоны (или Сбор данныхШаблоны):

Сверху справа кликаем по Импорт:

В открывшемся окне выбираем скачанный шаблон и нажимаем по Импорт:

В шаблонах должен появиться новый с названием «Template MySQL Replication Slave».

Настройка хоста

Переходим в раздел НастройкаУзлы сети:

Находим среди узлов наш сервер MySQL, который будем мониторить и переходим в его настройки. 

На вкладке Шаблоны выбираем наш шаблон, который мы загрузили, добавляем его и обновляем настройки хоста:

Готово. При возникновении проблем репликации мы увидим предупреждение «MySQL: Replication Error».

Дополнительные сведения

Мониторинг репликации master — master

При использовании двухсторонней репликации, мы должны мониторить slave на обоих серверах. Для этого настраиваем по шагам мониторинг для каждого из серверов.

innotop

Мониторинг MySQL/MariaDB также можно выполнить с помощью утилиты innotop. Она может показать состояние репликации, общее время работы сервера баз данных, количество подключений и так далее.

Пользоваться утилитой просто. Для начала ее нужно установить.

а) Если используем систему Red Hat / CentOS / Fedora:

yum install innotop

б) Если используем систему Debian / Ubuntu:

apt-get install mysql-client

Пример подключения к базе:

innotop -uroot -ppassword -h 192.168.0.15

* в данном примере мы подключимся к серверу 192.168.0.15.

Читайте также

Другие инструкции по мониторингу Zabbix:

1. Как настроить кластер MariaDB / MySQL.

2. Как восстановить репликацию MySQL или MariaDB.

3. Установка и начальная настройка сервера Zabbix на CentOS.

4. Установка и начальная настройка сервера мониторинга Zabbix 6 / 7 на Ubuntu / Debian.

5. Установка Zabbix agent на Windows.

6. Установка и настройка Zabbix-агента на Linux RPM (Rocky, CentOS).

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *