Zabbix之微信企業號平臺報警

                查看微信訂閱號監控請點擊


一、註冊微信企業號

    因爲訂閱號的發送數量有限,很多時候超額發送之後會無法發送,現在我們申請企業號,因爲企業號可以無限制的發送報警信息。

   打開註冊地址https://qy.weixin.qq.com/

1、填寫賬號密碼信息

wKiom1j0eJDwJZe-AACORP-_FXg249.jpg

2、郵箱激活

wKioL1j0eM7C7-lMAABpfcEd3GM333.jpg


wKiom1j0eM6guZwbAAEHOxr-eUw226.jpg

3、選擇企業號

wKiom1j0ePqCnkaEAAEiJ30emfk131.jpg

4、填寫相關信息,註冊成功

wKiom1j0eRfgg8nmAAD9fsCweaI468.jpg


二、配置企業號

1、通訊錄添加企業成員
    我們要提前把成員信息添加進組織部門,必填項+手機號或者微信號,這樣別人掃描二維碼的時候才能成功關注企業號。

   注意:這裏有兩個我們要用到信息,一個組織部門的ID,一個部門成員的賬號(賬號是自己手動指定的,不同於微信號,最好是字母加數字)

wKiom1j0lV-D_2ZmAAAdNelLeXs712.jpg

    查看部門id,修改部門即可看到。

wKiom1j0lX6gxDbUAAAvWFW1Cdk712.jpg

   在部門添加新成員。

wKioL1j0fwXRgQ_fAACHCSM7H14812.jpg

    人員爲掃描之前是?,掃描添加之後就正常了。

wKiom1j0fwbikQwMAACXz1Xpi5A615.jpg


2、應用中心創建應用

    我們要在這裏創建應用,因爲要通過應用發送消息給部門成員,可以創建多個,不同的業務通過不同的應用發送出去,我這裏創建的是運維部,這裏要記住一個值,應用ID,後面的發送腳本會用到。

wKioL1j0g-ChlH4ZAABlFqQ8R0U367.jpg


wKioL1j0g_vR-7WYAABn19DdX9w404.jpg


wKioL1j0hEfRRxtBAABJla3rVNE149.jpg

3、給部門設置管理組
    設置--->功能設置---->權限管理---->新建管理組,按照相應的信息設定好應用權限以及通訊錄權限,裏面的CorpID和Secret是我們後面腳本需要的。

wKioL1j0hhqiB6t3AACZxfiEw0o785.jpg

三、調用微信接口

    調用微信接口需要一個調用接口的憑證:access_token,通過CropID 、Secret才能獲取到access_token,但是獲取到的token有效期爲兩分鐘。

    微信企業號接口調試工具傳送門:http://qydev.weixin.qq.com/debug。

    微信接口消息類型及格式。

http://qydev.weixin.qq.com/wiki/index.php?title=%E6%B6%88%E6%81%AF%E7%B1%BB%E5%9E%8B%E5%8F%8A%E6%95%B0%E6%8D%AE%E6%A0%BC%E5%BC%8F

wKiom1kME8jzDUD1AABVgGFX408811.jpgwKioL1kME8nzKmrvAAD7tYzgfJI429.jpg

1、編輯微信Python腳本

# cat /usr/local/zabbix/alertscripts/yunwei.py
#!/usr/bin/python
#coding:utf-8

import urllib2
import json
import sys
def getMsg(zabbix_msg):
    reload(sys)
    sys.setdefaultencoding('utf8')
    msg = ' '.join(zabbix_msg)
    msg = msg.split('#')
    mes="\n".join(msg)
    return "\n".join(msg)


if __name__ == '__main__':
    #微信公衆號上應用的CropID和Secret
    CropID='wx8d46d36104988993'
    Secret='QCjzy2lH2ZB7MUG6uowChyChPssfsf6EB0X0QjofRRt0JePGezTVR4saIw3Ezznh'
 
    #獲取access_token
    GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s" % (CropID,Secret)
    result=urllib2.urlopen(urllib2.Request(GURL)).read()
    dict_result = json.loads(result)
    dict_result.keys()
    Gtoken = dict_result['access_token']
    
    #生成通過post請求發送消息的url
    PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % (Gtoken)
    
    AppID=4                        #企業號中的應用id
#   UserID=2                       #部門成員id,zabbix中定義的微信接收者
    PartyID=2                      #部門id,定義了範圍,組內成員都可接收到消息

    #生成post請求信息
    post_data = {}
    news = {}
    articles = {}
    articles['description'] = getMsg(sys.argv[3:])
    articles['title'] = getMsg(sys.argv[2:3])
    news['articles'] = [articles]

    #post_data['touser'] = UserID
    post_data['toparty'] = PartyID
    post_data['msgtype'] = 'news'
    post_data['agentid'] = AppID
    post_data['news'] = news
    #post_data['safe'] = '0'
    #由於字典格式不能被識別,需要轉換成json然後在作post請求
    #注:如果要發送的消息內容有中文的話,第三個參數一點要設爲False
    json_post_data = json.dumps(post_data,False,False)
    #通過urllib2.urlopen()方法發送post請求
    request_post = urllib2.urlopen(PURL, json_post_data)
    #read()方法查看請求的返回結果
    print request_post.read()

2、配置腳本權限

chown zabbix.zabbix /usr/local/zabbix/alertscripts/yunwei.py
chmod +x /usr/local/zabbix/alertscripts/yunwei.py

3、測試腳本

    由腳本可以看出,我們不但可以使用zabbix報警,也可以使用任何shell報警。

[root@monitor alertscripts]# python /usr/local/zabbix/alertscripts/yunwei.py test
{"errcode":0,"errmsg":"ok"}

wKiom1j0lEzCPBcrAAFDY8nYGSY313.png

    可以看到可以正常的調用接口,我們接着配置zabbix。


四、配置Zabbix

1、創建媒介

wKiom1kvxUqSPpDgAACdP5OrI0o393.jpg

2、給用戶增加媒介

wKiom1j0l4jSzjKvAADFwjre0Js512.jpg

wKioL1j0l3mBG2AOAABXnQjIlKU741.jpg

3、創建觸發器

wKiom1kvxcmjGNxRAAEvMDhobnQ793.jpg

======================================================
服務器:{HOST.NAME}發生: {TRIGGER.NAME}故障!

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

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

wKioL1j0mm3D-gn8AAD8l9F3oZg284.jpg

    Send only to選擇我們設定的媒介。

wKiom1j0mm7QxQkxAAFY3oPrZZM517.jpg

3、測試

wKiom1kvxf_i2KFlAANZEkAUdPU679.png



附錄:Shell腳本

1、編輯微信Shell腳本

    上面是Python的腳本,下面我貼一下Shell的腳本,其他的配置信息都是一樣的,使用其中一個就可以了。

# cat /usr/local/zabbix/alertscripts/yunwei.sh
#!/bin/bash
#########################################################################
# File Name: yunwei_bash.sh
# Author: wzlinux
# Email: [email protected]
# Created Time: 2017.4.17
#########################################################################
# Functions: send messages to wechat app
# set variables
CropID='wx8d46d36104988993'
Secret='QCjzy2lH2ZB7MUG6uowChyChPsOQwsdf0X0QjofRRt0JePGezTVR4saIw3Ezznh'
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
#get acccess_token
Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $4}')
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
#
function body() {
local int AppID=4                        #企業號中的應用id
#local UserID="eric"                     #部門成員id,zabbix中定義的微信接收者
local PartyID=2                          #部門id,定義了範圍,組內成員都可接收到消息
local Msg=$(echo "$@" | cut -d" " -f3-)  #過濾出zabbix傳遞的第三個參數
printf '{\n'
printf '\t"touser": "'"$UserID"\"",\n"
printf '\t"toparty": "'"$PartyID"\"",\n"
printf '\t"msgtype": "text",\n'
printf '\t"agentid": "'" $AppID "\"",\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
chown zabbix.zabbix /usr/local/zabbix/alertscripts/yunwei.sh
chmod +x /usr/local/zabbix/alertscripts/yunwei.sh

5、測試

# bash yunwei.sh test Hello.World!

{"errcode":0,"errmsg":"ok"}

這裏我不再進行截圖了,我這邊測試是通過的





                               wKioL1j0nZTDtjQ-AACmb4CVfN4005.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章