零成本实现Zabbix语音告警

一、场景模拟
国内某知名大型证券企业A公司,在使用开源Zabbix监控平台时发现Zabbix只能依据告警级别产生相应的声音通知,却无法对告警信息进行语音播报。为此,运维同事小东自告奋勇为公司打造了一套“零成本的最简单的Zabbix语音告警”方案,实现与Zabbix的告警对接,为公司省下10W+的运维费用。

二、实现原理
1、软硬件准备

1)一台带有声音的window操作系统的电脑,作为大屏展示Zabbix系统告警的工具

2)一个zabbix_agent安装包

3)一个bat脚本(调用window系统自带的语音助手内置工具)

4)Bat_To_Exe_Converter.exe。把bat脚本转换成exe的工具。这个工具主要是为了解决bat脚本调用时会有弹窗的问题(即使网上有命令可以把bat脚本放置后台执行,但是还是调用bat还是会有一瞬间窗口闪过,所以需要通过该软件把脚本放到后台运行)

2、实现原理

1)语音播放bat,读取zabbix_server推送过来的告警标题,调用系统内置的语音助手,然后该bat参数接收一个参数为zabbix_server产生告警时,传过来的告警标题。

2)把该语音告警播放bat脚本加到window的计划任务中。注意:zabbix_agent的键值有些命令无法调用,这种情况可以考虑使用把脚本加入到计划任务,然后agent自定义键值调用对应的计划任务。具体原因可能时window操作系统的一些安全限制导致,可能把某些操作当成病毒进行拦截

3)安装zabbix_agent。自定义一个键值命令,来调用window的语音告警播放的计划任务,用来把接收到的告警语音播放。

4)配置告警动作,zabbix_server产生告警时,执行客户端的命令具体为,zabbix_get -s 客户端的ip -k ‘语音告警的键值’。这样的话,就可以实现告警产生后,调用大屏展示告警的那台window的计划任务,然后由计划任务把接受到的告警标题语音播放出来。

注意:一般传提告警标题参数即可,很多告警标题都判断出具体告警,简洁明了

三、实验过程
1、准备bat脚本(33.bat为语音播放bat脚本)
脚本内容如下:
在这里插入图片描述
@echo off

for /f %%i in (‘type “G:\alert_mess.txt”‘) do (

set “alert_mess=%%i”

)

脚本说明:上面命令是必须,G:\alert_mess.txt是每次告警产生后,临时存放告警标题的文件,具体路径可以自定义,这个文件之所以存在,是因为计划任务用cmd调用时无法传入参数,因此为了灵活调用。后续zabbix产生告警时,会做两个操作,第一个就是把告警标题存放到G:\alert_mess.txt这个目录,然后再调用上面的bat脚本,获取文本中的告警标题,进行语音播放,播放完毕后,清空alert_mess.txt的内容,等待下次告警的新内容。

mshta vbscript:createobject(“sapi.spvoice”).speak(%alert_mess%)(window.close)

脚本说明:上面命令时调用window自带的语音助手,用于语音播报。alert_mess的内容就是告警标题的内容,接收到的告警标题是什么,语音播报就会播放什么

2、把上面的bat脚本转换成exe工具
打开软件
在这里插入图片描述
注意:如果上面转换不成功,可能会是系统自带或者杀毒软件拦截,可临时关闭进行转换
在这里插入图片描述
3、添加计划任务
快捷键,win+r,输入taskschd.msc打开计划任务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4、agent配置自定义键值,和开启远程调用参数
在这里插入图片描述
开启agent的远程调用参数。Agent版本如果是3.X或者4.X,开启远程配置参数命令是EnbaleRemoteCommands=1。这个参数开启后,用于接收Zabbix产生的告警标题。
在这里插入图片描述
5、配置Zabbix的告警动作和脚本
注意,下面我配置的环境是基于Zabbix6.0的,如果是Zabbix3-5版本配置可能存在差异。
在这里插入图片描述
添加下面的命令

/itops/zabbix/bin/zabbix_get -s 192.168.74.1 -k ‘system.run[echo “[产生告警]{HOST.IP}的{TRIGGER.NAME}”>G:\alert_mess.txt]’

注意:这个文件的路径要和33.exe读取的文件路径一致

/itops/zabbix/bin/zabbix_get -s 192.168.74.1 -k ‘run’

注意:这个键值要和自定义键值一致
在这里插入图片描述
添加恢复告警,主要是为了语音告警时,区别告警产生还是恢复

产生告警
在这里插入图片描述
恢复告警
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
四、验证成果
在这里插入图片描述
语音播放视频效果可通过下面链接查看,语音播报大概在37-44s。其他是触发器尚未更新

链接:https://pan.baidu.com/s/1gd87dc02XtrfdUuW8KzyHw

提取码:26pt

五、补充
上面的脚本可以调整语速和音量,还有可以自行替换语音包。

以上就是这一期的Zabbix运维知识分享。大家好,我是乐乐,专注运维技术研究与分享,关注我学习Zabbix等使用技巧,更多运维问题还可以到乐维社区https://forum.lwops.cn/留言提问哦~

猜你喜欢

转载自blog.csdn.net/weixin_43631631/article/details/132103890
今日推荐