1,設置報警類型python
二、設置用戶及媒體類型web
send_to 就是zabbix輸出的$1,腳本中藥發給誰shell
三、設置觸發器和動做json
觸發器 test.temp_conn (本身寫一個簡單的key作測試)vim
四、設置觸發器,閾值爲最後一次獲取的值大於1api
五、設置動做服務器
關聯觸發器微信
vim zabbix.server.conf. 修改腳本位置curl
AlertScriptsPath=/opt/svr/zabbix2.4.5/share/zabbix/alertscripts/weixin_media/bin/
設置web端的keypost
UserParameter=test.temp_conn,ls -l /tmp/test | grep '^-' | wc -l
zabbix 2.4中建議使用shell腳本發送信息,由於2.4中不能自定義發送信息的格式
CropID="wx5a109e09d5044152" Secret="0fiTLHoU0SBtNcBm4huzPILDt0QxjhdsVcnNBPVw9lVCR3vGVf7wf2p4HDTiilaQ" GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" 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=1 #企業號中的應用id local UserID=$1 #部門成員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
#! /usr/bin/env python3 import requests import json import logging import sys, os print(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # print(sys.path) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) print(BASE_DIR) class MyLogger: def __init__(self, msg): self.logger = self.initlog() self.msg = msg def initlog(self): logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) fh = logging.FileHandler(BASE_DIR + '/log/' + 'char.log') fh.setLevel(logging.DEBUG) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') fh.setFormatter(formatter) logger.addHandler(fh) return logger def savelog(self): self.logger.debug(self.msg) class ZabbixSendMail(): def __init__(self,sys_argv): self.argv = sys_argv self.url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken" self.value = { 'corpid':"wx5a109e09d5044152", 'corpsecret' : "0fiTLHoU0SBtNcBm4huzPILDt0QxjhdsVcnNBPVw9lVCR3vGVf7wf2p4HDTiilaQ" } self.sendmail_url = "https://qyapi.weixin.qq.com/cgi-bin/message/send" self.access_resprons = requests.get(self.url, params=self.value) # self.token = json.loads(self.access_resprons.text)['access_token'] self.respons = self.access_resprons.text #獲取返回結果 self.log = MyLogger("action") self.log.savelog() def get_token(self): ret = json.loads(self.respons) return ret["access_token"] def send_mail(self): try: send_mail_url = self.sendmail_url + "?access_token=%s"% self.get_token() #print(send_mail_url) msg = "".join(self.argv[2:]) payload = """{"touser": "%s", "msgtype": "text", "agentid": 1, "text":{"content": "內容:%s"},"safe":0}""" % (self.argv[0], msg) dic_payload = eval(payload) # ret = requests.post(send_mail_url, data=json.dumps(payload, ensure_ascii=False)) ret = requests.post(send_mail_url, data=json.dumps(dic_payload, ensure_ascii=False).encode('UTF-8')) #發送中文時就須要ensure_ascii與.encode('utf-8')這兩個參數配合才能夠不然會報錯 log = MyLogger(ret.text) log.savelog() except Exception as e: # print(e) log = MyLogger(e) log.savelog() if __name__ == "__main__": send = ZabbixSendMail(sys.argv[1:]) send.send_mail()