ZabbixによるMySQLレプリケーションの監視設定

カスタム監視項目とトリガーの構成

環境構成

OS 構成 ホスト名 IPアドレス
CentOS 7.9 2CPU 4GB zbx 192.168.93.101
CentOS 7.9 2CPU 4GB server01 192.168.93.102
CentOS 7.9 2CPU 4GB server02 192.168.93.103

初期設定

systemctl stop firewalld && systemctl disable firewalld
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

MySQLレプリケーションの構築

マスター(192.168.93.102)の設定

yum -y install mariadb-server mysql
/etc/my.cnfの編集:
[mysqld]
server-id=11
log-bin=master-bin
systemctl start mariadb && systemctl enable mariadb
mysqladmin -u root password 'pwd123'
mysql -u root -ppwd123 -e "GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' IDENTIFIED BY 'pwd123';"
mysql -u root -ppwd123 -e "SHOW MASTER STATUS;"

スレーブ(192.168.93.103)の設定

/etc/my.cnfの編集:
[mysqld]
server-id=22
systemctl start mariadb && systemctl enable mariadb
mysqladmin -u root password 'pwd123'
mysql -u root -ppwd123 -e "CHANGE MASTER TO
MASTER_HOST='192.168.93.102',
MASTER_USER='root',
MASTER_PASSWORD='pwd123',
MASTER_LOG_FILE='master-bin.000003',
MASTER_LOG_POS=523;"
mysql -u root -ppwd123 -e "START SLAVE;"
mysql -u root -ppwd123 -e "SHOW SLAVE STATUS\G"

Zabbix Agentのカスタムキー設定

/etc/zabbix/zabbix_agentd.confに追記:
UnsafeUserParameters=1
UserParameter=mysql.slave.status,/etc/zabbix/scripts/mysql_slave_check.sh

監視スクリプトの作成

mkdir -p /etc/zabbix/scripts
/etc/zabbix/scripts/mysql_slave_check.shを作成:
#!/bin/bash
mysql -u root -ppwd123 -e 'SHOW SLAVE STATUS\G' | \
grep -E 'Slave_IO_Running|Slave_SQL_Running' | \
awk '{print $2}' | \
grep -c 'Yes'
chmod +x /etc/zabbix/scripts/mysql_slave_check.sh
systemctl restart zabbix-agent

Zabbixサーバーからの取得テスト

zabbix_get -s 192.168.93.103 -k mysql.slave.status

Zabbixでの監視テンプレート作成

  • 「構成」→「テンプレート」で新規テンプレートを作成
  • 監視項目にmysql.slave.statusを追加
  • スレーブサーバーにテンプレートを関連付け
  • 値が2以外になったときにアラートを発生させるトリガーを作成

動作検証

mysql -u root -ppwd123 -e 'STOP SLAVE;'

Zabbixでアラートが発生することを確認

タグ: zabbix MySQL Replication monitoring linux

7月14日 17:17 投稿