Шаблон MySQL репликация

MySql, Microsoft SQL, MSSQL
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 496
Стаж: 3 года 5 месяцев
Откуда: Вологодская область
Поблагодарили: 20 раз
Контактная информация:

Шаблон MySQL репликация

Сообщение Артём Мамзиков »

Оригинал serveradmin Мониторинг MySQL репликации в Zabbix

Проверка в mysql master-slave, master-master.

СКАЧАТЬ
MySQL replication.zip
MySQL replication.zip
(2.08 КБ) 3 скачивания
Проверка производится следующей командой
MariaDB [(none)]> show slave status\G;

Выбираются 3 критерия из вывода:

Seconds_Behind_Master - то, насколько слейв сервер отстает от мастера в репликации. (идеально значение 0)
Slave_IO_Running - индикатор работы демона по сбору бинарного лога с мастера и записи его в локальный relay лог. (должно быть YES)
Slave_SQL_Running - индикатор выполнения команд из локального relay лога. (должно быть YES)

mysql-slave.sh

Код: Выделить всё

#!/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
#
Копируем скрипт на хост, в паку с заббикс агентом, выдаем права на выполнение и проверяем
/etc/zabbix/scripts/mysql-slave.sh Master_Host Логин Пароль

Если все три критерия удовлетворительны скрипт передает агенту 1, если нет то 0

Добавляем пользовательский параметр в конфигурацию заббикс сагента
nano /etc/zabbix/zabbix_agentd.conf
UserParameter=mysql-slave[*],/etc/zabbix/scripts/mysql-slave.sh "$1" Логин Пароль[/b]

И перезапускаем заббикс агента.
Делаем импорт шаблона, подключаем к узлу проверяем работу.

Шаблон MySQL replication
Шаблон MySQL replication
Группы элементов данных 1
MySQL-replication


Элементы данных 3

MySQL: Секунды Позади Мастера Триггеры 1 mysql-slave[Seconds_Behind_Master] 60 7d 365d Zabbix агент MySQL-replication Активировано

MySQL: Ведомый IO работает Триггеры 1 mysql-slave[Slave_IO_Running] 60 7d 365d Zabbix агент MySQL-replication Активировано

MySQL: Ведомый SQL работает Триггеры 1 mysql-slave[Slave_SQL_Running] 60 7d 365d Zabbix агент MySQL-replication Активировано


Триггеры 2

Средняя MySQL: Репликация замедлилась {MySQL_Slave:mysql-slave[Seconds_Behind_Master].min(#2)}>0 Активировано

Чрезвычайная Аварийная MySQL: Репликация не запущена {MySQL_Slave:mysql-slave[Slave_IO_Running].last(0)}=0 or {MySQL_Slave:mysql-slave[Slave_SQL_Running].last(0)}=0 Активировано
количество слов: 305
Партнёрская ссылка на Хостинг Beget https://beget.com/p937243

Вернуться в «Базы Данных/Databases»