zabbix監控mysql

下面介紹兩種監控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測試

插件下載地址: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優化

  • 第一步:安裝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

要有正確數據才行:


 

最後,能夠根據本身業務的實際需求,將不須要的監控項都清楚掉,不斷優化監控模板!!

相關文章
相關標籤/搜索