公司需求,因爲短信,微信,郵箱都沒人看,致使出現服務器出現異常很長時間纔看到,所以根據領導要求作一個電話報警:php
電話報警須要須要提供相應的api接口實現和zabbix的對接,我這裏找的是阿里雲的服務----語音服務 固然你能夠去找其餘的運營商來知足需求,每一個運營商都有對應的api文檔的,多的不說 如今開始吧!html
這裏是阿里雲的語音服務的api調用的文檔:https://help.aliyun.com/document_detail/55488.html?spm=a2c4g.11186623.6.573.584a114fh9krP2java
我這裏就不細說阿里雲上面的語音服務器的建立了 文檔上面都有詳細說明python
我這裏使用的是文本轉語音外呼的方式:(下面是貼的阿里雲的語音服務建立的步驟)web
步驟 1 建立阿里雲帳號
爲了訪問語音服務,您須要有一個阿里雲帳號。若是沒有,可首先按照以下步驟建立阿里雲帳號:shell
- 訪問阿里雲 官方網站,單擊頁面上的 免費註冊 按鈕。
- 按照屏幕提示完成註冊流程並進行企業實名認證語音服務只支持企業實名認證用戶使用。爲了更好地使用阿里雲服務,建議儘快完成實名認證,不然部分阿里雲服務將沒法使用。具體實名認證流程,請參考 這裏。
步驟 2 獲取阿里雲訪問密鑰
爲了使用語音文本單呼API-JAVA SDK,您必須申請阿里雲的訪問密鑰。vim
阿里雲訪問祕鑰是阿里云爲用戶使用 API(非控制檯)來訪問其雲資源設計的「安全口令」。您能夠用它來簽名 API 請求內容以經過服務端的安全驗證。後端
該訪問祕鑰成對(AccessKeyId 與 AccessKeySecret)生成和使用。每一個阿里雲用戶能夠建立多對訪問祕鑰,且可隨時啓用(Active)、禁用(Inactive)或者刪除已經生成的訪問祕鑰對。api
您能夠經過阿里雲控制檯的 祕鑰管理頁面 建立、管理全部的訪問祕鑰對,且保證它處於「啓用」狀態。因爲訪問祕鑰是阿里雲對 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端 添加媒介
添加用戶
添加報警媒介
添加動做