【语音告警】Zabbix语音播报-报警媒介部分配置-语音报警灯|声光报警器|网络信号灯

阅读说明

本文为博灵语音通知终端与Zabbix报警媒介的配置,对接完成后可以实现Zabbix的声光语音告警,播报效果可以参考
Modbus-博灵语音通知终端与PLC联动告警介绍

对接前需配置好通知终端的IP地址,设备参数参见

其他完整的Zabbix语音播报报警联动参见博文,Zabbix与声光报警灯语音告警语音播报

设备参数

博灵语音通知终端产品参数

旧方案联动无法在Zabbix容器工作下的原因

原始文章的方案中,给Zabbix内置了一个告警程序,当发生告警时执行该脚本,实现与博灵语音通知终端联动的效果。
由于很多场景下使用了容器化安装Zabbix,导致脚本在容器中无法运行。
原因在于Zabbix使用了Alpine Linux发行版,该发行版基于musl库,而告警py脚本打包的可执行文件是依赖于glibc库的,通过ldd命令可以发现缺少很多符号依赖,所以无法执行,故采用新方案对接。

新方案

使用Zabbix报警媒介中的Webhook,并编写JavaScript

  1. 添加报警媒介,配置如下
    Zabbix报警媒介
    脚本内容如下
try {
           Zabbix.Log(4, 'Webhook script value='+value);
           params = JSON.parse(value),
           // 修改Key为报警灯的Key
           key = "1qaz2wsx"
           sign_time = parseInt(new Date().valueOf() / 1000)
           // 这里为博灵通知终端自定义Api的参数,
           // 可以参考https://www.eyegroup.cc/a4_help/md_doc/common_api.html
           sign_data = {
	            "led_style":15,  "color":"[\"#ff00ff\"]", 
	            "led_flag":"[0.03,1]",  "play_time":0,
				"text":params.msg,
				"tone":"000"
			};
           sign_data['token'] = key
           sign_data['time'] = sign_time

			keys = Object.keys(sign_data);
			keys.sort();
			sign_temp = '';
			for (var i in keys){
			    if(keys[i] == 'sign') continue;
			    if(keys[i] == 'time'){
			        sign_temp += 'time' + sign_time;
			        continue;
			    }
			    sign_temp += keys[i] + sign_data[keys[i]];
			}
			Zabbix.Log(4, 'raw str=' + sign_temp);
			Zabbix.Log(4, 'sign str=' + md5(sign_temp));
			sign_data['sign'] = md5(sign_temp);
			delete sign_data['token']
           req = new CurlHttpRequest(),
           req.AddHeader('Content-Type: application/x-www-form-urlencoded');
           resp = {};
  
           // 构造urlencode字符串,构造www-form-urlencoded body
           keys = Object.keys(sign_data);
           keys.sort();
           raw_data = ""
           for(var i in keys){
               raw_data += keys[i] + "=" + encodeURIComponent(sign_data[keys[i]]) + "&"
           }
          raw_data = raw_data.substring(0, raw_data.length - 1)
          Zabbix.Log(4, "raw data: " + raw_data)
           resp = req.Post("http://" + params.url+ "/api/api/send_msg",
               raw_data
           );
         
           if (req.Status() != 200) {
               throw 'Response code: '+req.Status();
           }
           Zabbix.Log(4, resp)

       } catch (error) {
           Zabbix.Log(4, 'Issue creation failed : '+error);
         
       }
         
       return 'OK';
  1. 之后选择Message Template选项卡(消息模板),点击添加,添加一个模板填写对应内容,本文填写的内容如下。消息模板是通知使用的模板,本文配置中,我们只播报消息模板中消息中内容,也就是刚刚参数中的{ALERT.MESSAGE}
    其中的{HOST.NAME}等为宏变量。关于宏变量说明,请参考Zabbix宏变量相关文档
    在这里插入图片描述
  2. 保存后,可以进行测试,url改为通知终端报警灯实际的IP地址
    博灵语音通知终端Zabbix对接
  3. 测试完成后,点开Open Log可以查看日志
    在这里插入图片描述
  4. 此时报警灯将会收到一个测试信息
    博灵语音通知终端播报日志
  5. 测试通过后,报警媒介配置完成,其他完整的Zabbix语音播报报警联动参见,Zabbix与声光报警灯语音告警语音播报

补充说明

提供的代码中,sign_data的值可以根据需求自行修改,参数详见设备的说明书,可以修改报警灯样式、语音速度、音色等多种功能。
本方案仅使用了常规Api,其中的脚本内置签名计算逻辑,可以参考。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
配置Zabbix 5.0使用WebHook进行报警,您可以按照以下步骤进行操作: 1. 在Zabbix Server的WEB界面上配置报警媒介类型为脚本。您可以使用JavaScript编写脚本来发送报警信息。 2. 注册企业微信机器人。您需要在企业微信中创建一个机器人,以便用于发送报警信息。 3. 创建一个日志文件,并设置文件权限。您可以使用以下命令创建并设置权限: ``` # touch /var/log/zabbix/dingding.log # chown zabbix.zabbix /var/log/zabbix/dingding.log ``` 4. 添加Zabbix媒介类型为脚本,并指定刚刚创建的dingding.py脚本。在Zabbix的WEB界面上,添加一个新的媒介类型,将其类型设置为脚本,并指定脚本名称为dingding.py。 5. 创建一个动作。在Zabbix的WEB界面上,创建一个新的动作,设置动作名称,并添加一个条件,以便触发报警条件为大于等于警告级别。 6. 添加报警操作和恢复操作。在动作配置中,添加报警操作和恢复操作。在报警操作中,设置报警信息的内容,包括问题名称、告警组、主机信息、告警时间、告警等级、警报类别等。您可以根据需要自定义报警信息的格式。 7. 保存并测试配置。完成以上配置后,保存并测试您的配置是否生效。可以通过模拟一个告警事件,确认是否能正确地通过WebHook发送报警信息。 通过以上步骤,您可以成功地配置Zabbix 5.0使用WebHook进行报警。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值