告警通知平台的邮件短信接口实现思路以及数据统计

简介:

前段时间,芦淞那小子问过我,咋利用微信发送报警通知的调用接口。但是我当时用的是腾讯内部的接口,特别流氓,就算你把通知的微信号拉到黑名单,照样给你推送信息。这个接口没有对外开放的,我也没招的。现在微信公众平台主动推送信息也是有限制的, 所以外部调用是很不靠谱的~


短信的方法是很不错,但是短信是要钱,当然有朋友说飞信可以呀? 我只能说 “呵呵 ”


其实大家心里也明白最靠谱的肯定是短信啦,但是短信的价格确实不便宜,对于中小公司的话,还是舍不得花那些钱的 ~


1000-49999  0.06元/条

50000-99999 0.05元/条

≥100000 0.04元/条



从搜狐的朋友那边,得到了一个挺巧妙的思路,最近也把他实现了~


大半夜了,想睡觉了~  我先简单写写思路~


1.  用户要在我的平台上生成发送邮件的Token key

这个是针对用户的认证,而不像以前 我们把账号密码也都给暴露了~


2.  根据提示上的字段和demo,针对业务来进行发邮件告警

为了更好的统计,以及平台的接口数据展现,要搞出多个字段,比如 token key的,主机的,类型的,信息,是否启用短信接口

3.  当调用了server端的邮件告警接口后,我这边会给他发一个html的邮件,里面含有一个图片。并让图片名字

关于html的img便签,大家可以把图片搞成无色的,别让人看见,毕竟不高雅 呵呵

和事务相对应。然后发出一个后台任务监控这个事务。

要是用户选择的类型是开启短信的话,那咱们就把扔到后台,监视图片是否被访问。 

4.  要是2分钟内,这个图片被访问的话,会删掉那个后台任务,并且入库。要是图片没有被访问的话,

后台的接口会自动发送手机信息的。

监控的话,可以是读取nginx的日志,推荐你自己写,返回图片之前,你就可以把后台的任务给删掉了


我先简单实现下功能,三个步骤,好让大家这个流程~   截图为证~


第一步:

005936737.jpg

这边是邮件接口的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#导入smtplib和MIMEText
import  smtplib
from  email.mime.text  import  MIMEText
#############
#要发给谁,这里发给2个人
mailto_list = [ "rfyiamcool@163.com" ]
#####################
#设置服务器,用户名、口令以及邮箱的后缀
mail_host = "smtp.163.com"
mail_user = ""
mail_pass = ""
mail_postfix = "163.com"
######################
def  send_mail(to_list,sub,content):
     '''
     to_list:发给谁
     sub:主题
     content:内容
     send_mail("rfyiamcool@163.com","sub","content")
     '''
     me = mail_user + "<" + mail_user + "@" + mail_postfix + ">"
     msg  =  MIMEText(content,_subtype = 'html' ,_charset = 'gb2312' )
     msg[ 'Subject' =  sub
     msg[ 'From' =  me
     msg[ 'To' =  ";" .join(to_list)
     try :
                        =  smtplib.SMTP()
         s.connect(mail_host)
         s.login(mail_user,mail_pass)
         s.sendmail(me, to_list, msg.as_string())
         s.close()
         return  True
     except  Exception, e:
         print  str (e)
         return  False
def  nei(filename):
     content = '''
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
<title>Demo: CSS3 Buttons</title>
<style type="text/css">
a {
text-decoration: none;
}
div.twitter {
     font-size: 20px;
         padding: 5px;
     color: #fff;
     background: #2da1ec;
     border-radius: 3px;
}
div.twitter:hover {
     color: #fff;
     background: #2eacff;
}
div.twitter:active {
     top: 1px;
}
   padding: 0px 20.48px;
}
</style>
</head>
</body>
<div>
<img src="http://baidu.com/%s.jpg" height="200" width="200" />
<div class="twitter" data-tip="twitter">
10.2.20.115 mongodb'process down <br>
</div>
<br>
<br>
<br>
</body>
</html>
''' % filename
     return  content
if  __name__  = =  '__main__' :
     if  send_mail(mailto_list, "subject" ,content):
         print  "发送成功"
     else :
         print  "发送失败"



第二步:

010058332.jpg



第三步,我们可以在日志里面看到5.jpg这个页面的访问。

这个日志是我在程序里面打印出来的,也就是当访问5.jpg的时候,我能触发啥任务,或者打印,或者做好已经访问的记录。。。。


010007738.jpg


下面是平台的demo ~ 我想说的是,现在好多公司的告警信息都没有统计,随意的调用smtp发邮件,而不知道发送成功了没有,每个月发送了几次,发送都是啥内容。当然这些东西在nagios zabbix也大体可以看到,但是个人觉得还是综合到一个管理系统下,管理系统更加直观。


也有想这么搞的朋友直接提问题就行,我会第一时间给大家解答~


框架:

nginx  tornado  jquery  



002247107.jpg



002312670.jpg





在 2014-5-9 0:11 ,再次总结下: 图片的方式有时会出问题,最主要的是一些邮件厂商会预先的读取照片,这样咱们就不能很好的判断状态了。






 本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1332160,如需转载请自行联系原作者




相关文章
|
9月前
|
Prometheus Kubernetes 监控
Kubernetes监控:Prometheus与AlertManager结合,配置邮件告警。
完成这些步骤之后,您就拥有了一个可以用邮件通知你的Kubernetes监控解决方案了。当然,所有的这些配置都需要相互照应,还要对你的Kubernetes集群状况有深入的了解。希望这份指南能帮助你创建出适合自己场景的监控系统,让你在首次发现问题时就能做出响应。
542 22
|
存储 监控 安全
邮件告警通知
【10月更文挑战第20天】
|
监控 Unix Shell
Nightingale——夜莺监控系统部署邮件告警系统【三】
Nightingale——夜莺监控系统部署邮件告警系统【三】
272 1
Nightingale——夜莺监控系统部署邮件告警系统【三】
|
Prometheus 运维 Cloud Native
【2023】Prometheus-接入Alertmanager并实现邮件告警通知
【2023】Prometheus-接入Alertmanager并实现邮件告警通知
1121 0
|
监控 关系型数据库 MySQL
zabbix监控所有机器端口、邮件告警
监控的意义 在发生问题时,能够让我们及时获知 监控的对象: 1、服务器监控:内存,cpu负载,磁盘使用率,进程数。。。。 2、应用程序监控:应用程序状态,相应时间, 3、数据库监控:数据库状态,表或者表空间大小,错误日志,死锁等现象 4、网络监控:网络状态 ,流量监控,端口,网络连接数。。。。 zabbix——企业级分布式开源监控解决方案 zabbix优点: 1、开源,无成本投入 2、server端对于机器性能要求低 3、支持设备多,自带监控模板 4、提供Api接口,可以与其他系统结合使用 zabbix缺点: 1、被监控机器需要安装agent 2、社区成熟,中文资料少 3、批量修改麻烦
zabbix监控所有机器端口、邮件告警
|
监控 Java 数据安全/隐私保护
zabbix添加自定义监控项&告警(邮件)
有的时候zabbix提供的监控项目,不能满足我们生产环境下的监控需求,此时我们就要按照zabbix的规范自定义监控项目,来达到监控的目的。
589 0
zabbix添加自定义监控项&告警(邮件)
|
SQL 监控 关系型数据库
【python小脚本】监听日志文件异常数据发送告警短信
老项目中有个用脚本启动的服务,很重要,用来做业务留痕的,涉及业务客户经常性投诉,是找第三方做的,时间长了维护需要花钱,老出各种未知bug,没办法处理所以机器上配了定时任务,定期的几天重启一次来解决。 但是有时候不知道什么原因,重启脚本运行,服务没起来,crond 也没有什么调度机制。 希望写个脚本做监控,当发现服务没起来,发送告警信息,或者重启服务。
351 0
|
数据安全/隐私保护 C++ Perl
07-rsync企业真实项目备份案例实战(需求收集--服务器配置---客户端配置---报警机制---数据校验---邮件告警)
2.需求描述 客户端需求: 1.客户端每天凌晨1点在服务器本地打包备份(系统配置文件、日志文件、其他目录、应用配置文件) 2.客户端备份的数据必须存放至以主机名IP地址当前时间命名的目录中,例如/backup/nfs_192.168.81.210_2020-05-26,其实更好的备份方式/backup/192.168.81.210/nfs_2020-05-26,一会采用后者,要求不只是备份文件,要求连上级目录一并拷过来
283 0
07-rsync企业真实项目备份案例实战(需求收集--服务器配置---客户端配置---报警机制---数据校验---邮件告警)
|
运维 DataWorks
DataWorks百问百答62:在运维中心设置了告警以后,没有收到告警的短信/邮件,如何解决?
在运维中心设置了告警以后,没有收到告警的短信/邮件,如何解决
1972 0
DataWorks百问百答62:在运维中心设置了告警以后,没有收到告警的短信/邮件,如何解决?
prometheus grafana graylog 钉钉告警 短信告警 电话告警系统 PrometheusAlert
PrometheusAlert 简介 PrometheusAlert是开源的运维告警中心消息转发系统,支持主流的监控系统Prometheus,日志系统Graylog和数据可视化系统Grafana发出的预警消息,支持将收到的这些消息发送到钉钉,短信和语音提醒等
5884 0

热门文章

最新文章