前面咱們介紹了zabbix的基本linux和window及SNMP流量的簡單監控,咱們知道做爲運維人員,須要7x24小時待命,可是咱們不可能時時刻刻都坐在電腦旁邊查看監控上的各個主機狀態,因此咱們須要配置一個郵件報警,也是郵件報警。html
centos7.4linux
zabbix添加linux和windows監控主機,且工做狀態正常。web
首先你得安裝發送郵件的工具mailxvim
yum -y install mailx
一、配置mail,這個配置文件應該放到/etc/下面,安裝完成後它會有個默認的mail.rc文件,備份它後新建一個相同名字的文件,把下面的內容寫入就行。windows
注意:centos
一、這裏新開通的126郵箱,除了須要開通SMTP服務外,還須要開通受權碼登陸,這裏寫的再也不是登陸密碼,而是受權碼。bash
二、多是由於126郵箱的問題,這裏確認申請成功後,在別的電腦上嘗試登陸是否正常。服務器
三、發送郵箱smtp服務器地址,新開的郵箱地址是smtp.126.com。運維
若是測試中報535錯誤,請仔細檢查以上三條注意事項。工具
set bsdcompat set from=發送郵箱帳號(這裏必須寫全了,別忘了@後面) set smtp=smtp.163.com #發送郵箱smtp服務器地址(必須開啓smtp服務) set smtp-auth-user=發送郵箱帳號(這裏只須要寫全拼就行。不須要@後面字符) set smtp-auth-password=發送郵箱帳號的密碼 set smtp-auth=login #登陸
二、測試(我這裏是去163郵箱申請帳戶,開啓smtp服務,發送給個人我的郵箱)
echo "test" | mail -s 'test linux' 接收郵件的郵箱地址
二、編寫郵件發送腳本sendmail.sh(內容以下下)
#cd /usr/local/zabbix/share/zabbix/alertscripts/ #chown zabbix.zabbix /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh #chmod 755 /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh
cat 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_server.conf文件,讓zabbix執行sendmail這個可執行文件
vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
四、再次測試
#su zabbix
#/usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh 接收郵件的郵箱地址 "test linux" "test"
注意:
切換到zabbix帳戶測試報警郵件很重要,這裏若是提示如下錯誤,除了要給/tmp/sendmail.log這個文件執行權限外,還須要給屬主屬組的權限。這裏經過不了,後面也是白瞎。
[zabbix@localhost root]$ /usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh leihaidong@gaosiedu.com "test zabbix No1" "test"
/usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh: line 4: /tmp/sendmail.log: Permission denied
一、管理 ---- 報警媒介類型 ----- 建立媒介類型。
二、建立媒體類型
{ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
三、管理 ---- 用戶 ----- 選擇admin用戶。(本身建立一個用戶也能夠),這裏你要是選擇admin的話,你全部的機器只有有故障就會報警,很煩的,由於有些機器是不用郵件報警的話,就尷尬了,因此我這裏不選擇admin,我這裏是新建一個單獨的用戶組。
如何實現部分郵件報警呢,首先咱們須要建立一個用戶羣組。
我這裏提早建立了一個管理員的組,把管理員加到這個組。
這裏須要咱們把郵件報警的組都加到這個組裏面,被加到這個組裏的組,纔會報警。
下面咱們配置管理員這個用戶的郵件報警。
管理員的配置。
我這裏是已經建立好的報警媒介。
具體內容以下。
咱們看一下會報警的羣組。
四、上面咱們建立了用戶和組,也建立了回報警的哪些羣組。下面咱們來看看,具體的報警和恢復後的郵件內容配置方法。下面這條是我已經建立好的報警。
咱們來看看他的具體寫法。首先是名稱,添加條件,只須要在觸發器名稱後面的空白框鍵入is unreachable for 5 minutes,而後點擊添加就行。
。。。。。。。。。。。。。。。。。。。###########################。。。。。。。。。。。。。。。。。。。。。。。。。。
注意,注意,注意:
這個is .....是什麼意思呢?就是說只要報警裏面出現這幾個字母,就會發郵件報警,這裏有個坑,就是我icmp郵件報警,由於默認loss是警告,因此它不會顯示在儀表盤裏面,因此咱們須要看圖形,這樣很麻煩,因此咱們須要將icmpping loss這個觸發器改爲通常嚴重,這樣就會出如今儀表盤裏面了,可是,可是,可是,它仍是不短信報警,那怎麼辦呢?咱們ping監控一個地址的時候,報警出如今儀表盤裏面的話,會提示你Ping loss is too high on這句話,這個時候,咱們要將這句話加到動做裏面。意思是隻要儀表盤裏面報這句英文的時候,就會觸發郵件(短信)報警。
同理,之後你想讓出現哪一個報警項,郵件報警的話,就在這裏把那個報警信息加到這裏就行。
。。。。。。。。。。。。。。。。。。。###########################。。。。。。。。。。。。。。。。。。。。。。。。。。
下面纔是最關鍵的配置,持續時間咱們改爲60秒,也就是說1分鐘報警一次,至於讓它一直60秒間隔報警的話,這裏能夠把步驟改爲1-0,0表明若是故障不恢復,就一直報下去。
默認接收人 故障{TRIGGER.STATUS},服務器:{HOSTNAME1}發生: {TRIGGER.NAME}故障! 告警主機IP地址:{HOST.CONN} 告警主機:{HOSTNAME1} 告警時間:{EVENT.DATE} {EVENT.TIME} 告警等級:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警項目:{TRIGGER.KEY1} 問題詳情:{ITEM.NAME}:{ITEM.VALUE} 當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
上面咱們只是配置了出現故障時候報警的主題,信息等消息,下面咱們看當故障恢復後發給咱們的郵件。
默認接收人 恢復{TRIGGER.STATUS}, 服務器:{HOSTNAME1}: {TRIGGER.NAME}已恢復! 告警主機IP地址:{HOST.CONN} 告警主機:{HOSTNAME1} 告警時間:{EVENT.DATE} {EVENT.TIME} 告警等級:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警項目:{TRIGGER.KEY1} 問題詳情:{ITEM.NAME}:{ITEM.VALUE} 當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
報警郵件
恢復郵件:
注意:
一、咱們上面說的郵件報警,可是須要短信報警的話,就簡單了,咱們申請一個移動139郵箱,而後接收報警郵件地址寫成移動139郵箱,這樣的話有報警手機也能收到短信。
二、只有狀態時通常嚴重(含),纔會在儀表盤裏面顯示爲橘黃色,通常狀況下短信報警設置報警級別爲通常嚴重(含)。
三、fping須要支持報警級別須要將icmpping loss狀態更改成通常嚴重。
參考地址:https://www.cnblogs.com/zoulongbin/p/6420239.html
注意:
若是你想用某個郵箱給你的郵箱發郵件的話,上面這麼搞太費經,好比本文將的用126給咱們的139和我的郵箱發報警短信,沒問題。若是你想用不想用126或者163(smtp服務器的郵件帳戶)給你發郵件的話,能夠考慮下面的方法。
一、你不用如上面說的替換原來/etc/mail.rc文件,默認就行。
二、你不用像第一步那樣建立一個"建立媒介類型",直接修改自帶的Email這個媒介就行,剩下的方法同樣。
三、須要注意的是你須要給報警這件事兒,建立一個用戶組合用戶,讓它對哪些主機羣組有權限,都是在用戶羣組裏面設置。