zabbix利用阿里雲短信服務添加短信報警


注冊阿里雲,在短信服務里申請短信簽名

簽名名稱會在腳本中用到。

申請短信模板

模板CODE會在腳本中用到,模板內容要添加參數,即zabbix傳來的報警內容。

創建AccessKey 

使用阿里雲api需要訪問秘鑰,在訪問控制頁面-->用戶管理-->新建用戶

第一次生成AccessKey時會給你密碼,AccessKey ID和密碼腳本里會用到。

編寫報警腳本

# vim /usr/lib/zabbix/alertscripts/sendSMS.py
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
from aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest
from aliyunsdkdysmsapi.request.v20170525 import QuerySendDetailsRequest
from aliyunsdkcore.client import AcsClient
import json
import uuid
import sys

reload(sys)
sys.setdefaultencoding('utf-8')

"""
短信產品-發送短信接口
Created on 2017-06-12
"""
REGION = "cn-hangzhou"# 暫時不支持多region
# ACCESS_KEY_ID/ACCESS_KEY_SECRET 根據實際申請的賬號信息進行替換
ACCESS_KEY_ID = "你的AccessKey ID"
ACCESS_KEY_SECRET = "你的AccessKey密碼"
acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
# 請參考本文檔步驟2
def send_sms(business_id, phone_number, sign_name, template_code, template_param=None):
    smsRequest = SendSmsRequest.SendSmsRequest()
    # 申請的短信模板編碼,必填
    smsRequest.set_TemplateCode(template_code)
    # 短信模板變量參數,友情提示:如果JSON中需要帶換行符,請參照標准的JSON協議對換行符的要求,比如短信內容中包含\r\n的情況在JSON中需要表示成\\r\\n,否則會導致JSON在服務端解析失敗
    if template_param is not None:
        smsRequest.set_TemplateParam(template_param)
    # 設置業務請求流水號,必填。
    smsRequest.set_OutId(business_id)
    # 短信簽名
    smsRequest.set_SignName(sign_name);
    # 短信發送的號碼,必填。支持以逗號分隔的形式進行批量調用,批量上限為1000個手機號碼,批量調用相對於單條調用及時性稍有延遲,驗證碼類型的短信推薦使用單條調用的方式
    smsRequest.set_PhoneNumbers(phone_number)
    # 發送請求
    smsResponse = acs_client.do_action_with_exception(smsRequest)
    return smsResponse
__business_id = uuid.uuid1()
print __business_id
sendto = str(sys.argv[1])     #zabbix傳過來的第一個參數
message = str(sys.argv[2])    #zabbix傳過來的第二個參數
params = {"message": message} #對應短信模板里設置的參數
params = json.dumps(params)
print send_sms(__business_id, sendto, "你的短信簽名", "你的短信模板CODE", params)

zabbix配置

大功告成!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM