Zabbix_监控报警无法通过微信发送信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zabbix_监控报警无法通过微信发送信息相关的知识,希望对你有一定的参考价值。

(九)Zabbix监控报警无法通过微信发送信息

 

背景:通过脚本测试脚本正常发送信息,zabbix服务器web端也能够正常报警并执行动作。

思路:查看日志

一、通过动作日志查看错误信息,分3中情况

技术分享图片

1、第一种情况脚本无参数

(1)下图是web端的动作日志报警

技术分享图片

(2)下图是脚本测试报警

技术分享图片

根据上2图发现报错的信息一样,这样不难发现是脚本没有添加参数造成的(此脚本也是从网上下载未做相应的更改)

如下脚本内容,供参考:

#!/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":"名称",

        "toparty":"1",

        "msgtype":"text",

        "agentid":"1000002",

        "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 =  'ww917369a0329fb487'

    corpsecret = 'jf5EqJGlQQTQvkdynDrz24vbhlsvQXfVJp9B2vImQKA'

    accesstoken = gettoken(corpid,corpsecret)

    senddata(accesstoken,user,subject,content)

 

2、第二种情况脚本只有一个参数

(1)脚本测试如下:

[[email protected] alertscripts]# ./bjhweixin.py test

Traceback (most recent call last):

  File "./bjhweixin.py", line 51, in <module>

    subject = str(sys.argv[2])

IndexError: list index out of range

3、第三种情况脚本只有二个参数

(1)脚本测试如下:

[[email protected] alertscripts]# ./bjhweixin.py test test

Traceback (most recent call last):

  File "./bjhweixin.py", line 52, in <module>

    content = str(sys.argv[3])

IndexError: list index out of range

二、操作

1、为报警媒介类型添加脚本参数

技术分享图片

三、总结

虽然最后发现解决此问题很简单就是忘了添加脚本参数,但是对初学者还是比较生疏,特别对python语言不是很了解的同学。仅供参考。

 


以上是关于Zabbix_监控报警无法通过微信发送信息的主要内容,如果未能解决你的问题,请参考以下文章

Zabbix之微信企业号平台报警

zabbix告警通知

Zabbix-微信报警

zabbix实现企业微信告警,亲测可用~~

Zabbix--03 邮件报警微信报警

zabbix-05-报警配置