配置:
centos:7.5
zabbix-server:5.2
mysql:5.7
zabbix-agent:5.2
阿里云短信服务SDK:2
Python:3.8
1、准备阿里云短信签名和模板
登录阿里云平台,搜索短信服务,选择国内服务,点击“添加签名”,如下图所示
添加完签名再添加模板,有不清楚的问阿里服务人员
2、准备key和秘钥,鼠标放到右上角用户处,可以看到一个AccessKey管理,入不记得秘钥可以重新生成
3、下载SDK和python脚本
进入阿里首页,搜索短信 SDK,如下图
pip install aliyun-python-sdk-core-v3
可以直接复制代码,只需要修改以下几个配置【key的id、秘钥、电话号码、模板code】
vim duanxin.py
#!/usr/bin/env python
#coding=utf-8
import sys #此处是我自己加的,用来调用下面的参数
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
client = AcsClient('<accessKeyId>', '<accessSecret>', 'ap-northeast-1')
request = CommonRequest()
request.set_accept_format('json')
request.set_domain('dysmsapi.aliyuncs.com')
request.set_method('POST')
request.set_protocol_type('https') # https | http
request.set_version('2017-05-25')
request.set_action_name('SendSms')
request.add_query_param('PhoneNumbers', "%s" %sys.argv[1]) #zabbix传过来的第一个参数
#request.add_query_param('PhoneNumbers', "1503871****")
request.add_query_param('SignName', "阿里大于测试专用")
request.add_query_param('TemplateCode', "SMS_209335004")
request.add_query_param('TemplateParam', "{\"remark\": \"%s\"}" %sys.argv[2]) #zabbix传过来的第二个参数,此处remark为阿里云模板中的变量
#request.add_query_param('TemplateParam', "{\"code\":\"1111\"}")
response = client.do_action(request)
# python2: print(response)
print(str(response, encoding = 'utf-8'))
加执行权限:chmod +x duanxin.py
本地测试:
./duanxin.py 183********* test
手机可以正常收到短信,说明脚本没错,接下来配置zabbix-web端
4、配置zabbix报警媒介类型
创建媒介类型
这2个参数分别对应脚本里的2个参数,一个是发送人的手机号码,一个是发送的短信内容,短信内容可以在Message templates里面定义
告警主机: {HOSTNAME1}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}
因为只传了2个参,所以没有配置主题,感兴趣可以自己添加
5、创建报警用户
报警媒介-类型 选择我们刚创建的媒介,输入收件人电话
6、创建告警动作
这里我选择所有触发条件,实际情况可以自行选择
设置接收告警人员
可以自己手动更改一个触发器的阈值来主动触发告警