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

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

 

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

思路:查看日志

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

1.png

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

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

2.png

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

3.png

根据上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)脚本测试如下:

[root@localhost 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)脚本测试如下:

[root@localhost 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、为报警媒介类型添加脚本参数

4.png

三、总结

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

 


四、Zabbix 无法执行脚本

前言

笔者在搭建一个zabbix钉钉告警的时候,本地直接运行脚本可以将测试信息发送至钉钉,而当zabbix出现告警的时候怎么也触发不了脚本。

笔者确认告警媒介、用户设置告警以及动作都设置无误。

解决方案

在后来发现是因为权限导致zabbix无法触发脚本。
将脚本加上可执行权限:

[root@ltd alertscripts]# chmod +x zabbix_dingding_script.py
[root@ltd alertscripts]# ll
-rwxr-xr-x 1 root root 672 10月  9 15:26 zabbix_dingding_script.py

如果仍然无法触发脚本,可以直接编辑zabbix_server配置文件以下两项,修改执行脚本的用户:

[root@ltd /root]# vim /etc/zabbix/zabbix_server.conf
……
AllowRoot=1
User=root
……

重启zabbix服务即可。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值