zabbix告警5.0调用python脚本发送告警信息执行不了

想通过zabbix告警的告警脚本实现发送郵件的功能但告警消息中含有中文字符。在python脚本中发邮件时报错。

  • 设置脚本1.py后使用报警媒介的测试功能进行检查。
  • 传输参数如下消息内容包含有中文。

    

分析报错是字符的编码格式错误。


  • 首先打印传输过来的参数获得结果:

    
  • “中文”两个汉字被转换成了"\udce4\udcb8\udcad\udce6\udc96\udc87"。首先確定这个是unicode,经分析这个格式是utf-8编码后的即zabbix告警在调用接口的时候,进行了数据的转换并没有把“中文”两个字直接输出,而是经过叻转换

  • 添加修改编码的语句后,正常:


  1. zabbix告警传入的参数是\u字符串但python3在处理内部声明时,为了精简空间将数据转换成了\x(十六进制),所以需要从\u向\x进行转换但不能直接使用encode(‘utf-8’),会报错

需要添加参数errors='surrogateescape’来屏蔽错误Python 3 中新增的 surrogateescape 则是一种可逆的错误处理机制,利用 Surrogate 码位保存无法解码的字节编码时则将其还原为对应的原始字节。

在zabbix告警报警媒介中能够使用脚夲、邮件、短信去发送告警通知,今天我们就来说一下如何利用python去发送告警通知


脚本的有两点需要注意的是:
1.api_url中使用的是自己测试用的token,那么如果你用你自己的就需要在钉钉上面创建一个机器人;
2.atMobiles中定义的是all,其意味着将@钉钉群里所有人如果你指向单独@某个人的话,鈳以使用手机号的方式填写方式为"",多个的话需要用,分割开格式如下:



那么当我们都配置完成后还需要做什么设置呢,我们需要在web端配置报警媒介:

第一步:打开浏览器进入到zabbix告警的web界面然后找到管理->报警媒介类型


第二步:设置报警媒介名称类型选择脚本,脚本名称選择在脚本目录下一样名字的脚本名脚本参数需要添加以下参数:

第三步:那我们就需要配置动作,当触发器示警度大于等于信息的时候开始报警仅发送到脚本中


然后就可以使用python脚本正常发送告警信息了。

我要回帖

更多关于 zabbix告警 的文章

 

随机推荐