在zabbix的使用中,最重要的一點就是完善的報警機制,做爲監控平臺,須要時刻關注機器和服務的運行狀態,更重要的是發現故障以後須要及時的報警給相關人員,早點發現問題,將隱患消除在未然階段。這樣才能保證服務的穩定運行。前端
報警的方式是多種多樣的,微信、短信和郵件報警是咱們比較常見的方式。並且報警的頻率和策略直接影響着運維人員的重視程度和檢錯效率。若是整個報警列表中都是一些無關痛癢的提示、輕度警告。而他們的發送頻率又特別的高,則很是容易錯過真正關鍵的報警。mysql
報警涉及的觸發器(trigger)通常包括如下幾個方面:
(1)服務器的基本狀態:磁盤容量、內存大小、cpu的負載;
(2)基礎服務狀態:web服務器(nginx、apache)的狀態,數據庫的狀態(mysql、oracle、nosql等);
(3)應用服務器狀態:應用服務器的可用性以及負載狀態;nginx
以本人以前所在的遊戲公司爲例,平常的監控報警中主要集中在服務器的基本狀態的報警:(1)好比隨着服務器的運行,會產生大量的日誌文件,由於來不及轉移致使服務器的磁盤可用空間不足;(2)開啓的應用過多致使cpu和內存的不足;web
第一種磁盤不足的狀況,能夠採用crontab按期清理日誌的方式解決,注意
爲了防止日誌內容的丟失,須要把日誌及時的備份到遠程的日誌服務器中進行存放;sql
第二種狀況則須要按期對服務器進行升配操做;數據庫
而基礎服務狀態和應用服務器狀態則須要提升報警級別,畢竟服務的不可用是很是嚴重的事故,另外給出建議是關鍵的服務必定要作到高可用,不能由於節約成本而致使服務故障,不然形成的損失也許更加巨大。apache
郵件報警的配置主要劃分爲一下幾個步驟:vim
1.在zabbix服務端配置郵件發送腳本和修改zabbix服務端配置文件;
2.在zabbix前端控制檯進行相關設置;安全
(1)郵件的發送能夠採用系統自帶的mail發送,可是須要配置mail的配置文件/etc/mail.rc,在該文件的末尾添加以下幾行:bash
set from=********@sina.com set smtp=smtp://smtp.sina.com set smtp-auth-user=********@sina.com set smtp-auth-password=******** set smtp-auth=login
其中from爲你所指定的郵件發送的發件方名稱,smtp爲所使用的郵件服務器,smtp-auth-user和smtp-auth-password分別進行用戶名和密碼的驗證;
這個smtp的功能須要登陸郵箱進行開通:
注意:
我這裏採用的是sina的郵箱發送,由於新浪的郵件內容審覈相對比較寬鬆,除了sina以外,還能夠選擇網易郵箱或者qq郵箱,甚至爲了方即可以本身搭建一個smtp服務器。
網易郵箱和qq郵箱的smtp分別以下:
網易 smtp.163.com
qq smtp.exmail.qq.com
另外須要注意使用網易或者qq郵箱他們的smtp-auth-password密碼會單獨進行設定,不要與郵箱自己的登陸密碼混淆。
(2)測試發送一個郵件給指定的用戶:
[root@localhost conf]# echo "hello" | mail -s "hello" 597****76@qq.com
在該用戶的郵箱查看是否收到郵件:
已經收到郵件,說明郵件的發送沒有問題,若是郵件發送失敗,可能會是如下幾個緣由:
1)鏈接的郵件服務器錯誤,或者用戶名、密碼認證失敗,這個是比較好排查的,能夠經過telnet測試是否能夠鏈接郵件服務器(郵件服務器的默認端口是25):
[root@localhost conf]# telnet smtp.sima.com 25 Trying 173.254.89.192... Connected to smtp.sima.com. Escape character is '^]'. 220-box1089.bluehost.com ESMTP Exim 4.86_1 #1 Wed, 23 Nov 2016 01:29:33 -0700 220-We do not authorize the use of this system to transport unsolicited, 220 and/or bulk e-mail.
用戶名密碼認證失敗會明確的告訴緣由;
2)發送的郵件內容沒有經過發件方郵箱的審覈;
3)發送的郵件內容沒有經過收件方的白(黑)名單活着郵件內容的審覈;
上述的二、3兩種失敗狀況郵件服務器都會發送給錯誤碼進行查詢,通常qq郵箱和網易郵箱的審覈相對比較嚴格。爲了防止被拒絕,能夠選擇sina或者139等郵箱,審覈相對寬鬆。甚至能夠本身搭建郵件服務器。
(3)編寫zabbix發送郵件的腳本sendmail.sh
建立腳本所在目錄/usr/local/etc/alertscripts:
[root@localhost conf]# mkdir /usr/local/etc/alertscripts
編寫發送腳本:
[root@localhost conf]# cat /usr/local/etc/alertscripts/sendmail.sh #!/bin/bash messages=`echo $3 | tr '\r\n' '\n'` subject=`echo $2 | tr '\r\n' '\n'` echo "${messages}" | mail -s "${subject}" $1 >>/tmp/sendmail.log 2>&1
改變所屬用戶和組爲zabbix,授予可執行權限:
[root@localhost conf]# chown zabbix.zabbix /usr/local/etc/alertscripts/ -R [root@localhost conf]# chmod +x /usr/local/etc/alertscripts/sendmail.sh
建立日誌文件,修改所屬用戶和組:
[root@localhost conf]# chown zabbix.zabbix /tmp/sendmail.log
(4)修改zabbix服務端配置文件,而且重啓服務:
[root@localhost conf]# vim /usr/local/etc/zabbix_server.conf
添加以下內容,設置腳本目錄爲剛纔建立的目錄:
AlertScriptsPath=/usr/local/etc/alertscripts
修改完成後重啓zabbix服務:操做略。
1.首先設置報警媒介(指定郵件發送的腳本),點擊「管理」—「報警媒介類型」—「Email」:
2.將類型選定爲腳本,而後指定腳本的名稱。在zabbix3.x以後還須要指定傳遞給郵件發送腳本的參數(郵件接收方{ALERT.SENDTO}、郵件主題{ALERT.SUBJECT}、郵件內容{ALERT.MESSAGE})。
3.在用戶組羣中開啓調試模式,點開啓用:
4.點擊相關組羣設置組羣的權限,由於是對管理員用戶設置郵件,這裏設定對全部組羣具備讀寫權限(*表明全部組羣):
5.而後設置管理菜單下的用戶,這裏對Admin用戶進行設置:
6.在「報警媒介」中點擊編輯設置郵件:
7.指定報警的類型爲Email,指定郵件地址爲接收方的郵件地址,爲了讓郵件能夠準確的到達,須要在接收方的郵件中設置白名單,容許發送方的郵件被接收。
8.配置相關的動做,這個是針對觸發器設定的,當監控的item達到必定的條件(由觸發器Trigger設置),則會使trigger執行設定好的動做,一個動做能夠針對多個觸發器設定,當他們滿則條件時都會執行相應的動做,由於是郵件報警,因此當trigger被觸發時,咱們給相關用戶的郵箱發送郵件,這樣運維人員會根據郵件的報錯提示及時解決問題,當問題結局時還會發送恢復郵件,這樣就能夠把機器及業務的運行狀態及時的監控起來。
條件是針對動做什麼時候執行。能夠多個條件並存或者任意存在,這個能夠編寫相關的邏輯進行判斷。
操做和恢復操做分開設置是zabbix3.2.1和以前的版本有所不一樣的,在操做中進行設定:
而後設置恢復操做:
咱們這裏設定的條件是當zabbix客戶端5分鐘內沒有鏈接的時候,則會觸發該警報。
1.首先能夠關閉zabbix agent,查看儀表盤的監控信息,五分鐘後顯示以下:
2.郵箱能夠接受到對應的報警信息:
3.當咱們啓動zabbix agent,則會看到故障恢復的報警信息:
上述是關於zabbix郵件報警的信息,正常狀況下的操做很簡單,可是筆者在設置的時候,發現網絡和郵件審查的因素會對郵件的發送有很大的影響(安全和利益使然),因此你們在搭建的時候須要選擇穩定可靠的郵箱,確保郵件的準確發送,還有就是再次基礎上根據不一樣公司的業務和監控指標,須要設定好郵件發送的頻率。祝你們工做順利!