通过阿里云语音服务实现Zabbix电话告警实战
Posted 运维
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过阿里云语音服务实现Zabbix电话告警实战相关的知识,希望对你有一定的参考价值。
来自公众号:新钛云服
第二步:电话告警脚本编写
安装python3.6
如果你的系统是CentOS7,那么需要安装python3.6, python2不支持。
yum install epel-release
yum install python36
pip3 install --upgrade pip安装阿里SDK
pip3 install aliyun-python-sdk-dyvmsapi
创建python告警脚本
#!/usr/bin/python3
#coding=utf-8
import sys
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkdyvmsapi.request.v20170525.SingleCallByTtsRequest import SingleCallByTtsRequest
def CallPhone(callphone,msg):
#告警信息处理,将告警进行转化为列表
print(msg)
textlist = msg.split('\r\n')
print(textlist)
textdic={}
#告警信息处理,将告警信息列表转化为字典
for item in textlist:
tem = item.split(':',1)
textdic[tem[0]]=tem[1]
print(textdic)
hostname = textdic["告警主机"]
alert_msg = textdic["告警信息"]
alert_time = textdic["告警时间"]
alert_gruop = textdic["所属分组"]
#电话告警的信息处理,去除敏感字符
call_msg = str(alert_msg).replace('\\','').replace('"','').replace(':','')+",故障主机分组"+str(alert_gruop)+",故障发生时间"+str(alert_time).replace('.','年',1).replace('.','月',1).replace(' ','日').replace(':','点',1).replace(':','分',1)
fin_msg = {"hostname":str(hostname).replace('.','点'),"msg":call_msg}
print("呼叫号码:"+callphone[0] +" 告警信息:"+str(fin_msg))
#调用阿里云语音接口进行发送
client = AcsClient('<用户AK>', '<用户SK>', 'cn-hangzhou')
request = SingleCallByTtsRequest()
request.set_accept_format('json')
request.set_CalledNumber(callphone[0])
request.set_TtsCode("<模版ID>")
request.set_TtsParam(fin_msg)
response = client.do_action_with_exception(request)
# python2: print(response)
print(str(response, encoding='utf-8'))
if __name__ == '__main__':
f=open("/var/log/alivoice.log","a+")
f.write("\n"+"--"*40+"\n")
f.write(str(sys.argv))
f.close()
#获取告警信息
text = sys.argv[2]
try:
#获取告警电话
callphone = sys.argv[1].split(',')
except IndexError as e:
callphone = []
CallPhone(callphone,text)
#调用信息的格式如下
#./alivoice.py 13400000000 '警主机:backupcenter-slave\r\n告警地址:192.168.106.215\r\n所属分组:Discovered hosts, 内部系统\r\n告警信息:/data: Disk space is low (used > 80%)\r\n告警时间:2021.03.03 02:37:02\r\n事件ID:596689'
第三步:Zabbix电话告警配置
chmod +x /usr/lib/zabbix/alertscripts/alivoice.py
touch /var/log/alivoice.log
chmod o+w /var/log/alivoice.log登录zabbix 平台,【Administrator】 ->【Media Types】,点击Create media type
Name可以随便写,Type选择Script, Script name 必须和放到服务器上的脚本名相同,Script parameter里面必须配置{ALERT.SENDTO},{ALERT.MESSAGE}
添加Messages Template,在Messages type中选择Problem,指定subject 和Messages
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
所属分组:{TRIGGER.HOSTGROUP.NAME}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
【Configuration】->【Action】,Create action;
总结:
以上是关于通过阿里云语音服务实现Zabbix电话告警实战的主要内容,如果未能解决你的问题,请参考以下文章