zabbix-監控mysql
阿新 • • 發佈:2020-07-14
監控mysql
主要監控myql的連線數、主從同步狀態、同步延遲等。
實現mysql主從同步
從節點配置: 1、apt install mysql-server 2、vim /etc/mysql/mysql.conf.d/mysqld.cnf [mysqld] bind-address = 0.0.0.0 relay-log = /var/lib/mysql/relay-log server-id = 204 3、systemctl restart mysql 主節點配置: 1、vim /etc/mysql/mysql.conf.d/mysqld.cnf [mysqld] bind-address = 0.0.0.0 server-id = 203 log-bin = /var/lib/mysql/master-log 2、systemctl restart mysql
mysql-master建立授權同步賬號
mysql> grant replication slave on *.* to 'mysql-slave'@'192.168.3.%' identified by 'linux';
將主節點的資料備份到一個sql檔案中
1、mysqldump --all-databases --single_transaction --flush-logs --master-data=2 --lock-tables > /opt/backup.sql
2、scp /opt/backup.sql 192.168.3.204:/opt
從節點匯入sql語句
1、mysql < /opt/backup.sql 2、head -n30 /opt/backup.sql #檢視二進位制日誌位置 CHANGE MASTER TO MASTER_LOG_FILE='master-log.000002', MASTER_LOG_POS=154; #則表示master-log.000002之前的已經匯入到當前的mysql中,從MASTER_LOG_POS=154之後的資料開始做主從同步 3、mysql> CHANGE MASTER TO MASTER_HOST='192.168.3.203',MASTER_USER='mysql-slave',MASTER_PASSWORD='linux',MASTER_LOG_FILE='master-log.000002',MASTER_LOG_POS=154; #指定主從同步資訊,指定同步賬號,從指定的位置開啟同步 4、mysql> start slave; #開啟同步執行緒 5、mysql> show slave status\G;
zabbix通過percona外掛監控mysql資料
percona外掛會使用php獲取mysql上的資料,所以需要安裝php連線mysql的軟體包; 安裝完percona外掛,裡面會有一個自定義監控項的配置檔案以及一個shell和php指令碼,在通過監控項查詢資料時會呼叫shell指令碼,當在300s內還要查詢這些監控項,則shell指令碼會通過判斷/tmp/下的指定檔案的建立檔案時的時間戳與當前時間做對比(第一次查詢監控項的資料時,會生成此檔案),如果小於300s,則不進行查詢,如果大於300s,才進行查詢; shell指令碼查詢監控項的資料時,會通過呼叫php指令碼獲取資料庫中的資料; 目前Percona與ubuntu自帶的php 7.2不相容,需要安裝php 5.6版本;
<https://www.percona.com/doc/percona-monitoring-plugins/LATEST/zabbix/index.html > #percona外掛幫助文件
https://www.percona.com/downloads/percona-monitoring-plugins/LATEST/ #外掛下載地址
安裝percona外掛
1、dpkg -i percona-zabbix-templates_1.1.8-1.artful_all.deb
2、cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.conf.d/
#將percona官方的自定義監控項配置檔案拷貝到zabbix agent的目錄下
3、
安裝php
1、add-apt-repository ppa:ondrej/php #安裝php源
2、apt update
3、apt install -y php5.6 php5.6-mysql
4、vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf
<?php
$mysql_user ='root';
$mysql_pass ='';
#建立連線mysql的認證檔案,php連線mysql需要有賬號密碼連線,並且該賬號需要有許可權訪問資料庫中的資料
5、/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
#通過指令碼檢視是否能夠獲取到資料庫中的資料
mysql-master伺服器上agent的配置
1、vim /etc/zabbix/zabbix_agentd.conf #匯入自定義監控項的配置檔案
Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf
User=root
AllowRoot=1
2、vim /lib/lib/systemd/system/zabbix-agent.service
#指定agent的service檔案中啟動agent的使用者及組為root
3、systemctl daemon-reload
2、systemctl restart zabbix-agent
注:
修改agent的啟動使用者為root是因為,agent需要執行指令碼去連線資料庫,但是有的許可權不支援普通使用者執行,所以修改為root啟動agent,去執行指令碼
縮小資料獲取間隔
1、vim /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh
if [ `expr $TIMENOW - $TIMEFLM` -gt 60 ]; then #修改指令碼資料獲取間隔
2、zabbix web上也需要把模板的監控項資料獲取間隔修改為60s
server端測試
/apps/zabbix-server/bin/zabbix_get -s 192.168.3.203 -p 10050 -k MySQL.Open-files
zabbix web上也需要建立模板,把模板關聯到主機;percona自帶的模板不相容zabbix 3、4,所以無法使用
mysql監控指令碼
此指令碼配置在mysql從節點上,主要用於檢視從節點的主從同步延遲,以及主從同步的執行緒是否開啟
1、vim /etc/zabbix/zabbix_agentd.d/mysql_monitor.sh
#!/bin/bash
Seconds_Behind_Master() {
NUM=$(mysql -uroot -e "show slave status\G;" | grep Seconds_Behind_Master | awk '{print $NF}')
echo "$NUM"
}
master_slave_check() {
NUM1=$(mysql -uroot -e "show slave status\G;" | grep -w Slave_IO_Running | awk '{print $NF}')
NUM2=$(mysql -uroot -e "show slave status\G;" | grep -w Slave_SQL_Running | awk '{print $NF}')
if [ $NUM1 == 'Yes' ] && [ $NUM2 == 'Yes' ];then
echo 50
else
echo 100
fi
}
main() {
case $1 in
Seconds_Behind_Master)
Seconds_Behind_Master
;;
master_slave_check)
master_slave_check
;;
esac
}
main $1
2、chmod a+x /etc/zabbix/zabbix_agentd.d/mysql_monitor.sh
agent配置
1、vim /etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix/zabbix_agentd.d/*.conf
AllowRoot=1 #zabbix使用者是無法使用root賬號登入資料庫的
User=root
2、vim /etc/zabbix/zabbix_agentd.d/all.conf
UserParameter=mysql_monitor[*],/etc/zabbix/zabbix_agentd.d/mysql_monitor.sh "$1"
#所有的自定義監控項都放到一個單獨的配置檔案中,方便以後批量複製
3、vim /lib/systemd/system/zabbix-agent.service
User=root
Group=root
4、systemctl daemon-reload
5、systemctl restart zabbix-agent
server端測試
/apps/zabbix-server/bin/zabbix_get -s 192.168.3.204 -p 10050 -k mysql_monitor["Seconds_Behind_Master"]
0
小知識
stat -c %y FILENAME #檢視此檔案建立時的unix時間戳