zabbix的搭建及操做(4)實現郵件,釘釘,微信報警

實現郵件報警

網頁版郵箱中開啓 POP3/SMTP/IMAP

 

生成受權碼並記錄

 

 

Server端安裝配置郵件服務器

  一、Yum安裝郵件服務器java

yum -y install mailx dos2unix
mailx -V

  二、 編輯郵件配置python

vim /etc/mail.rc
set bsdcompat
set from=S13467005509@163.com smtp=smtp.163.com
set smtp-auth-user=S13467005509@163.com smtp-auth-password=上面生成的受權碼
set smtp-auth=login

  三、測試是否有效web

echo "blingbling" | mail -s "test mail" S13467005509@163.com

  郵箱中查看結果json

  四、引用郵件腳本vim

vim /usr/local/zabbix/etc/zabbix_server.conf
AlerScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts #結尾插入
vim /usr/local/zabbix/share/zabbix/alertscripts/mail.sh
#!/bin/bash
#export.UTF-8
bt=$2  #定義發件標題和收件人
sjr=$1
FILE=/tmp/mailtmp.txt  #定義文件路徑
echo "$3" >$FILE
/usr/bin/dos2unix -k $FILE  #使用 dos2unix 命令轉換字符,避免收到郵件不顯示正常郵件內容而出現 ATT00001.bin 的錯誤;
/bin/mail -s "$bt" "$sjr" <$FILE  #執行郵件發送命令

  五、增長權限並測試api

chmod 777 /usr/local/zabbix/share/zabbix/alertscripts/mail.sh
chown zabbix.zabbix /usr/local/zabbix/share/zabbix/alertscripts/mail.sh
touch /tmp/mailtmp.txt
chmod 777 /tmp/mailtmp.txt
chown zabbix.zabbix /tmp/mailtmp.txt
sh /usr/local/zabbix/share/zabbix/alertscripts/mail.sh S13467005509@qq.com "blingbling" "bingbing"    #前者標題,後者內容

 

 

實現釘釘報警

註冊企業版釘釘並進入

釘釘中新建自定義機器人

記錄所需webhook

 

server端 添加釘釘消息發送腳本

  一、下載相關依賴bash

yum -y install python-pip
pip -V pip install requests

  二、添加腳本及權限服務器

vim /usr/local/zabbix/share/zabbix/alertscripts/Email.dingding.py
#!/usr/bin/env python
#coding:utf-8
#zabbix  釘釘報警
import requests,json,sys,os,datetime
webhook="https://oapi.dingtalk.com/robot/send?access_token=4b974339e84a3dfba612a4dae75461797f036566df6c558e47c35ce6bbc28ded"
user=sys.argv[1]
text=sys.argv[3]
data={
    "msgtype": "text",
    "text": {
    "content": text
    },
    "at": {
        "atMobiles": [
            user
        ],
        "isAtAll": False
    }
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/tmp/zabbix_dingding.log"):
    f=open("/tmp/zabbix_dingding.log","a+")
else:
    f=open("/tmp/zabbix_dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
    f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+" 發 送 成 功"+"\n"+str(text))
    f.close()
else:
    f.write("\n"+str(datetime.datetime.now()) + " " + str(user) + " " + " 發送失敗" +"\n" + str(text))
    f.close()
chmod +x /usr/local/zabbix/share/zabbix/alertscripts/Email.dingding.py

  三、測試微信

python /usr/local/zabbix/share/zabbix/alertscripts/Email.dingding.py 13467005509 test zabbix」blingbling「  #前者腳本類型,zabbix 機器人關鍵字 後者內容

 

 

實現微信報警

註冊企業版微信並登錄網頁後臺

  一、個人企業中記錄企業IDapp

添加告警應用

記錄Agenttid及Secret

添加部門

  一、添加子部門

   二、移入用戶

   三、記錄部門ID

server端 添加告警腳本

  一、編寫腳本並加權限

vim /usr/local/zabbix/share/zabbix/alertscripts/Email.weixin.sh
#!/bin/bash
CorpID='ww9820802e5b147bd3'        #個人企業下面的CorpID
Secret='yxPTWR0c7ymKcmxIy0IqjkwQ-h7PnrGme_IF4nknYs4'           #建立的應用那有Secret
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
Token=$(/usr/bin/curl -s -G $GURL |awk -F\": '{print $4}' |awk -F\" '{print $2}')
#echo $Token
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token"
 
function body(){
        local int agentid=1000003   #改成AgentId 在建立的應用那裏看
        local UserID="SunLongFei"             #發送的用戶位於$1的字符串
        local PartyID=4            #第一步看的通信錄中的部門ID
        local Msg=$(echo "$@" | cut -d" " -f3-)
        printf '{\n'
        printf '\t"touser": "'"$UserID"\"",\n"
        printf '\t"toparty": "'"$PartyID"\"",\n"
        printf '\t"msgtype": "text",\n'
        printf '\t"agentid": "'"$agentid"\"",\n"
        printf '\t"text": {\n'
        printf '\t\t"content": "'"$Msg"\""\n"
        printf '\t},\n'
        printf '\t"safe":"0"\n'
        printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
chmod +x /usr/local/zabbix/share/zabbix/alertscripts/Email.weixin.sh

   二、測試

sh /usr/local/zabbix/share/zabbix/alertscripts/Email.weixin.sh  blingbling

web端添加郵件,釘釘,微信相關告警信息

  一、管理 > 報警媒介類型 > 建立

   二、添加相關告警

      郵件

   輸入建立的報警媒介類型的名稱,指定類型爲腳本的方式,而且輸入 zabbix_server 端/usr/local/zabbix/share/zabbix/alertscripts 目錄下的腳本名稱,確保腳本的歸屬是 zabbix,而且腳本的權限是 777,下邊設置腳本參數,也就是發送郵件,微信,釘釘的語法:腳本   收件人 標題 內容,必須嚴格按照此標準填寫;
 
$1 {ALERT.SENDTO}
$2 {ALERT.SUBJECT}
$3 {ALERT.MESSAGE}

 

 

       微信

 

 

       釘釘

   三、管理 > 用戶 > 點擊Admin

   四、報警媒介 > 添加類型收件人

       郵件(下方改成郵件警告

       微信

       釘釘

   五、成功後點擊更新

   六、配置 > 動做 > 建立動做

   七、動做名稱建議英文

   八、三者添加的操做及發送到的用戶一模一樣,若有須要,另自行修改

警告模版
服務器:{HOST.NAME}發生: {TRIGGER.NAME}故障!
{ 
告警主機:{HOST.NAME} 
告警地址:{HOST.IP} 
監控項目:{ITEM.NAME} 
監控取值:{ITEM.LASTVALUE} 
告警等級:{TRIGGER.SEVERITY} 
當前狀態:{TRIGGER.STATUS} 
告警信息:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME} 
事件 ID:{EVENT.ID} 
}

 

 

恢復操做模版
服務器:{HOST.NAME}: {TRIGGER.NAME}已恢復!
{
告警主機:{HOST.NAME}
告警地址:{HOST.IP}
監控項目:{ITEM.NAME}
監控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
當前狀態:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
恢 復 時 間 :{EVENT.RECOVERY.DATE}
{EVENT.RECOVERY.TIME}
持續時間:{EVENT.AGE}
事件 ID:{EVENT.ID}
}

  添加用戶後點擊下方添加如上下圖所示

確認操做模版
服務器:{HOST.NAME}: 報警確認
{
確認人:{USER.FULLNAME}
時間:{ACK.DATE} {ACK.TIME}
確認信息以下:
"{ACK.MESSAGE}"
問題服務器 IP:{HOSTNAME1}
問題 ID:{EVENT.ID}
當前的問題是: {TRIGGER.NAME}
}

 

 完成效果圖

測試三者報警可用性

cd /boot/
dd if=/dev/zero of=test bs=1M count=1800 

 

 

 

 

 

恢復後繼續查看

rm -rf test

 

 

 至此搭建測試完成

相關文章
相關標籤/搜索