前面已經介紹了分佈式監控系統Zabbix-3.0.3-完整安裝記錄(2)-添加mysql監控,可是沒有提供能夠直接使用的Key,太過簡陋,監控效果不佳。要想更加仔細的監控Mysql,業內同窗們都會選擇採用Percona Monitoring Plugins監控MySQL。Percona有比較詳細的監控Mysql的模版以及腳本,它提高了在高負載狀況下的InnoDB的性能、爲運維人員提供一些很是有用的性能診斷工具;另外它有更多的參數和命令來控制服務器行爲。廢話很少說,下面記錄下使用Percona Monitoring Plugins監控MySQL的操做過程:php
被監控主機的zabbix的部署路徑是/data/zabbix。 [root@open ~]# ll /data/zabbix/ total 28 drwxr-xr-x 2 zabbix zabbix 4096 Jul 19 10:24 bin drwxr-xr-x 3 zabbix zabbix 4096 Sep 5 14:12 etc drwxr-xr-x 2 zabbix zabbix 4096 Jul 19 10:24 lib drwxr-xr-x 2 zabbix zabbix 4096 Jul 19 10:24 logs drwxr-xr-x 2 zabbix zabbix 4096 Jul 19 10:24 monitor_scripts //這個是存放監控腳本的目錄 drwxr-xr-x 3 zabbix zabbix 4096 Jul 19 10:24 sbin drwxr-xr-x 4 zabbix zabbix 4096 Jul 19 10:24 share 被監控主機的mysql路徑是/usr/local/mysql [root@open ~]# ps -ef|grep mysql root 9170 8258 0 11:23 pts/0 00:00:00 grep mysql root 19000 1 0 Sep01 ? 00:00:00 /bin/sh /usr/local/mysql//bin/mysqld_safe --datadir=/data/mysql/data --pid-file=/data/mysql/data/mysql.pid mysql 19776 19000 0 Sep01 ? 00:07:26 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql/ --datadir=/data/mysql/data --plugin-dir=/usr/local/mysql//lib/plugin --user=mysql --log-error=/data/mysql/data/mysql-error.log --pid-file=/data/mysql/data/mysql.pid --socket=/usr/local/mysql/var/mysql.sock --port=3306 以下是在zabbix被監控機上的操做: 1)須要安裝php腳本運行環境 percona監控zabbix的腳本是使用PHP寫的,因此須要準備好php運行環境,這裏直接選擇用yum安裝就能夠知足要求了: [root@open ~]# yum install -y php php-mysql 確保被監控主機沒有安裝percona相關軟件,若是有就卸載掉! [root@open ~]# rpm -qa|grep percona [root@open ~]# 2)下載官方percona模版 (https://www.percona.com/downloads/percona-monitoring-plugins/) 直接下載:https://pan.baidu.com/s/1c1IE7zq 提取密碼:trp5 [root@open ~]# wget https://www.percona.com/downloads/percona-monitoring-plugins/1.1.6/percona-zabbix-templates-1.1.6-1.noarch.rpm [root@open ~]# rpm -ivh percona-zabbix-templates-1.1.6-1.noarch.rpm [root@open ~]# ll /var/lib/zabbix/percona total 8 drwxr-xr-x 2 root root 4096 Sep 5 14:35 scripts drwxr-xr-x 2 root root 4096 Sep 5 14:35 templates [root@open ~]# ll /var/lib/zabbix/percona/scripts total 64 -rwxr-xr-x 1 root root 1251 Jan 11 2016 get_mysql_stats_wrapper.sh -rwxr-xr-x 1 root root 59640 Jan 11 2016 ss_get_mysql_stats.php [root@open ~]# ll /var/lib/zabbix/percona/templates total 284 -rw-r--r-- 1 root root 18866 Jan 11 2016 userparameter_percona_mysql.conf -rw-r--r-- 1 root root 269258 Jan 11 2016 zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml 如上,安裝percona後會在/var/lib/zabbix/percona生成2個目錄,其中: /var/lib/zabbix/percona/scripts是監控腳本目錄 /var/lib/zabbix/percona/templates是監控mysql的xml模版目錄 而後把/var/lib/zabbix/percona/templates/目錄下的模版文件zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6_1.xml複製出來,在zabbix的管理界面import導入進去。 -------------------------------------------------------------------------------------------------------------------------------------------------- 可是在導入此模板的時候,可能會報以下錯誤: Import failed Details Invalid XML tag "/zabbix_export/date":"YYYY-MM-DDThh:mm:ssZ" is expected. (標籤無效 "/zabbix_export/date": "YYYY-MM-DDThh:mm:ssZ" 預計) 通過覈查,這個緣由是模版錯誤,是由於percona官方上1.1.6仍是zabbix2.0的版本模版,因此須要跟新上來匹配zabbix3.0的模版規範,並且這個zabbix模版仍是直接copy的cacti模版,比較粗糙, 用more查看就能夠看到裏面都是cacti的內容,可見percona官網對zabbix也不是很重視嘛,至少不如cacti那樣重視的,以下所示: 處理辦法:修改配置模版加載成功 在原來的zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6_1.xml之上進行修改,改完後就能夠import導入進去了!!!! 修改好的新模版文件下載地址是:https://pan.baidu.com/s/1i5j8IJ7 提取密碼:ab8a -------------------------------------------------------------------------------------------------------------------------------------------------- 將percona的兩個腳本放到被監控主機的/data/zabbix/monitor_scripts目錄下 [root@open ~]# mv /var/lib/zabbix/percona/scripts/* /data/zabbix/monitor_scripts/ 3)添加參數支持 在被監控機器上將userparameter_percona_mysql.conf拷貝到zabbix_agent的對應配置目錄下 [root@open ~]# rsync -avpgolr /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /data/zabbix/etc/zabbix_agentd.conf.d/ [root@open ~]# sed -i 's#/var/lib/zabbix/percona/scripts/#/data/zabbix/monitor_scripts/#g' /data/zabbix/etc/zabbix_agentd.conf.d/userparameter_percona_mysql.conf 注意修改客戶端機器的zabbix_agentd.conf文件,增長Include 把userparameter_percona_mysql.conf 所在的目錄增長進去: [root@open ~]# cat /data/zabbix/etc/zabbix_agentd.conf|grep Include ### Option: Include Include=/data/zabbix/etc/zabbix_agentd.conf.d/ # Include=/usr/local/etc/zabbix_agentd.userparams.conf # Include=/usr/local/etc/zabbix_agentd.conf.d/ # Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf 4)修改監控腳本 修改/data/zabbix/monitor_scripts/get_mysql_stats_wrapper.sh腳本 -----------------------------------注意---------------------------------- 若mysql沒有使用默端口3006,好比mysql使用的是3317。則還須要修改以下腳本文件,記住不要在這裏被坑了!改端口號碼文件: 1-> 這裏要先建好這個文件,不然會報rm權限錯誤 [root@open ~]# touch /tmp/localhost-mysql_cacti_stats.txt:3317 [root@open ~]# chown -R zabbix.zabbix /tmp/localhost-mysql_cacti_stats.txt:3317 2-> 修改端口腳本 [root@open ~]# vim /data/zabbix/monitor_scripts/get_mysql_stats_wrapper.sh CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt " 換成: CACHEFILE="/tmp/$HOST-mysql_zabbix_stats.txt:3317" TIMEFLM=`stat -c %Y /tmp/$HOST-mysql_cacti_stats.txt` 換成: TIMEFLM=`stat -c %Y /tmp/$HOST-mysql_zabbix_stats.txt:3317` 若是mysql使用的是默認的3306端口,那麼就不用修改端口了(即將上面的:3317去掉)! -------------------------------------------------------------------------- 修改mysql執行命令路徑(以下腳本,能夠監控到mysql的主從同步狀態) [root@open ~]# vim /data/zabbix/monitor_scripts/get_mysql_stats_wrapper.sh RES=`HOME=~zabbix mysql -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','` 換成: RES=`/usr/local/mysql/bin/mysql -p123456 -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','` 而後修改/data/zabbix/monitor_scripts/ss_get_mysql_stats.php腳本,這裏主要修改用戶名密碼: [root@open ~]# vim /data/zabbix/monitor_scripts/ss_get_mysql_stats.php $mysql_user = 'zabbixmysql'; $mysql_pass = 'mysql@12345678'; $mysql_port = 3306; 登錄mysql建立監控要用的帳號(授予的權限,最後手動登陸驗證下) [root@open ~]# mysql -p123456 mysql> GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT ON *.* TO 'zabbixmysql'@'localhost' IDENTIFIED BY "mysql@12345678"; Query OK, 0 rows affected (0.03 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) 5)修改被監控主機的zabbix權限,並重啓zabbix_agent服務 最後記得重啓下zabbix_agent(重啓前要保證zabbix的配置文件和監控腳本的權限正確,不然就會採集不到監控數據) [root@open ~]# chown -R zabbix.zabbix /data/zabbix [root@open ~]# chmod -R 755 /data/zabbix/monitor_scripts/* [root@open ~]# /etc/init.d/zabbix_agentd restart 另外,要添加zabbix的sudo權限 [root@open ~]# cat /etc/sudoers ...... zabbix ALL=(ALL) NOPASSWD: /sbin/blockdev #Defaults requiretty //若是有這個配置項,那麼就註釋掉這個。沒有的話就忽略 6)測試下監控項 在客戶端zabbix-agentd測試下: [root@open ~]# /usr/bin/php -q /data/zabbix/monitor_scripts/ss_get_mysql_stats.php --host localhost --items gg gg:6 [root@open ~]# 在服務器zabbix-server測試下(172.29.16.30是被監控主機的ip地址): [root@zabbix ~]# /data/zabbix/bin/zabbix_get -s 172.29.16.30 -p 10050 -k "MySQL.Threads-connected" 1 [root@zabbix ~]# /data/zabbix/bin/zabbix_get -s 172.29.16.30 -p 10050 -k "MySQL.Handler-commit" 3 ---------------------------------------------注意------------------------------------------------ 若是對zabbix_server本機進行測試(即zabbix_server本機也做爲zabbix_agent),那麼-s後的ip要用zabbix_server本機的內網ip(即要和zabbix_agent配置文件裏配置的地址一致),而不能使用127.0.0.1 不然會報錯:Check access restrictions in Zabbix agent configuration error(這個命令只能在zabbix的server端使用,若是在agent端使用就會提示這個錯誤:)
接着在zabbix的web監控界面裏添加被監控主機,選擇添加"Percona MySQL Server Template"模板,以下html
最後就來看下percona插件監控mysql的效果圖了(能夠看出percona mysql的監控項有不少):mysql