各位好,在日常工作中,我們不可能整天盯著 zabbix儀表板 來查詢服務是否正常,這個時候我們就需要有途徑可以通知到我們,那麼根據現在的工作環境,有三種方式是大多數公司都會選擇的:
我們會主要說一下如何實現通過郵件、微信、釘釘等方式來報警,這小節我們就來使用郵件的方式來報警:
1、給郵箱開通smtp
為什麼要弄這個呢?因為我們在實現郵件報警的過程中,採用的不是郵箱的賬號和密碼,而是郵箱的賬號和授權碼,開啟stmp就是為了成功獲取授權碼;在此以QQ郵箱為例:
登錄郵箱只有界面如下圖:
點擊左上角的 “設置” 按鈕,如下圖:
next:
next:
在這個頁面中往下滑,會發現一個 “POP3” 如下圖的一個界面,開啟POP3 和 IMAP 這兩個選擇,再後面可以看到狀態是開啟的,我這裡是已經開通過了,你們再操作的時候根據提示來操作即可
next:
如上圖,然後再按照郵箱的提示繼續操作,最後將生成的授權碼複製出來進行保存;
2、設立觸發器
我們之前說過如何創建觸發器了,過程就不仔細描述了,直接截圖我設計的觸發器結果吧,如下圖:
PS:推薦在模板裡面創建觸發器,而不是單獨給用戶創建,因為這樣的話可以複用給其他主機~
PS:我的129服務器的8080端口部署了一個tomcat用來測試用,如果不知道tomcat如何部署的同學,可以百度,另外我開啟了8080的防火牆,此命令之前的文章中出現過,如果忘記的同學可以往前看。
監控項設立如下:
觸發器設立如下:
看一下最新數據,保證剛添加的監控是沒問題的:
而後關閉 129 服務器的tomcat,看下驗證下剛創建的觸發器是否生效了,如下圖:
以上表示我們的觸發器設立好了,最後記得先把 129 的tomcat服務重新開啟。
3、放置報警腳本
既然我們要讓他報警,那麼肯定是要有一個腳本的,我們如何寫這個腳本,這個腳本放置的位置又是哪裡呢?
參考我下面的腳本,只需要更改其中的兩點內容即可:
myemail='你的郵箱地址'
password='你的授權碼'
<code>#!/usr/bin/python # -*- coding: utf-8 -*- from email.mime.text import MIMEText from email.header import Header from smtplib import SMTP_SSL import sys smtpaddr = 'smtp.qq.com' myemail='[email protected]' password='gohbjgpbrdgadime' recvmail=sys.argv[1] subject=sys.argv[2] content=sys.argv[3] msg = MIMEText("""%s"""%(content), "plain", "utf-8") msg['Subject'] = Header(subject, 'utf-8').encode() msg['From'] = myemail msg['To'] = recvmail try: smtp = SMTP_SSL( smtpaddr ) smtp.login(myemail, password) smtp.sendmail(myemail, recvmail.split(','), msg.as_string()) smtp.quit() print("success") except Exception as e: print("fail: "+str(e)) /<code>
從上面的腳本可以看到,我們分別接受三個參數,那就是 “收件人”, “郵件主題”, “郵件內容”;
下面我們也就針對這三個進行設置;
4、放置到zabbix_server也就是192.168.20.128這臺服務器上:
<code>[root@bogon ~]# cd /home/zabbix/share/zabbix/alertscripts [root@bogon alertscripts]# touch email_qq.py [root@bogon alertscripts]# vim email_qq.py # 將上面的腳本複製進來 # 然後保存退出/<code>
5、測試一下腳本
<code>[root@bogon alertscripts]# python email_qq.py [email protected] "報警郵件" "測試一下"/<code>
會提示出來“success”
之後看一下郵箱:
如上圖我們收到了,發件人是我們腳本中寫的郵箱,主題是“報警郵件”,內容是“測試一下”;
之後一定要注意給這個腳本添加可執行權限:
<code>[root@bogon alertscripts]# chmod +x email_qq.py [root@bogon alertscripts]# ll email_qq.py -rwxr-xr-x. 1 root root 656 2月 23 02:01 email_qq.py [root@bogon alertscripts]# /<code>
6、報警媒介類型
管理 --> 報警媒介類型
先把自帶的三個報警媒介給禁用掉:
如下圖所示:
點擊右上角 “創建媒體類型”
配置如下信息:
PS:在這裡我們要注意,為什麼添加了三個“腳本參數”,因為我們的腳本需要三個參數輸入,故而進行如下配置:
{ALERT.SENDTO} :收件人
{ALERT.SUBJECT} :郵件主題
{ALERT.MESSAGE} :郵件內容
而後點擊 “添加” 按鈕;
7、用戶信息配置
管理 --> 用戶
給想被接受到郵件的人配置郵箱地址:
next:
next:
配置成如下配置:
PS:具體信息要結合個人實際情況來寫哈;
個人只接受“一般嚴重”、“嚴重”、“災難”這三種類型的報警,別的認為沒必要發送郵件。
而後點擊 “添加” 按鈕,如下圖:
之後點擊 “更新” 按鈕:
8、配置觸發器動作
配置 --> 動作
右上角的“創建動作”
在新界面中輸入名字:
而後點擊此界面中的“操作”按鈕,進行配置
next:
next:
PS:結合個人實際,進行如下配置:
next:
界面如下之後,點擊 “恢復操作” :
這裡我們一般只用簡單配置一個參數,界面如下:
操作類型 --> 添加:
而後點擊 “添加” 按鈕,如下圖所示:
之後會自動返回如下界面:
發現剛才添加的已經成功了;
9、關閉192.168.20.129的tomcat對應的8080端口:
<code>[root@jier ~]# cd /home/tomcat_8080 [root@jier tomcat_8080]# ls bin BUILDING.txt conf CONTRIBUTING.md lib LICENSE logs NOTICE README.md RELEASE-NOTES RUNNING.txt temp webapps work [root@jier tomcat_8080]# ./bin/shutdown.sh [root@jier tomcat_8080]# ps -ef | grep 8080 root 5733 5573 0 01:50 pts/2 00:00:00 grep --color=auto 8080 [root@jier tomcat_8080]# /<code>
10、查看下zabbix儀表板主界面,看一下是否監測8080端口失敗了:
已經監測到了失敗,如上圖:
我們可以看到他提示的是郵件已經發送成功:
此時我們去郵箱裡面看一下,是否已經收到報警郵件了:
已經收到郵件了;
11、恢復192.168.20.129的8080端口,再看下有什麼變化:
報警提示沒有了:
看下郵箱,是否有對應的恢復郵件:
恭喜,已經成功的監控了8080端口,且根據存活狀態發送對應的郵件,本節到此結束。
繼續加油~~~
下一小節說一下如何實現微信報警~~~