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

簽名名稱會在腳本中用到。
申請短信模板


模板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配置



大功告成!
