zabbix短信(阿里云短信平台)与邮件报警
环境说明
操作系统 | centos7 | |
zabbix_server | zabbix 4.0.3 | |
python | 3.6.5 | |
短信平台 | 阿里云短信 |
zabbix_server配置信息
1 [root@cp-hb-bj-dev-001 etc]# cat zabbix_server.conf|egrep -v '^$|^#'
2 ListenPort=10051
3 LogFile=/data/logs/zabbix/zabbix_server.log
4 DebugLevel=3
5 PidFile=/data/logs/zabbix/zabbix_server.pid
6 DBHost=********************
7 DBName=dev_zabbix
8 DBUser=mysql_zabbix_w
9 DBPassword=************
10 DBPort=3306
11 Timeout=4
12 AlertScriptsPath=/usr/local/cpgroup/zabbix/share/zabbix/alertscripts #alertscripts 执行脚本存放路径,在zabbix安装目录下
13 LogSlowQueries=3000
配置zabbix发送短信报警
登录阿里云官网下载sdk
申请短信签名与模板
模板详情信息,这里只用了一个参数,而且告警与恢复都用的同一个模板。
将下载下来的demo上传到服务器/usr/local/cpgroup/zabbix/share/zabbix/alertscripts目录下
注:最好在该目录下创建一个python虚拟环境,很好管理下载下来的依赖包,但我这里并没有使用
修改const.py为你自己的accesskey
赋予demo_sms_send.py为可执行权限
并执行 python setup.py install 安装依赖包
修改demo_sms_send.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest
from aliyunsdkdysmsapi.request.v20170525 import QuerySendDetailsRequest
from aliyunsdkcore.client import AcsClient
import uuid
from aliyunsdkcore.profile import region_provider
from aliyunsdkcore.http import method_type as MT
from aliyunsdkcore.http import format_type as FT
import const """
短信业务调用接口示例,版本号:v20170525 Created on 2017-06-12 """
try:
reload(sys)
sys.setdefaultencoding('utf8')
except NameError:
pass
except Exception as err:
raise err # 注意:不要更改
REGION = "cn-hangzhou"
PRODUCT_NAME = "Dysmsapi"
DOMAIN = "dysmsapi.aliyuncs.com" acs_client = AcsClient(const.ACCESS_KEY_ID, const.ACCESS_KEY_SECRET, REGION)
region_provider.add_endpoint(PRODUCT_NAME, REGION, DOMAIN) def send_sms(business_id, phone_numbers, sign_name, template_code, template_param=None):
smsRequest = SendSmsRequest.SendSmsRequest()
# 申请的短信模板编码,必填
smsRequest.set_TemplateCode(template_code) # 短信模板变量参数
if template_param is not None:
smsRequest.set_TemplateParam(template_param) # 设置业务请求流水号,必填。
smsRequest.set_OutId(business_id) # 短信签名
smsRequest.set_SignName(sign_name) # 数据提交方式
# smsRequest.set_method(MT.POST) # 数据提交格式
# smsRequest.set_accept_format(FT.JSON) # 短信发送的号码列表,必填。
smsRequest.set_PhoneNumbers(phone_numbers) # 调用短信发送接口,返回json
smsResponse = acs_client.do_action_with_exception(smsRequest) # TODO 业务处理 return smsResponse if __name__ == '__main__':
__business_id = uuid.uuid1()
sendto = str(sys.argv[1]) # zabbix传过来的第一个参数
message = str(sys.argv[2]) # zabbix传过来的第二个参数
params = {'message':message} # 对应短信模板里设置的变量名
print(send_sms(__business_id, sendto, "签名名称", "模板code" ,params))
本地测试
python demo_sms_send.py PhoneNumber Message
#返回信息
b'{"Message":"OK","RequestId":"582BC524-2542-4A67-8C96-F7A5522B2331","BizId":"434800850125393357^0","Code":"OK"}'
注意我这里使用的python版本是python3.x的 用python2.x调用会报错.并且zabbix发送短信手机接受会是乱码,请注意
配置zabbix
创建媒介类型并保存
ALERT.SENTO对应着python脚本中的第一个参数,ALERT.MESSAGE对应着python脚本中的第二个参数
绑定用户
创建动作
<!--警告-->
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID} <!--恢复-->
恢复主机:{HOSTNAME1}
恢复时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
消息内容
配置完成后,修改触发器测试短信是否可用
这个触发器是判断当前系统可用内存,默认是20M,可以看到我这里为了测试已经将它修改,所以我这边直接将其修改回来即可
查看当前动作日志
zabbix 配置告警邮件
将邮件脚本上传到服务器/usr/local/cpgroup/zabbix/share/zabbix/alertscripts目录下
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:hc.li import smtplib
from email.mime.text import MIMEText
import sys
mail_host = 'smtp.163.com'
mail_user = 'user@163.com' #修改为自己的邮箱与密码
mail_pass = 'passwd'
mail_postfix = '163.com'
def send_mail(to_list,subject,content):
me = "zabbix 监控告警平台"+"<"+mail_user+"@"+mail_postfix+">"
msg = MIMEText(content, 'plain', 'utf-8')
msg['Subject'] = subject
msg['From'] = me
msg['to'] = to_list
try:
s = smtplib.SMTP_SSL(mail_host,465)
#s.connect(mail_host)
s.login(mail_user,mail_pass)
s.sendmail(me,to_list,msg.as_string())
s.close()
return True
except Exception as e:
print (str(e))
return False
if __name__ == "__main__":
send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
Send_mail.py
配置zabbix
创建报警媒介
绑定用户
配置动作
保存测试即可
zabbix短信(阿里云短信平台)与邮件报警的更多相关文章
- flask+阿里云短信服务实现注册发送手机验证码
效果图: 该效果主要讲解实现通过调用阿里云的SDK实现发送注册验证码短信(阿里云短信付费使用) 购买阿里云短信服务 购买链接:https://www.aliyun.com/product/sms 1. ...
- Zabbix 3.4.3 使用阿里云短信服务进行报警
目录 一.阿里云短信服务 1.1.首先开通阿里云短信服务 1.2 创建签名 1.3 创建短信模板 1.4 创建发送脚本 二.Zabbix Web 配置 2.1 增加 Media types 2.2 给 ...
- ThinkPHP3.2.3框架下接入阿里云短信服务接口实现:注册登录
首先介绍下短信注册登录流程: 注册页面点击获取手机号验证码按钮,用jquery的click事件POST或GET方法把手机号发送到后台控制器: 后台控制器创建函数,收到手机号后生成随机码,例如:6位的随 ...
- ThinkPHP5.0手把手实现手机阿里云短信验证
阿里云短信服务介绍阿里云短信服务就是以前的阿里大于,不过现在融合得到阿里云平台了.首先,你需要注册一个阿里云账号,这个自行解决. 仅用于测试使用官方送的代金券够用了.相关配置1.开通阿里云Access ...
- 阿里云短信服务开发报错Java.lang.NoClassDefFoundError:com/aliyuncs/exceptions/ClientException
手机app获取短信验证码功能时候,遇到的问题.使用的是阿里云的短信服务,下载平台demo时运行不报错,但是在service层调用的时候报错 Java.lang.NoClassDefFoundError ...
- 阿里云短信接口开发实践(Java
随着互联网的兴起,各行各业的需求都在不断的增加.随着业务的扩大,企业给用户发送短信验证码的业务,也是如火如荼.在这里,calvin给各位开发者推荐阿里云短信平台.原因有二:1.接入较简单,开发成本低 ...
- CRMEB小程序商城v4.0二次开发对接集成阿里云短信
作者:廖飞 - CRMEB小程序商城研发项目组长 前言 cremb小程序商城v4.0版本支持短信平台为云信,但有部分用户有需求对接阿里云短信,这篇文章将对阿里云短信平台如何对接方以及对接流程详细说明. ...
- 使用Node.js调用阿里云短信的发送以及接收
为了使用Node.js调用阿里云短信服务,我自己写了个npm包, 目前实现了: 使用Node.js调用阿里云短信服务,发送短信: 使用Node.js调用阿里云短信服务以及MNS服务,接收用户上行短信 ...
- php 阿里云短信服务及阿里大鱼实现短信验证码的发送
一:使用阿里云的短信服务 ① 申请短信签名 ②申请短信模板 ③创建Access Key,获取AccessKeyId 与 AccessKeySecret.(为了安全起见,这里建议使用子用户的Access ...
随机推荐
- 聊聊Http协议
http协议是大家在互联网中最为熟悉的协议,只要上网大家都会遇到,但是,很多人被问道什么是http协议,http协议的内容是什么就懵了.这里,我们随便聊聊http协议. 首先,我们说说协议.我一直觉得 ...
- [转载]在Windows下为PHP5.6安装redis扩展和memcached扩展
一.php安装redis扩展 1.使用phpinfo()函数查看PHP的版本信息,这会决定扩展文件版本 2.根据PHP版本号,编译器版本号和CPU架构, 选择php_redis-2.2 ...
- nginx 部署前期一定要关闭selinux
nginx 报错: 1389#1389: *40 "/home/data1/index.html" is forbidden (13: Permission denied), cl ...
- MapReduce 基础学习
什么是MapReduce? mapreduce 是一种软件框架 mapreduce job将任务分解为独立的块儿到不同的map task,进行并行处理: map任务输出会做相应的排序处理,并作为r ...
- c#随机生成中文姓名
为什么要自己写这个生成器呢?大家应该都有过为测试数据发愁的时候,我就是出于这样的原因. 尽管本次代码很少,但是还会有后续的生成器分享出来. 我代码底子还不是很好,希望各位同道能够发表意见,同是也欢迎大 ...
- 【LeetCode算法题库】Day4:Regular Expression Matching & Container With Most Water & Integer to Roman
[Q10] Given an input string (s) and a pattern (p), implement regular expression matching with suppor ...
- SICP读书笔记 2.2
SICP CONCLUSION 让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员 ! 祝我能够突破层层代码,找到住在里计算机的神灵! 目录 1. 构造过程抽象 2. 构造数据抽象 ...
- 【坚持】Selenium+Python学习记录 DAY10
2018/05/31-2018/06/1 [官方文档](https://www.jetbrains.com/help/pycharm/set-up-a-git-repository.html) 通过p ...
- centos7以上安装python3,一条命令搞定。
直接复制下面的命令就搞定 yum install python34 python34-pip python34-setuptools 使用方法: python3 ---.py pip3 install ...
- 高可用OpenStack(Queen版)集群-17.一些问题
参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...