1. 程式人生 > >Zabbix監控MySQL以及主從狀態

Zabbix監控MySQL以及主從狀態

環境

MySQL主庫:192.168.253.128

MySQL從庫:192.168.253.140

Zabbix主機的ip:192.168.253.133

Zabbix版本:3.0

系統:CentOS7

第一步:安裝Zabbix3.0

下載連結:https://www.zabbix.com/download?zabbix=3.0&os_distribution=centos&os_version=7&db=MySQL

官方文件: https://www.zabbix.com/documentation/3.0/manual

安裝相關依賴包

yum install httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml mariadb mariadb-server -y

安裝zabbix agent和zabbix server

rpm -i https://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-get -y

第二步:配置資料庫

安裝資料庫

systemctl start mariadb #啟動資料庫
ln -sv /var/lib/mysql/mysql.sock  /tmp/mysql.sock
mysql -uroot   #進入mysql

建立資料庫和授權使用者

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to [email protected] identified by 'password';
MariaDB [(none)]> quit;

匯入表結構

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -ppassword zabbix

第三步:配置php時區

修改/etc/php.ini

date.timezone = Asia/Shanghai

第四步:修改Zabbix配置檔案

修改/etc/zabbix/zabbix_server.conf

ListenPort=10051 ##監聽的埠
LogType=file       ##日誌的記錄的型別,這裡表示記錄在檔案中
LogFile=/var/log/zabbix/zabbix_server.log #日誌路徑
LogFileSize=0   #日誌大小,超過則會進行切割,0表示不切割
PidFile=/var/run/zabbix/zabbix_server.pid #pid檔案路徑
DBHost=localhost #資料庫位置  必填
DBName=zabbix #資料庫名稱   必填
DBUser=zabbix  #連線資料庫的使用者名稱   必填
DBPassword=password  #連線資料庫對應的密碼  必填
DBSocket=/tmp/mysql.sock #socket檔案路徑  
DBPort=3306  #資料庫開放的埠 必填

第五步:啟動zabbix server和httpd

systemctl  start httpd 
zabbix_server -c /etc/zabbix/zabbix_server.conf 

訪問http://192.168.253.133/zabbix

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述
初始賬號密碼為Admin/zabbix

第六步:在MySQL上安裝zabbix-agent

在主庫與從庫安裝yum源和zabbix-agent

rpm -i https://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
yum install zabbix-agent -y

修改配置檔案/etc/zabbix/zabbix_agentd.conf

Server=192.168.253.133  #這裡的ip是zabbix的Server端ip
Hostname=192.168.253.128 #這裡是主機名,必須唯一所以用ip代替

從庫也做對應的修改

啟動zabbix-agent

systemctl  start zabbix-agent

第八步:安裝percona公司提供的監控模版

官方文件:https://www.percona.com/doc/percona-monitoring-plugins/LATEST/zabbix/index.html

下載地址: https://www.percona.com/downloads/percona-monitoring-plugins/LATEST/

需要建立一個使用者用於監控,只需要在主庫建立就可以了,因為主從同步這樣從庫也會同步過去。

mysql> GRANT ALL ON *.* TO 'monitor'@'192.168.253.%' IDENTIFIED BY '123456';

由於獲取MySQL資料的方式是通過PHP的,所以還需要下載相關的依賴

yum install php  php-mysql -y

下載rpm包然後上傳到MySQL主庫和從庫的虛擬機器上

 rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm

安裝完成後會多兩個目錄

/var/lib/zabbix/percona/scripts #這個目錄是獲取資料的指令碼目錄
/var/lib/zabbix/percona/templates #這個是存放模版和配置項的目錄

設定配置檔案

mkdir -p /etc/zabbix_agentd.conf.d/
cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix_agentd.conf.d/userparameter_percona_mysql.conf

修改主配置檔案/etc/zabbix/zabbix_agentd.conf ,新增下面一行

Include=/etc/zabbix_agentd.conf.d/

修改檔案/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh

HOST=192.168.253.128 #需要改成監控的主機,從庫則寫從庫的IP地址

修改檔案/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php

$mysql_user = 'monitor';  #用於監控的使用者
$mysql_pass = '123456'; #密碼

測試是否能成功獲取資料

/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg

在這裡插入圖片描述
獲取到資料就表示成功

重啟agent

systemctl restart zabbix-agent 

從庫也做對應的修改,即可

第九步:建立主機,匯入模版檔案

需要上傳模版檔案到主機

sz /var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml

然後建立主機
在這裡插入圖片描述

在這裡插入圖片描述

再建立個從庫的主機
在這裡插入圖片描述

在這裡插入圖片描述

匯入模版
在這裡插入圖片描述

在這裡插入圖片描述
選擇檔案就選剛才上傳的檔案
在這裡插入圖片描述
匯入的時候出現了一個問題

Invalid tag "/zabbix_export/date": "YYYY-MM-DDThh:mm:ssZ" is expected.

在這裡插入圖片描述
這是由於Percona公司的模版適用於Zabbix的2.x系列的,而我們這裡用的是3.0版本所以不相容,解決方法也很簡單,把這個模版匯入zabbix2.4然後再匯出來就可以了。

從zabbix2.4匯出的就可以再匯入zabbix3.0了
在這裡插入圖片描述
這次就匯入成功了
在這裡插入圖片描述
然後關聯相關的模版
在這裡插入圖片描述
點選Update,然後在從庫的主機也關聯一下

發現有一些錯誤
在這裡插入圖片描述
原因:在獲取資料的時候,會建立一個檔案/tmp/192.168.253.140-mysql_cacti_stats.txt,在這個檔案裡存放資料,而這個檔案的屬主和屬組是root
在這裡插入圖片描述
所以需要改一下許可權就可以了

chown -R zabbix:zabbix /tmp/192.168.253.128-mysql_cacti_stats.txt

類似的也修改一下從庫的檔案許可權

這樣就可以了

在這裡插入圖片描述

第十步:自定義指令碼監控主從狀態

這部分只需要在從庫的主機上做就可以了

指令碼內容

#!/bin/bash
#連線資料庫的密碼需要放在/etc/my.cnf中,不然會連線失敗
#表示連線的主機
DBHost=192.168.253.140  

 #指令碼名稱
prog=$(basename $0)     

#用於獲取主從延遲時間的函式
Seconds_Behind_Master(){   
  Num=$(mysql -h $DBHost -e "show slave status \G;"|grep "Seconds_Behind_Master:"  | awk -F: '{print $2}')
  echo $Num
}

#檢查主從是否正常連線,如果正常返回50,如果連線失敗錯誤,則返回100,後續可以根據這個值設定觸發器
Master_Slave_Check(){
  Num1=$(mysql  -h $DBHost -e "show slave status\G;" | grep "Slave_IO_Running" | awk -F: '{print $2}' | sed 's/^[ \t]*//g')
  Num2=$(mysql  -h $DBHost -e "show slave status\G;" |  grep "Slave_SQL_Running:" | awk -F: '{print $2}' | sed 's/^[ \t]*//g' )

if [[  $Num1 == "Yes" && $Num2 == "Yes" ]]
then 
   echo 50 
else
   echo 100
fi
}
 
#當用戶輸入錯誤,輸出提示資訊   
usage() {
  echo "Usage: $prog {Seconds_Behind_Master|Master_Slave_Check}"
}

main(){
  case $1 in
    Seconds_Behind_Master)
      Seconds_Behind_Master;
      ;;
    Master_Slave_Check)
      Master_Slave_Check;
      ;;
    *)
      usage
      exit 1
      ;;
   esac
}

main $1

監控主從主要監控幾個項

Slave_IO_Running: Yes  #表示IO執行緒正在執行
Slave_SQL_Running: Yes  #表示SQL執行緒正在執行
Seconds_Behind_Master: 0 #表示延遲了多久

然後就可以通過下面這個指令碼進行監控了。使用的時候還需要注意一下,為了安全,把連線的賬號密碼放到了/etc/my.cnf檔案中,新增下面幾行

[client]
user=monitor
password=123456

測試指令碼能否成功獲取資料MySQL_Monitor.sh
在這裡插入圖片描述
需要給指令碼加上執行許可權

chmod +x MySQL_Monitor.sh
mkdir -p  /etc/zabbix/zabbix_agentd_scripts/  #建立一個目錄存放指令碼
mv MySQL_Monitor.sh  /etc/zabbix/zabbix_agentd_scripts/

建立配置檔案,自定義鍵

[[email protected] scripts]# cat /etc/zabbix/zabbix_agentd.d/monitor.conf
UserParameter=mysql_monitor[*],/etc/zabbix/zabbix_agentd_scripts/MySQL_Monitor.sh "$1"

然後再重啟zabbix-agent

systemctl  restart zabbix-agent

在192.168.253.133上,獲取鍵值測試一下

[[email protected] ~]# zabbix_get  -s 192.168.253.140 -k "mysql_monitor[Master_Slave_Check]"
50
[[email protected] ~]# zabbix_get  -s 192.168.253.140 -k "mysql_monitor[Seconds_Behind_Master]"
0

在這裡插入圖片描述
然後再zabbix中自定義鍵就行了
在這裡插入圖片描述

在這裡插入圖片描述
可以看到成功獲取到資料了。
在這裡插入圖片描述