zabbix-------通过阿里云语音服务实现电话报警

公司需求,由于短信,微信,邮箱都没人看,导致出现服务器出现异常很长时间才看到,因此根据领导要求做一个电话报警:

电话报警需要需要提供相应的api接口实现和zabbix的对接,我这里找的是阿里云的服务----语音服务  当然你可以去找其他的运营商来满足需求,每个运营商都有对应的api文档的,多的不说  现在开始吧!

这里是阿里云的语音服务的api调用的文档:https://help.aliyun.com/document_detail/55488.html?spm=a2c4g.11186623.6.573.584a114fh9krP2

我这里就不细说阿里云上面的语音服务器的创建了  文档上面都有详细说明

我这里使用的是文本转语音外呼的方式:(下面是贴的阿里云的语音服务创建的步骤)

步骤 1 创建阿里云账号

为了访问语音服务,您需要有一个阿里云账号。如果没有,可首先按照如下步骤创建阿里云账号:

  1. 访问阿里云 官方网站,单击页面上的 免费注册 按钮。
  2. 按照屏幕提示完成注册流程并进行企业实名认证语音服务只支持企业实名认证用户使用。为了更好地使用阿里云服务,建议尽快完成实名认证,否则部分阿里云服务将无法使用。具体实名认证流程,请参考 这里

步骤 2 获取阿里云访问密钥

为了使用语音文本单呼API-JAVA SDK,您必须申请阿里云的访问密钥。

阿里云访问秘钥是阿里云为用户使用 API(非控制台)来访问其云资源设计的“安全口令”。您可以用它来签名 API 请求内容以通过服务端的安全验证。

该访问秘钥成对(AccessKeyId 与 AccessKeySecret)生成和使用。每个阿里云用户可以创建多对访问秘钥,且可随时启用(Active)、禁用(Inactive)或者删除已经生成的访问秘钥对。

您可以通过阿里云控制台的 秘钥管理页面 创建、管理所有的访问秘钥对,且保证它处于“启用”状态。由于访问秘钥是阿里云对 API 请求进行安全验证的关键因子,请妥善保管你的访问秘钥。如果某些秘钥对出现泄漏风险,建议及时删除该秘钥对并生成新的替代秘钥对。

步骤 3 在控制台完成号码与模板的申请,获得调用接口必备的参数

在“语音号码”页面完成资质的申请,号码的购买

在“文本转语音模板”页面完成模板申请,或,在“语音通知文件”页面完成文件上传-------等待审批,一般半小时左右就会审批成功

下面主要讲一下python文档,当然你可以使用java或者php调用api的方式:

系统: CentOS6.8

Python版本:2.6.6

zabbix:3.0

首先下载Python包  

包名是:dyvms_python.zip

uzip -r dyvms_python.zip /123

解压会有两个文件

 cd dyvms_python

会发现4个文件

 

安装Python环境:

cd api_sdk

会有两个文件:

分别 cd aliyun-python-sdk-core和cd aliyun-python-sdk-dyvmsapi

分别到上面两个文件下运行 python set.py install 

运行以后在 /123/dyvms_python/api_demo/aliyun-python-sdk-dyvmsapi 下面创建demo.py文件(短信报警Python解压以后会自带):

vim demo.py:如下

# _*_ encoding:utf-8 _*_
from aliyunsdkdyvmsapi.request.v20170525 import SingleCallByTtsRequest
from aliyunsdkdyvmsapi.request.v20170525 import SingleCallByVoiceRequest
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.profile.region_provider import add_endpoint
import os,sys
import uuid
"""
语音业务调用接口示例,版本号:v20170525
Created on 2017-06-12
"""
#暂时不支持多region,默认配置杭州
REGION = "cn-hangzhou"
# ACCESS_KEY_ID/ACCESS_KEY_SECRET 根据实际申请的账号信息进行替换
ACCESS_KEY_ID = "yourAccessKeyId"
ACCESS_KEY_SECRET = "yourAccessKeySecret"
#初始化AcsClient
acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
#region_provider.add_endpoint(PRODUCT_NAME,REGION,DOMAIN)
def tts_call(business_id, called_number, called_show_number, tts_code, tts_param=None):
ttsRequest = SingleCallByTtsRequest.SingleCallByTtsRequest()
# 申请的语音通知tts模板编码,必填
ttsRequest.set_TtsCode(tts_code)
# 设置业务请求流水号,必填。后端服务基于此标识区分是否重复请求的判断
ttsRequest.set_OutId(business_id)
# 语音通知的被叫号码,必填。
ttsRequest.set_CalledNumber(called_number)
# 语音通知显示号码,必填。
ttsRequest.set_CalledShowNumber(called_show_number)
# tts模板变量参数
if tts_param is not None:
ttsRequest.set_TtsParam(tts_param)
ttsResponse = acs_client.do_action_with_exception(ttsRequest)
return ttsResponse
__business_id = uuid.uuid1()
print __business_id
#模板中不存在变量的情况下为{}
#params = {}

#如果模板有变量使用一下方法
params = "{\"name\":\"%s\"}"%(sys.argv[2])      
print tts_call(__business_id, sys.argv[1],"075500000000", "TTS_140000000", params)

 官网文档copy下来会报一个错提示没有环境包,把对应行注释掉就行。在我标注的黑体字上面

红色部分是需要根据自己信息手动修改的,我这里写了两个变量   如果不需要可以改成固定

然后把demo.py脚本拷贝到zabbix脚本存放路径

测试发现zabbix web端动作触发成功但是无法执行脚本接不到电话,所以我在这把Python脚本写成shell的脚本就可以正常运行了

vim demo.py:

#!/bin/bash
python /usr/local/zabbix/alertscripts/demo.py $1 $2  

到zabbix  web端  添加媒介

添加用户

添加报警媒介

添加动作

猜你喜欢

转载自www.cnblogs.com/otosis/p/9897899.html