zabbix 企微告警脚本
alter_devops.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import sys
import json
from collections import OrderedDict as ordict
url = 'http://wechat-online.ez.me/robot/send?access_token=6dd925af50e0e3937a7124cb34cf9bb6#'
def send_msg(info,user):
users = user.split(",")
header = {
'Content-Type': 'application/json'
}
msg = {
"msgtype": "text",
"text": {
"content": "{}".format(info)
},
}
requests.post(url=url,data=json.dumps(msg),headers=header)
if __name__ == '__main__':
user = sys.argv[1]
info = sys.argv[3].strip('"')
send_msg(info,user)
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
alert_devops.sh
#!/bin/bash
python /etc/zabbix/alert.d/alter_devops.py "$1" "$2" "$3"
zabbix告警动作
告警
STATUS: {TRIGGER.STATUS}
NAME: {EVENT.NAME}
{ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}
TIME: {EVENT.DATE} {EVENT.TIME} ID: Z{TRIGGER.ID}
恢复
{TRIGGER.STATUS}: {EVENT.NAME}
Trigger status: {TRIGGER.STATUS}
Trigger name: {EVENT.NAME}
Trigger time: {EVENT.DATE} {EVENT.TIME}
{ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}
zabbix 自动发现
Action: Auto registration
Host name: {HOST.HOST}
Host IP: {HOST.IP}
Auto registration: {HOST.HOST}
Action: Auto registration
Host name: {HOST.HOST}
Host IP: {HOST.IP}
zabbix企业微信群机器人
企微群机器人告警脚本 wxWork-robot.py
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import sys
import json
reload(sys)
sys.setdefaultencoding('utf-8')
class WXBase(object):
def __init__(self,message=None):
self.message = message
#self.url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=72deb7d9-6d37-485e-bdb5-c1a687dd0a32"
self.url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=ce8ba5d3-f0f7-4ac7-a6e3-2e1c1fe0846d"
def message_text(self):
data = {
"msgtype": "text",
"text": {
"content": self.message
}
}
return json.dumps(data)
def post_text_message(self):
ret = requests.post(self.url,data=self.message_text())
return ret
def post_message(message):
try:
a = WXBase(message=message)
a.post_text_message()
except Exception as e:
print e
if __name__ == '__main__':
user = str(sys.argv[1])
subject = str(sys.argv[2])
message = str(sys.argv[3])
post_message(message)
邮件告警mail.py
#!/usr/bin/env python
import smtplib, sys
mail_user='ops_monitor@light.com'
mail_password='2Ps=n~9|8XUfxv1qaz'
smtp_server='smtp.exmail.qq.com'
smtp_port=25
msg='From:LITBOPS@light.com\r\nTo:' + sys.argv[1] + '\r\nSubject:' + sys.argv[2]
sendmsg=msg + '\r\n\r\n' + sys.argv[3]
server = smtplib.SMTP()
server.connect(smtp_server,smtp_port)
server.login(mail_user,mail_password)
server.sendmail(mail_user,sys.argv[1],sendmsg)
企业微信应用告警通知
https://work.weixin.qq.com/wework_admin/frame
#!/usr/bin/python
# _*_ coding: utf-8 _*_
import urllib,urllib2
import json
import sys
import simplejson
reload(sys)
sys.setdefaultencoding('utf-8')
def gettoken(corpid,corpsecret):
gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
print gettoken_url
try:
token_file = urllib2.urlopen(gettoken_url)
except urllib2.HTTPError as e:
print e.code
print e.read().decode("utf8")
sys.exit()
token_data = token_file.read().decode('utf-8')
token_json = json.loads(token_data)
token_json.keys()
token = token_json['access_token']
return token
def senddata(access_token,user,subject,content):
send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
send_values = {
"touser":user,
#"toparty":"331",
"msgtype":"text",
"agentid":"38",
"text":{
"content":subject + '\n' + content
},
"safe":"0"
}
# send_data = json.dumps(send_values, ensure_ascii=False)
send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8')
send_request = urllib2.Request(send_url, send_data)
response = json.loads(urllib2.urlopen(send_request).read())
print str(response)
if __name__ == '__main__':
user = str(sys.argv[1])
subject = str(sys.argv[2])
content = str(sys.argv[3])
corpid = 'wx12#ab7d38f5bf16b682'
corpsecret = 'CD8#12#YwFhQJCA4xrAL39sSw2UBGcZtK_qaUeuK-a5VxfZVX39s8tHrsrCJJpVR08_A!'
accesstoken = gettoken(corpid,corpsecret)
senddata(accesstoken,user,subject,content)