Zabbix がエンタープライズ WeChat アラームを実装
1. Enterprise WeChat のモバイル版をダウンロードしてインストールします
。 2. アカウントを登録して会社を作成し、従業員を会社に追加します。
3. 私の会社を検索 -> 会社 ID を記録します: ww1d1845f4b25a12fb
4. 会社の下に部門を作成し、部門 ID を記録します: 3
5. アプリケーションを作成し、アプリケーション ID とシークレット (ID: 1000003、シークレット: ItmpP6TjPNvx6aSlvRCYrkgK5BPWiqTrMf3xhKjUnLo) を記録します。
6. Python スクリプトを作成し、上記で記録した情報を対応する場所に入力します (スクリプトは zabbix-server サーバーにあります)。
[root@zabbix-server ~]# vim /usr/lib/zabbix/alertscripts/wechat.py
スクリプトの内容は次のとおりです。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib,urllib2,json
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
class WeChat(object):
__token_id = ''
# init attribute
def __init__(self,url):
self.__url = url.rstrip('/')
self.__corpid = 'ww1d1845f4b25a12fb'
self.__secret = 'ItmpP6TjPNvx6aSlvRCYrkgK5BPWiqTrMf3xhKjUnLo'
# Get TokenID
def authID(self):
params = {
'corpid':self.__corpid, 'corpsecret':self.__secret}
data = urllib.urlencode(params)
content = self.getToken(data)
try:
self.__token_id = content['access_token']
# print content['access_token']
except KeyError:
raise KeyError
# Establish a connection
def getToken(self,data,url_prefix='/'):
url = self.__url + url_prefix + 'gettoken?'
try:
response = urllib2.Request(url + data)
except KeyError:
raise KeyError
result = urllib2.urlopen(response)
content = json.loads(result.read())
return content
# Get sendmessage url
def postData(self,data,url_prefix='/'):
url = self.__url + url_prefix + 'message/send?access_token=%s' % self.__token_id
request = urllib2.Request(url,data)
try:
result = urllib2.urlopen(request)
except urllib2.HTTPError as e:
if hasattr(e,'reason'):
print 'reason',e.reason
elif hasattr(e,'code'):
print 'code',e.code
return 0
else:
content = json.loads(result.read())
result.close()
return content
# send message
def sendMessage(self,touser,message):
self.authID()
data = json.dumps({
'touser':touser,
'toparty':3,
'msgtype':"text",
'agentid':"1000003",
'text':{
'content':message
},
'safe':"0"
},ensure_ascii=False)
response = self.postData(data)
print response
if __name__ == '__main__':
a = WeChat('https://qyapi.weixin.qq.com/cgi-bin')
a.sendMessage(sys.argv[1],sys.argv[3])
7. 権限を変更する
[root@zabbix-server ~]# chmod 777 /usr/lib/zabbix/alertscripts/wechat.py
[root@zabbix-server ~]# chown zabbix:zabbix /usr/lib/zabbix/alertscripts/wechat.py
8. zabbix サーバー側でスクリプトのテストを実行します。
[root@zabbix-server alertscripts]# /usr/lib/zabbix/alertscripts/wechat.py ZhangYu test hellohellohello
root@zabbix-server alertscripts]# /usr/lib/zabbix/alertscripts/wechat.py ZhangYu www helphelphelp
注: ZhangYu は Enterprise WeChat のユーザー名です。
スクリプトが正常に動作していることを示すメッセージがマシン上で受信されました。
8. zabbix-server の Web インターフェイスでアラーム メディアを作成します。
9. アラーム メディアをユーザーに追加します (新しいユーザーを作成するか、管理者アカウント admin を直接使用できます)。このユーザーにアラーム メディアを関連付けさせます。受信者を追加します
注: タイプ (作成されたアラーム媒体)、受信者 (Enterprise WeChat のユーザー)
10. Enterprise WeChat アラームを実装するアクションを作成します (トリガーがトリガーされたときに、特定のユーザーにアラームを送信します)
アクションの定義: トリガーを使用します。 トリガー、定義ここで使用するのは、nginx の実行状況を監視するために以前に作成したトリガーです。
操作の定義: アクションがトリガーされると、設定された操作が実行されます
。送信されるメッセージの内容:
デフォルトの受信者: Fault {TRIGGER.STATUS}、サーバー: {HOSTNAME1} 発生回数: {TRIGGER.NAME} Fault!
デフォルトのメッセージ:
アラームホスト: {HOSTNAME1}
アラーム時刻: {EVENT.DATE} {EVENT.TIME}
アラームレベル: {TRIGGER.SEVERITY}
アラーム情報: {TRIGGER.NAME}
アラーム項目: {TRIGGER.KEY1}
問題の詳細: {ITEM.NAME} :{ITEM.VALUE}
現在のステータス:{TRIGGER.STATUS}:{ITEM.VALUE1}
イベント ID:{EVENT.ID}
11. 検証
トリガーがトリガーされると、Enterprise WeChat はアラーム メッセージを受信します