Zabbix技术分享——零成本实现Zabbix语音告警

只需5步,零成本实现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脚本)

N9uw84Cs64cb1e0f074d4.png

脚本内容如下

gcryKg8A64cb1e1c0c448.png


@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工具

91eazqqj64cb1e37958c2.png

打开上面的这个软件

inPRT4fy64cb1e44a4762.png

    注意:如果上面转换不成功,可能会是系统自带或者杀毒软件拦截,可临时关闭进行转换

2b2JSodB64cb1e5f46540.png


3、添加计划任务

快捷键,win+r,输入taskschd.msc打开计划任务

FgF0srya64cb1e6e3ad5c.png

onW6YFcC64cb1e7868686.png

rFhf748k64cb1e89ca994.png

auzgUJX464cb1e9f71aae.png

IInagRST64cb1ead0295b.png

UiwBYyrA64cb1eb7b26c3.png

yQkRARWW64cb1ec2ac1ca.png


4、agent配置自定义键值,和开启远程调用参数

0pq9LaWH64cb1ed68ae2a.png

开启agent的远程调用参数。Agent版本如果是3.X或者4.X,开启远程配置参数命令是EnbaleRemoteCommands=1。这个参数开启后,用于接收Zabbix产生的告警标题。

RPqTIzey64cb1eeb3efdf.png

 

5、配置Zabbix的告警动作和脚本

    注意,下面我配置的环境是基于Zabbix6.0的,如果是Zabbix3-5版本配置可能存在差异。

gJXm68ey64cb1f0b88267.png

添加下面的命令

/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'

注意:这个键值要和自定义键值一致

 

hQL4mnp164cb1f1527b2b.png

添加恢复告警,主要是为了语音告警时,区别告警产生还是恢复


产生告警

UV5mXsPz64cb1febaaa56.png

恢复告警

tFk6w1zS64cb1f6d87c41.png

nZLALjrM64cb1f73c8e66.png

a2vdcGOY64cb1f78d62ca.png

四、验证成果

hdCy9VlC64cb1f40aad29.png

语音播放视频效果可通过下面链接查看,语音播报大概在37-44s。其他是触发器尚未更新

 

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

提取码:26pt

 

五、补充

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


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

此外,乐维监控免费版乐维MCM免费版都已正式上线,欢迎小伙伴们下载体验~

0 条评论

请先 登录 后评论
乐维君
乐维君

345 篇文章

作家榜 »

  1. 乐维君 345 文章
  2. YOHOHO 14 文章
  3. 机灵小和尚 13 文章
  4. 我是一只小菜鸡 12 文章
  5. 细雨闲花 11 文章
  6. 御前侍卫张五哥 9 文章
  7. 。。。 8 文章
  8. 小黄人 8 文章