环境说明

操作系统 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短信(阿里云短信平台)与邮件报警的更多相关文章

  1. flask+阿里云短信服务实现注册发送手机验证码

    效果图: 该效果主要讲解实现通过调用阿里云的SDK实现发送注册验证码短信(阿里云短信付费使用) 购买阿里云短信服务 购买链接:https://www.aliyun.com/product/sms 1. ...

  2. Zabbix 3.4.3 使用阿里云短信服务进行报警

    目录 一.阿里云短信服务 1.1.首先开通阿里云短信服务 1.2 创建签名 1.3 创建短信模板 1.4 创建发送脚本 二.Zabbix Web 配置 2.1 增加 Media types 2.2 给 ...

  3. ThinkPHP3.2.3框架下接入阿里云短信服务接口实现:注册登录

    首先介绍下短信注册登录流程: 注册页面点击获取手机号验证码按钮,用jquery的click事件POST或GET方法把手机号发送到后台控制器: 后台控制器创建函数,收到手机号后生成随机码,例如:6位的随 ...

  4. ThinkPHP5.0手把手实现手机阿里云短信验证

    阿里云短信服务介绍阿里云短信服务就是以前的阿里大于,不过现在融合得到阿里云平台了.首先,你需要注册一个阿里云账号,这个自行解决. 仅用于测试使用官方送的代金券够用了.相关配置1.开通阿里云Access ...

  5. 阿里云短信服务开发报错Java.lang.NoClassDefFoundError:com/aliyuncs/exceptions/ClientException

    手机app获取短信验证码功能时候,遇到的问题.使用的是阿里云的短信服务,下载平台demo时运行不报错,但是在service层调用的时候报错 Java.lang.NoClassDefFoundError ...

  6. 阿里云短信接口开发实践(Java

    随着互联网的兴起,各行各业的需求都在不断的增加.随着业务的扩大,企业给用户发送短信验证码的业务,也是如火如荼.在这里,calvin给各位开发者推荐阿里云短信平台.原因有二:1.接入较简单,开发成本低 ...

  7. CRMEB小程序商城v4.0二次开发对接集成阿里云短信

    作者:廖飞 - CRMEB小程序商城研发项目组长 前言 cremb小程序商城v4.0版本支持短信平台为云信,但有部分用户有需求对接阿里云短信,这篇文章将对阿里云短信平台如何对接方以及对接流程详细说明. ...

  8. 使用Node.js调用阿里云短信的发送以及接收

    为了使用Node.js调用阿里云短信服务,我自己写了个npm包, 目前实现了: 使用Node.js调用阿里云短信服务,发送短信: 使用Node.js调用阿里云短信服务以及MNS服务,接收用户上行短信 ...

  9. php 阿里云短信服务及阿里大鱼实现短信验证码的发送

    一:使用阿里云的短信服务 ① 申请短信签名 ②申请短信模板 ③创建Access Key,获取AccessKeyId 与 AccessKeySecret.(为了安全起见,这里建议使用子用户的Access ...

随机推荐

  1. 【总结】详细说说Html.ActionLink的用法

    Html.ActionLink概述 在MVC的Rasor视图引擎中,微软采用一种全新的方式来表示从前的超链接方式,它代替了从前的繁杂的超链接标签,让代码看起来更加简洁,通过浏览器依然会解析成传统的a标 ...

  2. 取消Ubuntu18.04开机输入密码登录

    设置>>详细信息>>用户>>解锁>>(输入密码进行认证)>>{自动登录}选项打开

  3. loadrunner脚本编写经验

    最近写了不少loadrunner脚本,记录一下心得:1 loadrunner脚本基本可以认为就是c语言代码(loadrunner支持不同语言的脚本,默认生成的是用c语言写的脚本)2 loadrunne ...

  4. Windows7 jmeter3.1安装(咋个安装?)

    这是一个比较详细的安装教程0.0,不懂可以私我,有错也可以私我 1.0    首先我们得有jdk,我选择的是1.8版本的jdk, QQ群:550654190,(进群答案:李熠)群文件里有. 进去后下载 ...

  5. idea_debug

    条件断点 快捷键 cmd + shift +f8 demo 表达式求值 注意,调试的时候,选中相应变量 alt + f8 demo set value (感觉会非常有用) 调试时直接改变变量的值,快捷 ...

  6. Mysql Mariadb 密码问题

    mysql密码遗忘和登陆报错问题   mysql登录密码忘记,其实解决办法很简单,只需要在mysql的主配置文件my.cnf里添加一行“跳过授权表”的参数选择即可! 在my.cnf中添加下面一行:[r ...

  7. Linux加密到K8S中

    文件名字 test.conf 加密:  base64 --wrap=0 aaa.conf 把得到的密钥填入配置文件当中即可

  8. ltrace命令详解

    原文链接:https://ipcmen.com/ltrace 用来跟踪进程调用库函数的情况 补充说明 NAME       ltrace - A library call tracer ltrace命 ...

  9. BloomFilter——大规模数据处理利器(爬虫判重)

    http://www.cnblogs.com/heaad/archive/2011/01/02/1924195.html Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快 ...

  10. Journal entry of the eleventh chapter to chapter twelfth

    第十一章:正如很多人一样,觉得软件工程这个课程好像没什么用,感觉提高不了自己的写代码能力,学的都是理论知识,好像对于我们这种技术类的专业离得有点远,是这样的吗? 第十二章:每样东西都没有完美的,即使我 ...