下面介紹兩種監控MySQL服務的方法~php
1、自定義監控參數
經過自定義參數簡單監控服務的狀態~~mysql
- 第一步:修改默認配置文件
zabbix-agent安裝以後,在配置文件目錄/etc/zabbix/zabbix_agentd.d下會自帶一個MySQL的監控參數文件:sql
[root@zabbix-agent zabbix_agentd.d]# grep ^[a-Z] /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}' UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N' UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive UserParameter=mysql.version,mysql -V
不過這個文件不能直接使用,由於沒有設置數據庫鏈接的用戶名和密碼,執行不會成功!修改上面標紅的一行到以下結果(添加用戶名和密碼):數據庫
UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin -u root -p 123456 ping | grep -c alive
- 第二步:重啓zabbix-agent
systemctl restart zabbix-agent.service
- 第三步:經過zabbix_get取值
在zabbix-server端運行zabbix_get命令,獲取數據庫運行狀況:bash
[root@zabbix-server ~]# zabbix_get -s 10.0.0.12 -p 10050 -k mysql.ping 1
這裏返回1表示數據庫正在運行。。。app
- 第四步:頁面配置監控項
- 第五步:查看最新數據
檢查可否查看到最新數據,若是能獲取到值說明已經能夠監控服務了,而且能夠經過這個監控項來建立觸發器socket
2、使用percona監控插件
官網地址:https://www.percona.com測試
- 第一步:安裝php環境
由於percona插件是經過php寫的,所以首先須要安裝php環境ui
yum -y install php php-mysql
- 第二步:在zabbix-agent下載並安裝percona插件
wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm
rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
#查看安裝的文件
[root@zabbix-agent src]# rpm -ql percona-zabbix-templates
/var/lib/zabbix/percona #<==插件安裝目錄
/var/lib/zabbix/percona/scripts
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh
/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php #<==主php程序
/var/lib/zabbix/percona/templates
/var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf #<==UserParameter配置文件,須要複製到/etc/zabbix/zabbix-agent.d/目錄下
/var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml #<==監控模板
- 第三步:移動配置文件userparameter_percona_mysql.conf
cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
- 第四步:配置密碼文件
默認執行腳本/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php在調用時,須要在當前目錄下找一個.cnf結尾的文件,具體內容以下:
[root@zabbix-agent scripts]# grep .cnf /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php # .cnf extension. if ( file_exists('/etc/cacti/' . basename(__FILE__) . '.cnf' ) ) { require('/etc/cacti/' . basename(__FILE__) . '.cnf'); debug('Found configuration file /etc/cacti/' . basename(__FILE__) . '.cnf'); elseif ( file_exists(__FILE__ . '.cnf' ) ) { require(__FILE__ . '.cnf'); debug('Found configuration file ' . __FILE__ . '.cnf');
因爲這個文件默認不存在,所以咱們須要建立這個文件,並在裏面寫入mysql鏈接的用戶名和密碼:
[root@zabbix-agent scripts]# cat /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf <?php $mysql_user='root'; $mysql_pass='123456';
#這裏個人mysql用戶名爲root和123456
- 第五步:先測試一下這個監控腳本(若是能獲取值,說明配置成功了!!)
[root@zabbix-agent scripts]# head -5 ../../percona/templates/userparameter_percona_mysql.conf #<==隨便找幾個監控闡參數 UserParameter=MySQL.Sort-scan,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh kt UserParameter=MySQL.slave-stopped,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh jh UserParameter=MySQL.Com-replace,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh jz UserParameter=MySQL.innodb-lock-structs,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh lp UserParameter=MySQL.Com-load,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh kg
#使用腳本獲取參數(說實話這幾個參數是什麼我也步太清楚,能夠看上面的UserParameter來判斷。。。)
[root@zabbix-agent scripts]# sh /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
0
[root@zabbix-agent scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh kt
0
[root@zabbix-agent scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh jh
0
[root@zabbix-agent scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh jz
0
[root@zabbix-agent scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh lp
0
[root@zabbix-agent scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh kg
0
[root@zabbix-agent scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
0
注意:若是socket文件不在默認路徑下的話,配置文件get_mysql_stats_wrapper.sh第19行須要在這個參數裏面增長socket文件的地址:RES=`HOME=~zabbix mysql -e 'SHOW SLAVE STATUS\G' | egrep
- 第六步:修改權限
chown -R zabbix.zabbix /var/lib/zabbix/percona/
- 第七步:重啓zabbix-agent
systemctl restart zabbix-agent
- 第八步:導入模板
將模板/var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml導入zabbix-server
導入的時候會報一個錯誤,內容以下:
這是因爲這個插件默認用的zabbix2.0模板,時間戳有問題
解決辦法:將zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml導入zabbix2.4中再導出,以後將新的導出xml導入到3.0中問題解決。
這裏有個已經修改好的模板:
連接:https://pan.baidu.com/s/1hwxxtqykTbXYMOylnNhO5w
提取碼:xe46
模板導入成功:
- 第九步:主機添加percona模板
- 第十步:查看最新數據和實時圖形
由於模板的監測間隔爲5分鐘,須要等待一段時間
- 第二個報錯問題 :
我在第一次測試的時候,發現一直獲取不到數據,所以經過zabbix_get其中一個監控項的值,結果發現有以下報錯:沒權限???
並且zabbix-server也在拋出異常(應該早一些看日誌的):
cannot convert value to numeric type
- 解決辦法:
在zabbix-agent上將這個文件賦予zabbix的權限便可:
[root@zabbix-agent zabbix_agentd.d]# chown -R zabbix.zabbix /tmp/localhost-mysql_cacti_stats.txt
要有正確數據才行:
最後,能夠根據本身業務的實際需求,將不須要的監控項都清楚掉,不斷優化監控模板!!