分布式监控系统开发【day38】:报警策略队列处理(五)
一、目录结构

二、报警策略队列处理
1、入口MonitorServer
import os
import sys if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CrazyMonitor.settings")
from monitor.backends.management import execute_from_command_line
execute_from_command_line(sys.argv)
2、启动调用management
def trigger_watch(self):
'''start to listen triggers'''
trigger_watch = trigger_handler.TriggerHandler(settings)
trigger_watch.start_watching()
3、实例化
1、支持三个参数,启动、停止监控触发器

2、通过反射的形式,
3、监听所有的触发器
4、同一个频道,声明一下就开始接收了
class TriggerHandler(object):
def __init__(self,django_settings):
self.django_settings = django_settings
self.redis = redis_conn.redis_conn(self.django_settings)
self.alert_counters ={} #纪录每个action的触发报警次数
'''alert_counters = {
1: {2:{'counter':0,'last_alert':None}, #k 1是主机id, {2:{'counter'}} 2是trigger id
4:{'counter':1,'last_alert':None}}, #k是action id,
#2: {2:0},
}'''
三、打开收音机准备挺广播
1、功能如下
1、打开收音机
2、调频
3、准备接听
4、阻塞有数据的话,就往下走
2、实现代码
def start_watching(self):
'''
start listening and watching the needed to be handled triggers from other process
:return:
''' radio = self.redis.pubsub() #打开收音机
radio.subscribe(self.django_settings.TRIGGER_CHAN) #调频
radio.parse_response() #ready to watch 准备接听
print("\033[43;1m************start listening new triggers**********\033[0m")
self.trigger_count = 0
while True:
msg = radio.parse_response() #阻塞有数据的话,就往下走
self.trigger_consume(msg)
3、调频频道设置
settings配置如下内容
TRIGGER_CHAN = 'trigger_event_channel'
分布式监控系统开发【day38】:报警策略队列处理(五)的更多相关文章
- Python之路,Day20 - 分布式监控系统开发
Python之路,Day20 - 分布式监控系统开发 本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个 ...
- 分布式监控系统开发【day38】:报警策略设计(二)
一.策略和动作多对多的好处坏处 1.好处: 相同服务,相同策略的服务可以不用重复写好多次触发器 2.坏处: 1.策略A给小李和小罗发邮件2.策略B给小胡和小崔发邮件3.策略A是第三部发邮件4.策略B是 ...
- 分布式监控系统开发【day37】:需求讨论(一)
本节内容 为什么要做监控? 常用监控系统设计讨论 监控需求讨论 如何实现监控服务器的水平扩展? 监控系统架构设计 一.为什么要做监控? 熟悉IT监控系统的设计原理 开发一个简版的类Zabbix监控系统 ...
- Python之分布式监控系统开发
为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设计思路及架构解藕原则 常用监控系统设计讨论 Zabbix Nagios 监控系统需求 ...
- day26 分布式监控系统开发
本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设 ...
- 分布式监控系统开发【day38】:报警阈值程序逻辑解析(三)
一.需求讨论 1.请问如何解决延迟问题 1000台机器,每1分钟循环一次但是刚好第一次循环第一秒刚处理完了,结果还没等到第二分钟又出问题,你那必须等到第二次循环,假如我这个服务很重要必须实时知道,每次 ...
- 分布式监控系统开发【day38】:报警自动升级代码解析及测试(八)
一.报警自动升级代码解析 发送邮件代码 def action_email(self,action_obj,action_operation_obj,host_id,trigger_data): ''' ...
- 分布式监控系统开发【day38】:监控trigger表结构设计(一)
一.需求讨论 1.zabbix触发器的模板截图 1.zabbix2.4.7 2.zabbix3.0 2.模板与触发器关联的好处 好处就是可以批量处理,比如我说我有1000机器都要监控cpu.内存.IO ...
- 分布式监控系统开发【day38】:报警模块解析(六)
一.负责把达到报警条件的trigger进行分析 ,并根据 action 表中的配置来进行报警 1.目录结构 2.功能如下 1.找到trigger的关联动作, 2.收到的数据传给trigger_msg就 ...
随机推荐
- 2016 西普杯丶天津CTF预选赛(3/6)
哆啦A梦(图片隐写) 格式:SimCTF{ } 解:放到kail中binwalk一下(Binwalk是一个固件的分析工具,旨在协助研究人员对固件非分析,提取及逆向工程用处.简单易用,完全自动化脚本,并 ...
- Redis内存优化memory-optimization
https://redis.io/topics/memory-optimization 官方文档 一.特殊编码: 自从Redis 2.2之后,很多数据类型都可以通过特殊编码的方式来进行存储空间的优化 ...
- Offset Management For Apache Kafka With Apache Spark Streaming
An ingest pattern that we commonly see being adopted at Cloudera customers is Apache Spark Streaming ...
- Error response from daemon: conflict: unable to remove repository reference 解决方案
由于前一章演示用的镜像没什么用准备删除 docker image rm hello-world:latest Error response from daemon: conflict: unable ...
- python中的struct模块的学习
由于TCP协议中的黏包现象的发生,对于最low的办法,每次发送之前让他睡一秒,然后在发送,可是这样真的太low了,而且太占用资源了. 黏包现象只发生在tcp协议中: 1.从表面上看,黏包问题主要是因为 ...
- fastjson List转JSONArray以及JSONArray转List
1.fastjson List转JSONArrayList<T> list = new ArrayList<T>();JSONArray array= JSONArray.p ...
- Redtiger SQL注入练习(一)
感觉会的东西太少了,以后要多练习,多写博客.要坚持学习,一定不能放弃,为梦想奋斗. redtiger 这个平台早就开始做了,但是才做到第4关.... 第一关: 打开题, 先随便试,后来发现点击 Ca ...
- Java高级篇(四)——反射
之前写到了设计模式的代理模式,因为下一篇动态代理等内容需要用到反射的知识,所以在之前Java篇的基础上再写一篇有关反射的内容,还是以实际的程序为主,了解反射是做什么的.应该怎么用. 一.什么是反射 反 ...
- 为什么Fourier分析?
本文旨在给出Fourier分析的几个动机. 目录 波动方程 热导方程 Lapalce变换 求和公式 表示论 特征理论 参考资料 波动方程 考虑一维的波动方程最简单的边值问题$$u(x,t), x\in ...
- Kubernetes — 重新认识Docker容器
这一次,我要用+Docker+部署一个用+Python+编写的+Web+应用.这个应用的代码部分(app.py)非常简单: from flask import Flask import socket ...