一、目录结构

二、报警策略队列处理

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】:报警策略队列处理(五)的更多相关文章

  1. Python之路,Day20 - 分布式监控系统开发

    Python之路,Day20 - 分布式监控系统开发   本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个 ...

  2. 分布式监控系统开发【day38】:报警策略设计(二)

    一.策略和动作多对多的好处坏处 1.好处: 相同服务,相同策略的服务可以不用重复写好多次触发器 2.坏处: 1.策略A给小李和小罗发邮件2.策略B给小胡和小崔发邮件3.策略A是第三部发邮件4.策略B是 ...

  3. 分布式监控系统开发【day37】:需求讨论(一)

    本节内容 为什么要做监控? 常用监控系统设计讨论 监控需求讨论 如何实现监控服务器的水平扩展? 监控系统架构设计 一.为什么要做监控? 熟悉IT监控系统的设计原理 开发一个简版的类Zabbix监控系统 ...

  4. Python之分布式监控系统开发

    为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设计思路及架构解藕原则 常用监控系统设计讨论 Zabbix Nagios 监控系统需求 ...

  5. day26 分布式监控系统开发

    本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设 ...

  6. 分布式监控系统开发【day38】:报警阈值程序逻辑解析(三)

    一.需求讨论 1.请问如何解决延迟问题 1000台机器,每1分钟循环一次但是刚好第一次循环第一秒刚处理完了,结果还没等到第二分钟又出问题,你那必须等到第二次循环,假如我这个服务很重要必须实时知道,每次 ...

  7. 分布式监控系统开发【day38】:报警自动升级代码解析及测试(八)

    一.报警自动升级代码解析 发送邮件代码 def action_email(self,action_obj,action_operation_obj,host_id,trigger_data): ''' ...

  8. 分布式监控系统开发【day38】:监控trigger表结构设计(一)

    一.需求讨论 1.zabbix触发器的模板截图 1.zabbix2.4.7 2.zabbix3.0 2.模板与触发器关联的好处 好处就是可以批量处理,比如我说我有1000机器都要监控cpu.内存.IO ...

  9. 分布式监控系统开发【day38】:报警模块解析(六)

    一.负责把达到报警条件的trigger进行分析 ,并根据 action 表中的配置来进行报警 1.目录结构 2.功能如下 1.找到trigger的关联动作, 2.收到的数据传给trigger_msg就 ...

随机推荐

  1. 【记录】IntelliJ IDEA—IDEA2018-2019激活

    摘要 最智能的java ide [有能力请支持正版]     1.将 0.0.0.0 account.jetbrains.com 和 0.0.0.0 www.jetbrains.com添加到 host ...

  2. FreeFileSync 文件同步软件(windows)

    还有个更好的win同步软件,非常推荐使用: https://roov.org/2016/07/allway-sync/ 官方下载地址:https://freefilesync.org/download ...

  3. 持续代码质量管理-SonarQube-7.3简单使用

    安装了SonarQube以及Sonar Scanner之后,就需要那代码检测了.当然为了方便我们使用已有现成的demo,知道到对应的git地址下载即可. 1. sonar-examples下载 htt ...

  4. 模块简介:(logging)(re)(subprocess)

    ''' logging模块: logging的日志可以分为 debug():Detailed information, typically of interest only when diagnosi ...

  5. Spark RDD持久化、广播变量和累加器

    Spark RDD持久化 RDD持久化工作原理 Spark非常重要的一个功能特性就是可以将RDD持久化在内存中.当对RDD执行持久化操作时,每个节点都会将自己操作的RDD的partition持久化到内 ...

  6. pc端移动端拖拽实现

    #div1 { width: 100px; height: 100px; background: red; position: absolute; } html <div id="di ...

  7. Android开发欢迎页点击跳过倒计时进入主页

    没点击跳过自然进入主页,点击跳过之后立即进入主页     1.欢迎页布局activity_sp.xml放一张背景图(图片随你便啦)再放一个盛放倒计时的TextView   <?xml versi ...

  8. ZJOI2019做题笔记

    麻将(期望.DP套DP) 先考虑如何计算一个子集是否能胡. 设\(f_{i,0/1,j,k}\)表示考虑了子集中\(1 \sim i\)的牌,是否找到对子,\(i-1,i,i+1\)预计拿\(j\)个 ...

  9. Asp.Net Core使用NLog+Mysql的几个小问题

    项目中使用NLog记录日志,很好用,之前一直放在文本文件中,准备放到db中,方便查询. 项目使用了Mysql,所以日志也放到Mysql上,安装NLog不用说,接着你需要安装Mysql.Data安装包: ...

  10. 微信小程序代码快速转化为H5代码的方法!

    1.把小程序html里面的如下标签对应改成小程序的标签,即可快速转化成H5的页面! 利用ctrl+H将下面的对应标签全部替换! html: <view === <div </view ...