zabbix 企微告警脚本

alter_devops.py

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import requests
  4. import sys
  5. import json
  6. from collections import OrderedDict as ordict
  7. #wechat
  8. url = 'http://wechat-online.ez.me/robot/send?access_token=6dd925af50e0e3937a7124cb34cf9bb6#'
  9. def send_msg(info,user):
  10. users = user.split(",")
  11. header = {
  12. 'Content-Type': 'application/json'
  13. }
  14. msg = {
  15. "msgtype": "text",
  16. "text": {
  17. "content": "{}".format(info)
  18. },
  19. }
  20. requests.post(url=url,data=json.dumps(msg),headers=header)
  21. if __name__ == '__main__':
  22. user = sys.argv[1]
  23. info = sys.argv[3].strip('"')
  24. send_msg(info,user)

image.png
image.png
image.png

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

alert_devops.sh

#!/bin/bash

python /etc/zabbix/alert.d/alter_devops.py "$1" "$2" "$3"

zabbix告警动作

image.png

image.png

告警

image.png

STATUS: {TRIGGER.STATUS}
NAME: {EVENT.NAME}
{ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}
TIME: {EVENT.DATE} {EVENT.TIME}  ID: Z{TRIGGER.ID}

恢复

image.png

{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 自动发现

image.png
image.png
image.png

Action: Auto registration
Host name: {HOST.HOST}
Host IP: {HOST.IP}

image.png

image.png
image.png

Auto registration: {HOST.HOST}

Action: Auto registration
Host name: {HOST.HOST}
Host IP: {HOST.IP}

zabbix企业微信群机器人

企微群机器人告警脚本 wxWork-robot.py

image.png

{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

image.png

#!/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

image.png

image.png

image.png


#!/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)