カスタム監視項目とトリガーの構成
環境構成
| 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でアラートが発生することを確認