分布式监控系统开发【day38】:监控trigger表结构设计(一)
一、需求讨论
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表结构设计(一)的更多相关文章
- 分布式监控系统开发【day37】:表结构设计(二)
一.表结构关系图 二.表结构需求讨论 1.主机表(Host) 1.解决了什么问题? 1.如果我不想让它监控了,就有一个开关的东西给它禁掉2.主机存活状态检测间隔 2.代码 class Host(mod ...
- Python之路,Day20 - 分布式监控系统开发
Python之路,Day20 - 分布式监控系统开发 本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个 ...
- day26 分布式监控系统开发
本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设 ...
- Python之分布式监控系统开发
为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设计思路及架构解藕原则 常用监控系统设计讨论 Zabbix Nagios 监控系统需求 ...
- 分布式监控系统开发【day37】:需求讨论(一)
本节内容 为什么要做监控? 常用监控系统设计讨论 监控需求讨论 如何实现监控服务器的水平扩展? 监控系统架构设计 一.为什么要做监控? 熟悉IT监控系统的设计原理 开发一个简版的类Zabbix监控系统 ...
- 基于SkyWalking的分布式跟踪系统 - 微服务监控
上一篇文章我们搭建了基于SkyWalking分布式跟踪环境,今天聊聊使用SkyWalking监控我们的微服务(DUBBO) 服务案例 假设你有个订单微服务,包含以下组件 MySQL数据库分表分库(2台 ...
- 基于类和redis的监控系统开发
最近学习python运维开发,编写得一个简单的监控系统,现记录如下,仅供学习参考. 整个程序分为7个部分: 第一个部分根据监控架构设计文档架构如下: .├── m_client│ ├── conf ...
- 分布式监控系统Zabbix3.2监控数据库的连接数
在 分布式监控系统Zabbix3.2跳坑指南 和 分布式监控系统Zabbix3.2给异常添加邮件报警 已经介绍了如何安装以及报警.此篇通过介绍监控数据库的3306端口连接数来了解如何监控其它端口和配置 ...
- 阶段2-新手上路\项目-移动物体监控系统\Sprint3-移动监控主系统设计与开发
移动图像监控系统 去找一些相关开源程序进行移植:百度搜索-linux 移动监控 motion是一套免费开源的移动图像监测程序 前面我们已经使用了很多开源软件,他们的使用方法都是大同小异的 1).先在当 ...
- 移动物体监控系统-sprint3移动监控主系统设计与开发
一.移动监控的原理 通过获取摄像头图像,比较前后每一帧的图像数据,从而实现移动物体监控.所有移动监控原理都是这样,只是图像帧的对比的算法不一样. 二.移动物体监控系统的实现 选择开源的移动监控软件mo ...
随机推荐
- VS根据数据库生成实体类
一.在类库项目上添加新项 二. 三.依次填入数据库连接 选择数据库 就可以生成数据库实体
- Linux内存描述之内存页面page--Linux内存管理(四)
1 Linux如何描述物理内存 Linux把物理内存划分为三个层次来管理 层次 描述 存储节点(Node) CPU被划分为多个节点(node), 内存则被分簇, 每个CPU对应一个本地物理内存, 即一 ...
- Linux内存描述之内存节点node--Linux内存管理(二)
1 内存节点node 1.1 为什么要用node来描述内存 这点前面是说的很明白了, NUMA结构下, 每个处理器CPU与一个本地内存直接相连, 而不同处理器之前则通过总线进行进一步的连接, 因此相对 ...
- GitHub的初级使用
最近准备学习一个GitHub的使用 一.账号创建 1.百度找到GitHub官方网站(https://github.com/ ) 2.点击Sign up注册GitHub账号 下图为注册页面 第一步:填写 ...
- 【Teradata SQL】创建数据库和表
1.数据库perm大小为10G Create database testbase as perm=10E9,spool=10E9; 2.创建物理表 create multiset table stg( ...
- dotnetcore ueditor
dotnetcore ueditor https://github.com/durow/ueditornetcore http://www.cnblogs.com/durow/p/6116393.h ...
- 012_py之证书过期监测及域名使用的py列表的并集差集交集
一.由于线上域名证书快要过期,需要进行监测,顾写了一个方法用于线上证书过期监测,如下: import ssl,socket,pprint def check_domain_sslexpired(dom ...
- OllyDbg使用笔记
[TOC] OD步过后,返回到之前某位置,重新单步执行 找到你想返回的行, 右键选择New origin here,快捷键Ctrl+Gray *, 然后程序会返回到这一行,再次按F7或者F8等执行即可
- Strem_01
import 'package:flutter/material.dart';import 'dart:async';import 'dart:ui'; void main()=>runApp( ...
- 从PyMongo看MongoDB Read Preference
在CAP理论与MongoDB一致性.可用性的一些思考一文中提到,MongoDB提供了一些选项,如Read Preference.Read Concern.Write Concern,对MongoD ...