zabbix3.0.4使用percona-monitoring-plugins插件來監控mysql5.6的詳細實現過程php
由於Zabbix自帶的MySQL監控沒有提供能夠直接使用的Key,因此通常不採用,業界的同窗們都使用Percona Monitoring Plugins 監控 MySQL的方式node
Percona 爲 MySQL 數據庫服務器進行了改進,在功能和性能上較 MySQL 有着很顯著的提高。該版本提高了在高負載狀況下的 InnoDB 的性能、爲 DBA 提供一些很是有用的性能診斷工具;另外有更多的參數和命令來控制服務器行爲。mysql
對線上的MySQL服務器實現監控,percona監控插件是php開發,所以要在agent安裝php環境web
1、zabbix-agent端操做(即被監控的Mysql服務器)
1.安裝php環境和插件sql
①安裝php環境
percona監控插件是php開發,所以要在agent安裝php環境shell
# yum install zabbix-agent php php-mysql [root@centossz008 ~]# rpm -qa zabbix-agent php php-mysql php-5.3.3-49.el6.x86_64 zabbix-agent-1.8.22-1.el6.x86_64 php-mysql-5.3.3-49.el6.x86_64
②安裝percona插件數據庫
[root@centossz008 ~]# rpm -ivh https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.7/binary/redhat/6/x86_64/percona-zabbix-templates-1.1.7-2.noarch.rpm
③配置參數vim
# mkdir -p /etc/zabbix/zabbix_agentd.d # cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/userparameter_percona_mysql.conf
將模板include到配置文件中
# vim /etc/zabbix/zabbix_agentd.conf
添加以下:centos
Include=/etc/zabbix/zabbix_agentd.d/
重啓生效安全
service zabbix-agent restart
2.修改監控相關的腳本:
①編輯監控的php配置文件(經過該配置文件獲取Mysql的帳號密碼)
單獨添加一個較低權限的用戶zabbix專門用於對數據庫進行監控
mysql> GRANT PROCESS,SUPER,REPLICATION CLIENT ON *.* TO zabbix@'localhost' IDENTIFIED BY 'zabbixpassword'; mysql> flush privileges;
# vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf <?php $mysql_user = 'zabbix'; $mysql_pass = 'zabbixpassword';
②編輯ss_get_mysql_stats.php文件,修改具體的用戶名、密碼、socket、Mysql端口等參數
# vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php $mysql_user = 'zabbix'; $mysql_pass = 'zabbixpassword'; $mysql_port = 3306; $mysql_socket = "/tmp/mysql.sock";
③在zabbix-agent客戶端進行測試(必定要能獲取數據,不然服務端會沒法獲取監控數據)
# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh nj 276671 # /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gw 1
2、zabbix-server web端操做
1.導入監控模板
報錯:
nvalid tag "/zabbix_export/date": "YYYY-MM-DDThh:mm:ssZ" is expected.
將zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml導入zabbix2.4中再導出。以後將新的導出xml導入到3.0中問題解決。
2.修改日誌權限
chown -R zabbix.zabbix /tmp/localhost-mysql_cacti_stats.txt
3.添加客戶端模板
4.經過服務端驗證是否生效,並查看圖像
客戶端/var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf 文件能夠看到支持的監控項
[root@node2 scripts]# zabbix_get -s 192.168.3.12 -k MySQL.file-reads 171 [root@node2 scripts]# zabbix_get -s 192.168.3.12 -k MySQL.os-waits 2
3、監控mysql主從
須要在slave的節點上配置
修改slave上的監控腳本,添加帳號、密碼、socket等參數
# vim /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh RES=`HOME=~zabbix mysql -h192.168.3.13 -uzabbix -pzabbixpassword -S /tmp/mysql.sock -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`
監控主從同步
監控主從同步的主要項目:
# Slave_IO_Running和Slave_SQL_Running是否爲yes即這兩個線程是否在工做
UserParameter=MySQL.running-slave,/usr/local/zabbix_agents_3.2.0/scripts/get_mysql_stats_wrapper.sh running-slave
# 主從延遲多少秒Seconds_Behind_Master
UserParameter=MySQL.slave-lag,/usr/local/zabbix_agents_3.2.0/scripts/get_mysql_stats_wrapper.sh jj
要注意php的路徑
CMD="/usr/local/php/bin/php -q $DIR/ss_get_mysql_stats.php --host $HOST --items gg"
默認是這樣 RES=`HOME=~/usr/local/mysql/bin/mysql -S /tmp/mysql.sock -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','` 監控slave的時候,客戶端在shell中是能夠獲取支持參數的RES= yes,yes的 執行的時候發出警告 [root@Europe_DB1:~]# /usr/local/zabbix_agents_3.2.0/scripts/get_mysql_stats_wrapper.sh running-slave mysql: [Warning] Using a password on the command line interface can be insecure. 1 zabbix_server服務端在監控的時候就獲取警告了 [root@aliyun-american-guigu-zabbix:~]# zabbix_get -s 1.1.1.1 -p 10050 -k 'MySQL.running-slave' mysql: [Warning] Using a password on the command line interface can be insecure. 1 會報錯: 不支持的key 解決辦法: RES=`HOME=/usr/local/zabbix_agents_3.2.0/scripts /usr/local/mysql/bin/mysql -S /tmp/mysql.sock -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','` 語句中接入HOME目錄,而且在該目錄下建立.my.cnf文件,將帳戶密碼寫入這個文件,mysql在鏈接數據庫的時候就會去讀取這個文件,就繞過了不安全的提示 # cat /usr/local/zabbix_agents_3.2.0/scripts/.my.cnf [client] user=zabbix password=zabbix
測試報警是否生效
mysql> stop slave;
Query OK, 0 rows affected (0.13 sec)