一、需求讨论

1、zabbix触发器的模板截图

1、zabbix2.4.7

2、zabbix3.0

2、模板与触发器关联的好处

好处就是可以批量处理,比如我说我有1000机器都要监控cpu、内存、IO的监控

3、模板触发器多对多的优缺点

1、优点:

可以批量引用,不用重复创建相同的模板,比如我说我有1000机器都要监控cpu、内存、IO的监控创建相同的触发器,

2、缺点:

模板1更改触发器的阀值会影响所有的模板

3、生产不建议使用多对多的关系,这样灵活性就会很差,而且修改模板1会影响别的模板,这样会出现很多坑

4、表达式的创建考虑的逻辑处理

二、实现代码

1、触发器表

class Trigger(models.Model):
name = models.CharField(u'触发器名称',max_length=64)
severity_choices = (
(1,'Information'),
(2,'Warning'),
(3,'Average'),
(4,'High'),
(5,'Diaster'),
)
#expressions = models.ManyToManyField(TriggerExpression,verbose_name=u"条件表达式")
severity = models.IntegerField(u'告警级别',choices=severity_choices)
enabled = models.BooleanField(default=True)
memo = models.TextField(u"备注",blank=True,null=True) def __str__(self):
return "<serice:%s, severity:%s>" %(self.name,self.get_severity_display())

2、触发器表达式表

class TriggerExpression(models.Model):
trigger = models.ForeignKey('Trigger',verbose_name=u"所属触发器")
service = models.ForeignKey(Service,verbose_name=u"关联服务")
service_index = models.ForeignKey(ServiceIndex,verbose_name=u"关联服务指标")
specified_index_key = models.CharField(verbose_name=u"只监控专门指定的指标key",max_length=64,blank=True,null=True)
operator_type_choices = (('eq','='),('lt','<'),('gt','>'))
operator_type = models.CharField(u"运算符",choices=operator_type_choices,max_length=32)
data_calc_type_choices = (
('avg','Average'),
('max','Max'),
('hit','Hit'),
('last','Last'),
)
data_calc_func= models.CharField(u"数据处理方式",choices=data_calc_type_choices,max_length=64)
data_calc_args = models.CharField(u"函数传入参数",help_text=u"若是多个参数,则用,号分开,第一个值是时间",max_length=64)
threshold = models.IntegerField(u"阈值")
logic_type_choices = (('or','OR'),('and','AND'))
logic_type = models.CharField(u"与一个条件的逻辑关系",choices=logic_type_choices,max_length=32,blank=True,null=True) def __str__(self):
return "%s %s(%s(%s))" %(self.service_index,self.operator_type,self.data_calc_func,self.data_calc_args)

分布式监控系统开发【day38】:监控trigger表结构设计(一)的更多相关文章

  1. 分布式监控系统开发【day37】:表结构设计(二)

    一.表结构关系图 二.表结构需求讨论 1.主机表(Host) 1.解决了什么问题? 1.如果我不想让它监控了,就有一个开关的东西给它禁掉2.主机存活状态检测间隔 2.代码 class Host(mod ...

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

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

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

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

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

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

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

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

  6. 基于SkyWalking的分布式跟踪系统 - 微服务监控

    上一篇文章我们搭建了基于SkyWalking分布式跟踪环境,今天聊聊使用SkyWalking监控我们的微服务(DUBBO) 服务案例 假设你有个订单微服务,包含以下组件 MySQL数据库分表分库(2台 ...

  7. 基于类和redis的监控系统开发

    最近学习python运维开发,编写得一个简单的监控系统,现记录如下,仅供学习参考. 整个程序分为7个部分: 第一个部分根据监控架构设计文档架构如下: .├── m_client│   ├── conf ...

  8. 分布式监控系统Zabbix3.2监控数据库的连接数

    在 分布式监控系统Zabbix3.2跳坑指南 和 分布式监控系统Zabbix3.2给异常添加邮件报警 已经介绍了如何安装以及报警.此篇通过介绍监控数据库的3306端口连接数来了解如何监控其它端口和配置 ...

  9. 阶段2-新手上路\项目-移动物体监控系统\Sprint3-移动监控主系统设计与开发

    移动图像监控系统 去找一些相关开源程序进行移植:百度搜索-linux 移动监控 motion是一套免费开源的移动图像监测程序 前面我们已经使用了很多开源软件,他们的使用方法都是大同小异的 1).先在当 ...

  10. 移动物体监控系统-sprint3移动监控主系统设计与开发

    一.移动监控的原理 通过获取摄像头图像,比较前后每一帧的图像数据,从而实现移动物体监控.所有移动监控原理都是这样,只是图像帧的对比的算法不一样. 二.移动物体监控系统的实现 选择开源的移动监控软件mo ...

随机推荐

  1. Oracle 12c RAC 静默安装文档

    参考文档: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/cwlin/index.html https://docs. ...

  2. iOS开发者学习Flutter

    Flutter for iOS 开发者 本文档适用那些希望将现有 iOS 经验应用于 Flutter 的开发者.如果你拥有 iOS 开发基础,那么你可以使用这篇文档开始学习 Flutter 的开发. ...

  3. js获取时间相关函数

    js获取时间函数 var myDate = new Date; var year = myDate.getFullYear();//获取当前年 var yue = myDate.getMonth()+ ...

  4. Pycharm 消除波浪线

    转载:https://blog.csdn.net/youyouran12314/article/details/77719261 Pycharm环境下显示 在代码中显示许多波浪线,查看详情显示Spel ...

  5. 基于Angular和Spring WebFlux做个小Demo

    前言 随着Spring Boot2.0正式发布,Spring WebFlux正式来到了Spring Boot大家族里面.由于Spring WebFlux可以通过更少的线程去实现更高的并发和使用更少的硬 ...

  6. 英语口语练习系列-C02-抱怨

    连接到英语口语系列总分类 连接到上一章棒棒的 竹石 郑燮 zhèng xiè 竹石 作者:郑燮 咬定青山不放松,立根原在破岩中. 千磨万击还坚劲,任尔东西南北风. Our team sucks. 我们 ...

  7. Python进程池Pool

    ''' 进程池,启动一个进程就要克隆一份数据,假设父进程1G,那么启动进程开销很大 避免启动太多造成系统瘫痪,就有进程池,即同一时间允许的进程数量 ps:线程没有池,因为线程启动开销小,线程有类似信号 ...

  8. eclipse下将maven项目打包为jar(1.不带第三方jar,2.带第三方jar)

    由于项目需要讲maven项目打包为jar包,由于之前没类似经验,百度找例子走了不少弯路,这边随手记录下,网上说的 开发工具:eclipse jar包管理:maven 一般打包出来的jar包分为两种 一 ...

  9. 理解koa-router 路由一般使用

    阅读目录 一:理解koa-router一般的路由 二:理解koa-router命名路由 三:理解koa-router多个中间件使用 四:理解koa-router嵌套路由 五:分割路由文件 回到顶部 一 ...

  10. MongoDB install

    下载地址1:https://www.mongodb.org/dl/linux下载地址2:https://www.mongodb.com/download-center/community关于Mongo ...