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

В веб-интерфейсе в настройках узла необходимо добавить шаблон

На сервере слэйва создать юзера для проверки статуса реплики в MySQL:

CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'password';
GRANT REPLICATION CLIENT ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'password';

Теперь нужен скрипт проверки, взял с интернета готовый:

#!/bin/bash
export LC_ALL=""
export LANG="en_US.UTF-8"
##### OPTIONS VERIFICATION #####
if [[ -z "$1" ]]; then
  exit 1
fi
##### PARAMETERS #####
METRIC="$1"
USER="${2:-user}"
PASS="${3:-pass}"
#
MYSQL="/usr/bin/mysql"
CACHE_TTL="55"
CACHE_FILE="/tmp/zabbix.mysql-slave.cache"
EXEC_TIMEOUT="1"
NOW_TIME=`date '+%s'`
##### RUN #####
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=`${MYSQL} -u${USER} -p${PASS} --vertical -e "SHOW SLAVE STATUS" 2>&1`
  echo "${DATACACHE}" > "${CACHE_FILE}" # !!!
  chmod 640 "${CACHE_FILE}"
fi
#
RESULT=`cat "${CACHE_FILE}" | grep -i "${METRIC}" | awk -F": " '{print $2}' | head -n1`
#
if echo "${RESULT}" | grep -iwq "yes"; then
  echo "1"
elif echo "${RESULT}" | grep -iq -E "^(no|none|connecting|)$"; then
  echo "0"
else
  echo "${RESULT}"
fi
#
exit 0

Его положить по удобному пути, я закинул в /etc/zabbix/scripts/mysql_slave.sh

Не забыть про права и владельца:

chown zabbix:zabbix /etc/zabbix/scripts/mysql_slave.sh
chmod 550 /etc/zabbix/scripts/mysql-slave.sh

Проверить ручками работу скрипта можно, дав ему параметры:

/etc/zabbix/scripts/mysql-slave.sh Master_Host zabbix password

На выходе имеем hostname или IP Master-сервера, если всё успешно.

После ручной проверки из-под root удалить /tmp/zabbix.mysql-slave.cache, т.к. в дальнейшем скрипт не сможет создать там свой файл.

Осталось поправить конфиг агента, добавляем в /etc/zabbix/zabbix_agentd.conf :

UserParameter=mysql-slave[*],/etc/zabbix/scripts/mysql_slave.sh "$1" zabbix password

И сделать рестарт агента. В подключенном шаблоне триггеры должны получить значения.

Для траблшута удобно смотреть, что получает Zabbix в веб-интерфейсе в разделе Узлы сети -> Узел -> Триггеры -> Template_MySQL_Slave, наведя мышкой на красные крестики (показаны на скриншоте ниже).

P.S. Заметка не претендует на уникальность и полноценность, просто краткая шпаргалка-напоминалка.

Ваш комментарий будет первым

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

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