报警监控平台扩展功能url回调的设计及应用[python语言]

简介:

前言:

       这个国内也有一些第三方的厂商在用,比如dnspod的url回调和监控宝的url回调!

       有人开源了一个脚本,监控宝的url回调,可以联合dnspod的api接口。可以处理当ip-A的web死掉的时候,dns记录切换到ip-B上。 当然这只是个小应用罢了,但不能不说,这个想法确实不错。 我这边也实现了类似方式。

       所谓的URL回调功能,您可以让告警通知发送到您指定的URL,使你能更加灵活处理告警消息。 打个比方,有个服务器的nginx进程死掉了,这个时候nagios监控到了这个情况,然后调用了我这边的接口,我这边接到的post数据,不仅发邮件,而且会根据注册事件的情况,进行处理。 如果注册了一个远程nginx重启的事项,我这边就远程paramiko或者是saltstack过去重启该进程 !!!


wKiom1PM0E7xhhDhAALPeslTZ0s786.jpg


怎么个灵活法:

        每个业务部门其实都想自己统计error情况,但是监控平台一般是在基础监控部门手里掌控者,又不太方便做部署,这个时候,url回调是个好方法。我会把每次告警的信息不仅推到你的mail和手机上,而且会给你的url地址做webhook。你服务端接受认证后的url地址后,会有相应的措施,比如调用saltsatck来进行处理特定的主机,比如插入到库里面,自己做报表统计,根据来着的信息做自动化处理。


关于触发式的处理:

只是个人的想法而已 ~

       在监控系统的体系下,比如有nagios,zabbix专业监控系统。 咱们还是用例子说话:  监控mysql从是否高延迟,严重不同步问题的时候,咱们一般是在nagios里加载监控获取判断从延迟的脚本,以及在某个节点上做处理脚本【脚本的内容是 while get 每个mysql从情况,高延迟的那台在负载群里面踢出去】,这样算的话是两个脚本了。

      如果利用url回调,可以用处理脚本,这个脚本也只是当触发url回调的时候,才执行才处理的。避免了处理脚本没完没了的去判断和获取状态。要是监控一些统计压力大的服务,那就有点悲催了。

     当然这样也会有些问题的,比如web死掉的话,他无法接受url回调,另一方面 开发部也不想调用系统层面的外部命令,毕竟责任是个问题。



下面是我写的url回调的demo,等有机会上线供大神们测试下。


第一版的时候,没有定义post的方式,以及回调结果的查看。


013908564.jpg

第二版做了,get和post的方式,返回结果的验证。

014152514.jpg


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


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


框架:

nginx  tornado  jquery  



002247107.jpg



002312670.jpg



此文接上文: http://rfyiamcool.blog.51cto.com/1030776/1332160


有后文,会补上的~


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






相关文章
|
4月前
|
数据可视化 关系型数据库 MySQL
基于python大数据的的海洋气象数据可视化平台
针对海洋气象数据量大、维度多的挑战,设计基于ECharts的可视化平台,结合Python、Django与MySQL,实现数据高效展示与交互分析,提升科研与决策效率。
|
4月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
317 1
|
4月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
460 1
|
5月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
446 102
|
5月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
301 103
|
5月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
231 82
|
4月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
219 4
|
6月前
|
机器学习/深度学习 自然语言处理 数据可视化
Python:简洁而强大的通用语言
Python:简洁而强大的通用语言
|
6月前
|
机器学习/深度学习 人工智能 运维
Python:简洁高效的万能语言
Python:简洁高效的万能语言

推荐镜像

更多