1. 程式人生 > >zabbix監控mysql以及報警(二)終

zabbix監控mysql以及報警(二)終

rmi png sel 目錄 affect str 報警郵件 uptime install

Zabbix部署 監控數據庫 報警服務(二) 終

接著zabbix(一)接著部署

配置過一段時間後,觀察下監控圖效果出來了沒

技術分享圖片

技術分享圖片

技術分享圖片

zabbix3.0 server已自帶mysql的模板了,只需配置好agent客戶端,然後在web端給主機增加模板就行了。

Zabbix_agent客戶端操作
1)首先在客戶端的mysql裏添加權限,即本機使用zabbix賬號連接本地的mysql

mysql> grant all on *.* to zabbix@'localhost' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.02 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)

(2)zabbix_agent服務目錄下創建.my.cnf 連接文件
zabbix安裝目錄是/usr/local/zabbix

[root@localhost etc]# pwd
/usr/local/zabbix/etc
[root@localhost etc]# cat .my.cnf 
[client]
user=zabbix
password=123456

註意:

如果在數據庫grant授權時,針對的是localhost,這個.my.cnf裏面就不用加host參數了【如上配置】

但如果grant授權時針對的是本機的ip(如192.168.31.250),那麽在.my.cnf文件裏就要加上host參數進行指定了

即在.my.cnf文件就要加上:

host=192.168.0.7

socket= /usr/local/mysql/mysql.sock

user=zabbix
password=123456

(3)配置MySQLkey文件
這個可以從zabbix3.2安裝時的解壓包裏拷貝過來

zabbix_server服務端安裝時解壓目錄

/root/zabbix-3.2.1/conf/zabbix_agentd/userparameter_mysql.conf 拷貝到zabbix_agent客戶端上的/usr/local/zabbix/etc/zabbix_agentd.conf.d/ 目錄下的

[root@localhost zabbix]# cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/
[root@localhost zabbix_agentd.conf.d]# pwd
/usr/local/zabbix/etc/zabbix_agentd.conf.d
[root@localhostzabbix_agentd.conf.d]#,cp,/usr/src/zabbix-3.2.1/conf/zabbix_agentd/userparameter_mysql.conf ./
[root@localhost zabbix_agentd.conf.d]# ls userparameter_mysql.conf 
userparameter_mysql.conf

然後查看 userparameter_mysql.conf 文件,看到類似 HOME=/var/lib/zabbix 的路徑設置,把路徑全都替換為 /usr/local/zabbix/etc/,也就是上面的.my.cnf文件所在的目錄路徑。
另外,註意userparameter_mysql.conf 文件裏的mysql命令路徑(提前做好mysql的系統環境變量,以防mysql命令不被系統識別)

如下:

[root@server1 zabbix_agentd.conf.d]# cat userparameter_mysql.conf

# For all the following commands HOME should be set to the directory that has .my.cnf file with password information.

# Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].

# Key syntax is mysql.status[variable].

UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/usr/local/zabbix/etc/ mysql -N | awk '{print $$2}'

# Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].

# Key syntax is mysql.size[<database>,<table>,<type>].

# Database may be a database name or "all". Default is "all".

# Table may be a table name or "all". Default is "all".

# Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".

# Database is mandatory if a table is specified. Type may be specified always.

# Returns value in bytes.

# 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table

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=/usr/local/zabbix/etc/ mysql -N'

UserParameter=mysql.ping,HOME=/usr/local/zabbix/etc/ mysqladmin ping | grep -c alive

UserParameter=mysql.version,mysql -V

技術分享圖片

4)按照上面修改完之後檢查一下,然後重啟zabbix_agent

技術分享圖片

接著在zabbix_server服務端進行命令行測試[下面的192.168.0.7是客戶端的ip

若下面報錯

[root@localhost zabbix]# /usr/local/zabbix/bin/zabbix_get -s 192.168.0.7 -p 10050 -k "mysql.status[Uptime]"

sh: mysql: command not found

解決方法:

userparameter_mysql.conf中關於mysql命令前面添加絕對路徑

[root@localhost /]# /usr/local/zabbix/bin/zabbix_get -s 192.168.0.7 -p 10050 -k "mysql.status[Uptime]"
169

如果出現類似這一串key的數字,就說明配置ok,服務端能監控到客戶端的mysql數據了!
成功啦,之後在監控界面增加主機對應的MySQL模板就ok了。

註:zabbix_get命令介紹

參數說明:

-s --host:指定客戶端主機名或者IP

-p --port:客戶端端口,默認10050

-I --source-address:指定源IP,寫上zabbix serverip地址即可,一般留空,服務器如果有多ip的時候,你指定一個。

-k --key:你想獲取的key

zabbix_get獲取數據

獲取負載

# zabbix_get -s 192.168.31.250 -p 10050 -k "system.cpu.load[all,avg15]"

獲取主機名

# zabbix_get -s 192.168.31.250 -p 10050 -k "system.hostname"

5)登錄zabbix監控界面,在配置”-“模板裏可以看到自帶的mysql監控模板

技術分享圖片

在相應主機監控配置裏添加mysql的監控模版(zabbix自帶的)即可。

技術分享圖片

下面是mysql監控項的效果圖:

1】監控mysql的帶寬:在zabbix前端可以實時查看mysql發送接收的字節數。其中bytes received表示從所有客戶端接收到的字節數,bytes sent表示發送給所有客戶端的字節數。

mysql數據庫已經成功檢測上

技術分享圖片

監控mysql網卡情況

技術分享圖片

zabbix3.2.1郵件報警設置:

Zabbix監控服務端、客戶端都已經部署完成,被監控主機已經添加,Zabiix監控運行正常。

Zabbix服務端設置郵件報警,當被監控主機宕機或者達到觸發器預設值時,會自動發送報警郵件到指定郵箱。

具體操作:

以下操作在Zabbix監控服務端進行

下載sendemail軟件

然後安裝那兩個依賴包,命令是:

[root@localhost ~]# yum install perl-Net-SSLeay perl-IO-Socket-SSL -y

解壓軟件,然後將sendemail復制到/usr/local/bin/目錄下,並加上可執行權限,然後修改用戶和群組。

[root@localhost src]# tar zxf sendEmail-v1.56.tar.gz 
[root@localhost src]# cd sendEmail-v1.56/
[root@localhost sendEmail-v1.56]#  cp sendEmail /usr/local/bin/sendEmail
[root@localhost sendEmail-v1.56]# chown zabbix:zabbix /usr/local/bin/sendEmail
[root@localhost sendEmail-v1.56]# ll /usr/local/bin/sendEmail 
-rwxr-xr-x. 1 zabbix zabbix 80213 Jan  4 17:52 /usr/local/bin/sendEmail

進入/usr/local/zabbix/share/zabbix/alertscripts/目錄執行# /usr/local/bin/sendEmail -h查看sendEmail的幫助

#/usr/local/bin/sendEmail -f [email protected] -t [email protected] -s smtp.163.com -u "hello" -o message-content-type=html -o message-charset=utf8 -xu [email protected] -xp 密碼 -m "chai xin wang wei wu "

命令主要選項說明:
/usr/local/bin/sendEmail #命令主程序
-f [email protected] #發件人郵箱
-t [email protected] #收件人郵箱
-s smtp.163.com #發件人郵箱的smtp服務器
-u "我是郵件主題" #郵件的標題
-o message-content-type=html #郵件內容的格式,html表示它是html格式
-o message-charset=utf8 #郵件內容編碼
-xu [email protected] #發件人郵箱的用戶名
-xp 密碼 #發件人郵箱密碼
-m "我是郵件內容" #郵件的具體內容

技術分享圖片

發送成功驗證效果 效果完成

技術分享圖片

然後在這個目錄下創建報警腳本sendmail.sh

[root@mysqla alertscripts]# vi mail.sh

下面是腳本內容(塗顏色部分是你的郵箱和密碼,-f-xu參數後面跟郵箱,-xp後面跟授權碼)

#!/bin/bash

to=$1

subject=$2

body=$3

/usr/local/bin/sendEmail -f [email protected] -t [email protected] -s smtp.163.com -u "hello" -o message-content-type=html -o message-charset=utf8 -xu [email protected] -xp 密碼 -m "chai xin wang wei wu "

技術分享圖片

如果在配置過程中出現錯誤可以有效快速解決 如下

at /usr/local/bin/sendEmail line 1906.

invalid SSL_version specified at /usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 415

註:進行發送郵件測試時,出現了第一個報錯

原因sendemail軟件和perl5裏面的ssl版本不兼容導致的,通過修改sendemail裏面的內容可以解決這個問題。

解決方法:

sendemail1906行的內容,從

if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv3 TLSv1')) {

修改為

if (! IO::Socket::SSL->start_SSL($SERVER)) {

技術分享圖片

即不指定SSL的版本,讓程序來自己選擇

不管你使用的是163/126郵箱還是qq郵箱,你都必須開通pop3服務,而且126/qq郵箱還要求使用第三方客戶端發送郵件是必須使用授權碼登錄,使用賬號密碼驗證時,會出現下面圖片中的錯誤。

sendEmail[5102]: ERROR => ERROR => SMTP-AUTH: Authentication to smtp.126.com:25 failed.

至於郵箱的授權碼,自己登錄126郵箱去設置就好。

經過上面兩個問題的處理後就可以正常發送郵件如下所示顯示成功提示

上面的郵件腳本配置好後,就要在web端添加報警媒介,在web頁面的管理,報警媒介類型頁面,點擊右邊的創建媒體類型

技術分享圖片

進入創建頁面,然後輸入名稱郵件報警腳本,類型選擇腳本,名稱選擇mail.sh,點擊添加按鈕,添加三個腳本參數,分別是{ALERT.SENDTO},{ALERT.SUBJECT},{ALERT.MESAGE},分別對於mail.sh中的tosubjectbody。添加完成後點下面的添加按鈕,我們的報警媒介就創建完成了

技術分享圖片

技術分享圖片

創建好報警媒介後,就需要將報警媒介關聯到我們的用戶。點擊管理,用戶,然後選擇我們的用戶admin也可新建一個用戶,點擊用戶名就進入到用戶配置界面。點擊報警媒介,然後點添加,選擇我們上一步創建的郵件報警腳本,輸入收件人,選擇報警時間和類型,然後點擊添加,就將創建好的報警媒介關聯到我們的用戶上面了。

技術分享圖片

技術分享圖片

技術分享圖片

現在需要做的是,創建一個觸發動作,即系統出現故障時,觸發這個動作,然後給我們的郵箱發送報警郵件。點擊配置,選擇動作,然後點擊右邊的創建動作。

在動作這一頁名稱中寫入我們定義的動作名以及觸發條件

技術分享圖片

技術分享圖片

步驟是1-3,也即是從1開始到3結束。一旦故障發生,就是執行Email.sh腳本發生報警郵件給zabbix用戶。
假如故障持續了1個小時,它也只發送3次,第1-3次(即前3次)郵箱發送給zabbix用戶,時間間隔為0秒。
如果改成1-00是表示不限制.無限發送

設置“恢復操作”

技術分享圖片

添加好以後就可以看到我們添加的動作名,以及該動作已啟用的狀態。

技術分享圖片

最後,點擊報表“->”動作日誌“,可以看到觸發動作的次數

技術分享圖片






zabbix監控mysql以及報警(二)終