Zabbix4.0使用percona監控MySQL數據庫 ------ 第7章

1. 插件下載

插件下載地址:https://www.percona.com/downloads/percona-monitoring-plugins/LATEST/
在這裏插入圖片描述

2. 插件安裝

接下來安裝percona zabbix插件,這個插件是用來監控MySQL的。由於我的MySQL安裝在了Zabbix Server(10.0.0.2),所以這裏就把插件安裝在Zabbix Server上。需要注意的是插件是與Zabbix Agent結合使用的,所以這臺Zabbix Server也要安裝Zabbix Agent,當然在這之前我們已經在Zabbix Server上安裝過Zabbix Agent。

# 下載插件rpm包
[root@Zabbix-server ~]# 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

# 安裝插件
[root@Zabbix-server ~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm 
警告:percona-zabbix-templates-1.1.8-1.noarch.rpm:V4 DSA/SHA1 Signature, 密鑰 ID cd2efd2a: NOKEY
準備中...                          ################################# [100%]
正在升級/安裝...
   1:percona-zabbix-templates-1.1.8-1 ################################# [100%]
   
Scripts are installed to /var/lib/zabbix/percona/scripts
Templates are installed to /var/lib/zabbix/percona/templates

# 跳轉到模板目錄下,需要將配置項文件複製到/etc/zabbix/zabbix_agentd.d/目錄下
[root@agent zabbix_agentd.d]# cd /var/lib/zabbix/percona/templates/
[root@agent templates]# ls
userparameter_percona_mysql.conf  zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
[root@agent templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
3. 導入模板

將/var/lib/zabbix/percona/templates/下的模板文件zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml拷貝出來,通過導入的方式添加這個模板。但是由於/var/lib/zabbix/percona/templates/下的模板版本比較低,所以不能成功導入。所以這裏需要下載新的模板,模板下載地址:zbx_percona_mysql_template.xml在這裏插入圖片描述
在這裏插入圖片描述

4. 模板不兼容的處理

處理方式1:安裝一個低版本的Zabbix 2.2,然後再導入這個模板

處理方式2:升級Zabbix 2.2到4.0,然後導出模板

5. 測試取監控項的值

模板導入之後,要重啓Zabbix Agent使模板生效。然後開始測試取MySQL監控的項的值。

# 模板導入之後,要重啓Zabbix Agent使模板生效
[root@Zabbix-server ~]# systemctl  restart zabbix-agent
# 查看監控項
[root@Zabbix-server zabbix_agentd.d]# cat 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.running-slave,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave
[root@Zabbix-server zabbix_agentd.d]# sh -x /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh op
...
# 使用調試模式執行取值的命令
[root@Zabbix-server zabbix_agentd.d]# sh -x /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh ij
+ ITEM=
+ HOST=localhost
++ dirname /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh
+ DIR=/var/lib/zabbix/percona/scripts
+ CMD='/usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gg'
+ CACHEFILE=/tmp/localhost-mysql_cacti_stats.txt
...
# 執行這個php腳本取值
[root@Zabbix-server zabbix_agentd.d]# /usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gg
gg:0[root@Zabbix-server zabbix_agentd.d]#

# 如果報MySQL拒絕用戶的錯誤,就需要修改連接MySQL的用戶名密碼等(如果是二進制安裝的,一定要協商MySQL的socket路徑)
[root@Zabbix-server zabbix_agentd.d]# vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php
$mysql_user = 'zabbix';
$mysql_pass = '';
$mysql_port = 3306;
$mysql_socket = NULL;

# 這時候就可以取值了
[root@Zabbix-server zabbix_agentd.d]# sh /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh ih
319916
[root@Zabbix-server zabbix_agentd.d]# /usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items oj
oj:6[root@Zabbix-server zabbix_agentd.d]# /usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items ih
ih:310965[root@Zabbix-server zabbix_agentd.d]# 

監控數據庫不是每個監控項都要取一次值,而是監控一次生成緩存(文件),5分鐘之後把這個緩存文件刪除 再監控下一次。每一次 監控的間隔默認是300s,可以通過修改 /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh 腳本來修改這個值。

# 修改腳本,將取值的默認間隔設置爲30s
[root@Zabbix-server zabbix_agentd.d]# vim /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh

# 緩存文件
[root@Zabbix-server zabbix_agentd.d]# ll /tmp/localhost-mysql_cacti_stats.txt 
-rw-r--r-- 1 root root 1393 61 11:48 /tmp/localhost-mysql_cacti_stats.txt

在這裏插入圖片描述

# 上面手動執行腳本取值生成的緩存文件的用戶和用戶組都是root,很容易出問題,提示權限拒絕,所以要刪除。
[root@Zabbix-server zabbix_agentd.d]# rm -r /tmp/localhost-mysql_cacti_stats.txt 

# 使用zabbix_get來取值,這裏要把key複製粘貼下來,不要使用gg什麼的
[root@Zabbix-server zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -k MySQL.Open-files
5
# 這時候臨時的緩存文件屬於zabbix用戶和zabbix用戶組
[root@Zabbix-server zabbix_agentd.d]#  ll /tmp/localhost-mysql_cacti_stats.txt 
-rw-rw-r-- 1 zabbix zabbix 1398 61 11:56 /tmp/localhost-mysql_cacti_stats.txt

zabbix在執行腳本的時候使用的用戶是zabbix

6. 主機鏈接新模板

在這裏插入圖片描述
在這裏插入圖片描述
設置每頁顯示200行,默認是50行:
在這裏插入圖片描述
設置間隔,與服務器中的設置一致是30s:
在這裏插入圖片描述
查看最新數據:
在這裏插入圖片描述

7. 主從狀態監控項

在這裏插入圖片描述
對於主庫是沒有MySQL同步進程的,所以主從狀態監控項是取不到的,所以 需要禁用這個監控項。如果是從庫,報帳號密碼錯誤,可能是腳本的原因,get_mysql_stats_wrapper.sh:

ITEM=$1
HOST=localhost
DIR=`dirname $0`
CMD="/usr/bin/php -q $DIR/ss_get_mysql_stats.php --host $HOST --items gg"
CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt"

if [ "$ITEM" = "running-slave" ]; then
    # Check for running slave
    RES=`HOME=~zabbix mysql -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`
    if [ "$RES" = " Yes, Yes," ]; then
        echo 1
    else
        echo 0
    fi
    exit
elif [ -e $CACHEFILE ]; then
    # Check and run the script
    TIMEFLM=`stat -c %Y /tmp/$HOST-mysql_cacti_stats.txt`
    TIMENOW=`date +%s`
    if [ `expr $TIMENOW - $TIMEFLM` -gt 30 ]; then
        rm -f $CACHEFILE
        $CMD 2>&1 > /dev/null
    fi
else
    $CMD 2>&1 > /dev/null
fi

# Parse cache file
if [ -e $CACHEFILE ]; then
    cat $CACHEFILE | sed 's/ /\n/g; s/-1/0/g'| grep $ITEM | awk -F: '{print $2}'
else
    echo "ERROR: run the command manually to investigate the problem: $CMD"
fi

那就可以試試不要使用zabbix用戶取值,使用其它用戶,如root用戶。所以,需要修改:

RES=`HOME=~zabbix mysql -uroot -p123456 -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`
# 這裏在沒有修改的情況下也是可以取到值的,不過這裏是主庫,取到的值是0
[root@Zabbix-server zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -k MySQL.running-slave
0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章