一.说明
使用邮件、钉钉、微信等报警,当消息多的时候很容易忽略掉,这些会和一些广告弹窗之类的在一块。
像我用的一加7T,装了钉钉但还是不显示钉钉消息出来,这时候只能在电脑的钉钉上看到消息弹出。所以推荐使用短信报警,再针对无用报警取消就可以达到重视的效果了,在短信会有信息的留存。
这里使用阿里云的[短信服务],5000条2年180块。
二.配置
1.签名就是短信的开头方,比如收到中国移动的短信,开头【中国移动】
2.点击右侧添加签名,除了验证码,通用的会检测很严格,最好用公司名或者网站/app名
3.模板为消息的套用格式,变量是后面阿里云的api方法传参进去的,可以搭配zabbix的变量传入,先定义好格式,尽量字少
例如:
zabbix${status}通知:
实例${name}发生${message}情况!
4.模板名称可以随意取,主要定义好模板内容要清晰,变量属性要填好
5.选好相应的签名和模板,然后发送短信试试看是否可以收到
6.收到没问题点击查看API,他会根据当前信息直接生成,这里用python3脚本
三.脚本
安装阿里云核心模块 pip3 install aliyun-python-sdk-core
这个接用于split方法给拆成数组,然后代入status、name、message变量中
测试执行 ./post-duanxin.py 15110244567 "随便填,脚本不用" "报警接生产-会员机器1接磁盘/使用空间小于90%"
#!/usr/bin/python3
#coding=utf-8
import sys, json
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
#资源信息
aliyun_user_ak = 'dad243rdddad'
aliyun_user_sk = 'asddsad2edqe12casdad2'
region_id = 'cn-beijing'
client = AcsClient(ak=aliyun_user_ak, secret=aliyun_user_sk, region_id=region_id, timeout=300)
#要配置的信息
signname = "中国移动" #签名name
tempcode = "SMS_2001232" #模板code
user = sys.argv[1]
info = sys.argv[3]
mes_list = info.split('接') #这块要和zabbix动作搭配,用来拆分
one = {"status":mes_list[0], "name":mes_list[1], "message":mes_list[2]}
json_info = json.dumps(one) #改成json
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('RegionId', "cn-hangzhou")
request.add_query_param('PhoneNumbers', user)
request.add_query_param('SignName', signname)
request.add_query_param('TemplateCode', tempcode)
request.add_query_param('TemplateParam', json_info)
response = client.do_action(request)
print(str(response, encoding = 'utf-8'))
四.zabbix配置
1.管理-》报警媒介类型-》创建
2.将脚本放到对应目录下,用于zabbix调用
grep AlertScriptsPath /etc/zabbix/zabbix_server.conf
3.配置对应脚本名(要对应了),还有传入的参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
4.管理-》用户-》-admin-》报警媒介,添加刚才的配置,设置好手机号。要是多个人接收,就设置多个
5.配置-》动作-》创建动作,配置一般严重再报警
6.配置操作项,1-0是只要没解决就一直报警,然后每次间隔1小时
主题: 故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
消息: 警告接{HOSTNAME1}接{TRIGGER.NAME}
7.添加一个恢复操作,用于接收恢复短信
主题:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
消息:恢复接{HOSTNAME1}接{TRIGGER.NAME}
8.可以配置一个有问题的监控项和触发器,来看看是否触发
芜湖~,跟着大佬,起飞