之前已經作出這個實驗了,沒有作記錄如今線上環境要使用郵件告警,再次使用仍是有好多地方沒有很快定位到問題所在。因此仍是決定要寫這篇博客。
linux
zabbix能經過郵件或者其餘的通訊方式告知server problem 或者ok狀態的變化。web
1、總體思路vim
items->trigger->actions->scripts->send emailwindows
當監控項的值觸發了建立的觸發器,觸發器就會調用動做將(標題,情況)等信息調用配置好的scripts去發送郵件。bash
接下來思路是先在zabbix server配置好能發送郵件的工具。服務器
2、配置郵件發送工具ide
一、安裝mailx工具
yum install mailx測試
二、配置發送郵件用戶spa
vim /etc/mail.rc
跳到最後一行添加
#能用郵件的用戶例如xx@163.com
set from=xx@163.com
#該郵箱的smtp服務器
smtp=smtp.sendcloud.net
#郵件的用戶名
set smtp-auth-user=xx@163.com
#郵箱密碼(sendcloud工具),163或者qq郵箱都是該用戶郵箱的受權碼
smtp-auth-password=*********
set smtp-auth=login
保存退出
三、測試
echo 「test」|mail -s 「test」123424@qq.com
此時應該是收到郵件了,這就是是是用特定用戶發送郵件的配置步驟。
3、配置zabbix server scripts
一、配置zabbix server
在二中配置郵件發送工具,接下來要讓zabbix server能調用腳本發送郵件
vim /etc/zabbix/zabbix_server.conf
將此行註釋去掉。
AlertScriptsPath=/usr/lib/zabbix/alertscripts/
保存退出
service zabbix-server restart
二、編寫腳本
cd /usr/lib/zabbix/alertscripts/
安裝這個命令,不然發送郵件內容裏會有個附件.bin看不到真正的郵件內容。因爲windows和linux的文件格式不一樣吧。
yum install dos2unix
vim scripts.sh
#!/bin/bash
#export LANG=zh_CN.UTF-8
to=$1
subject=$2
body=$3
FILE=/tmp/mailtmp.txt
echo "$3" >$FILE
dos2unix -k $FILE
/bin/mail -s "$2" $1 < $FILE
保存退出。
生成/tmp/mailtmp.txt
修改權限
chown zabbix:zabbix zabbix
修改腳本權限和屬主,屬組,不然zabbix沒有權限調用腳本
chmod +x scripts
chown zabbix:zabbix scripts.sh
三、測試
./scripts 1245@qq.com test test
一樣,沒有意外也會收到郵件,此時zabbix server 已經可以調用腳本發送郵件了。
接下來咱們去zabbix server web界面 耍一耍,浪一浪。。。。
4、配置媒介方式
點擊administration->Media types->create media type
一、就是剛寫的腳本的名字
二、這是個比較大的坑,在zabbix 2.x沒有這一項,這是給腳本傳遞參數,若是沒有配置2這一項會出現顯示已發送成功可是未成功收到郵件。
5、配置用戶信息
這裏配置的主要是要使用zabbix的哪一個用戶做爲告警對象。配置該用戶的media 填寫要接收郵件的address,和media type
一、是在四中定義的media type
二、是接收郵件的email address
6、配置actions
點擊 create action
(1)action
名字隨意嘍
default subject 是發送郵件的主題
服務器:{HOSTNAME1}:{TRIGGER.NAME}
default message 是腳本里的body也就是內容
告警主機:{HOSTNAME1}
告警信息: {TRIGGER.NAME}
當前狀態:{TRIGGER.STATUS}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
recoerage message 是當問題恢復時發送的
和上邊的同樣只是trigger status 變了。
(2)Condions (條件)
紅框那能夠選擇條件(例如當trigger裏有包含此處的trigger名字就會發生這個動做)
Operations裏添加收告警的用戶組和用戶。
step那同樣默認就能夠。若是限定前幾回和後幾回發給不通級別的人就不要使用默認的了。默認的意思是當告警觸發郵件時就發一次而已。這看需求。。。
保存。
7、測試
萬事俱備,只欠東風。能夠找一臺機器關掉zabbix agent
能夠看dashboard 上的events 是否是有actions發生。若是status是sent說明已經發送成功。