CMDB项目之监控模板template设计

  1. 用过zabbix的人都知道各种监控项目都是建立在模板的基础上,然后自己也模仿做一个监控系统
  2. 先画张关系图,是自己以后设计监控系统的模板图

    设计一个父类template模板类,接下来就是各种具体的模板,比如linux监控的模板、Windows监控的模板或者是自定义模板等等,再拿linux的模板来说,linuxTemplate下面肯定监控CPU、内存、硬盘等信息,暂且把这些监控的服务都称为一个服务的集合service list,然后CPU下面才是真正的每一个监控项,如cpu的iowait、usage、idle等等

  3. models设计
  4. class Templates(models.Model):  #monitor template
        name = models.CharField(max_length=50, unique=True)
        service_list =  models.ManyToManyField(‘ServiceList‘)
        
        def __unicode__(self):
            return self.name

定义了一个Template类,有该模板的名字,主意Template和ServiceList这两个类的对应关系:多对多,即意味着一个模板可以对应多个服务集合,一个服务集合也可以对应多个模板,就像linuxTemplate会包含CPU、MEM等,CPU也可以属于LinuxTemplate和WinTemplate一样

class ServiceList(models.Model): 
    name = models.CharField(max_length=50,unique=True)
    service = models.ForeignKey(‘Services‘)
    check_interval = models.IntegerField(default=300)
    conditons = models.ManyToManyField(‘Conditions‘,verbose_name=u‘监控阀值‘,null=True,blank=True)
   
    description = models.TextField()
   
    def __unicode__(self):
        return self.name

上面是ServiceList类,正如前面提到的,ServiceList包含Services,所以service这一列是ServicesList的外键;此外ServiceList还和Conditions也是多对多的关系,每个服务集合都有监控计算阀值的方法,而这些计算方法也可以被多个服务集合所使用

再看看Conditions(监控报警阀值计算)这个类

class Conditions(models.Model):
    name = models.CharField(max_length=100,unique=True)
    item = models.ForeignKey(‘Items‘, verbose_name=u‘监控值‘)
    formula = models.ForeignKey(‘Formulas‘, verbose_name=u‘运算函数‘,null=True,blank=True)
    operator = models.ForeignKey(Operators,verbose_name=u‘运算符‘,null=True,blank=True)
    data_type = models.CharField(default=‘char‘,max_length=32, verbose_name=u‘数据类型‘)
    threshold = models.CharField(max_length=64, verbose_name=u‘阀值‘)
    def __unicode__(self):
        return self.name

同样,有name列,还有外键item‘监控值’、formula‘运算函数’、operator‘运算符’、data_type‘数据类型‘、threshold‘阀值’

同理,看下Conditions类关联的一些类表

Items类:

class Items(models.Model): # monitor item
    name = models.CharField(max_length=50, unique=True)
    key = models.CharField(max_length=100,unique=True)
    data_type_option = ((‘float‘,‘Float‘),(‘string‘,‘String‘),(‘integer‘, ‘Integer‘) ) 
    data_type = models.CharField(max_length=50, choices=data_type_option)
    unit = models.CharField(max_length=30,default=‘%‘)
    enabled = models.BooleanField(default=True)
    def __unicode__(self):
        return self.name

Formulas类

class Formulas(models.Model):
    name = models.CharField(max_length=64,unique=True)
    key = models.CharField(max_length=64,unique=True)
    memo = models.TextField()
    
    def __unicode__(self):
        return self.name

Operators类

class Operators(models.Model):
    name = models.CharField(max_length=32,unique=True)    
    key = models.CharField(max_length=32)    
    memo = models.TextField()
    def __unicode__(self):
        return self.name

基本上监控模板表结构算是设计完了

时间: 2024-10-13 00:07:12

CMDB项目之监控模板template设计的相关文章

使用zabbix自带MySQL监控模板监控MySQL

目前使用的zabbix版本是2.2.3,自带MySQL监控模板Template App MySQL,只是监控项目比较少.如果只是想对MySQL进行基本的监控,可以使用这个模板,如果要详细监控MySQL的各种信息,例如数据库的各种状态,主从复制状态,InnoDB状态等信息需要另外编写模板.后续再讨论. 参考文章 http://os.51cto.com/art/201404/435139.htm https://zabbix.org/mw/images/d/d4/Template_App_MySQL

zabbix监控模板修改及调优(不完整版)

简介监控一直在不同的层面为我们的运维工作发挥着重要的作用:网络层监控,及时发现网络间的访问质量(如我们之前介绍的全国maps网络监控):服务器监控,了解服务器各项性能参数(如常见的zabbix.cacti.nagios.ganglia等):应用性能监控,深入监测具体业务的性能情况(如我们之前提到的APM监控系统)其中,服务器监控作为一种传统的监控类型,我们结合不同场景中也用到了多种方案.而在众多方案中,zabbix由于其强大的功能和灵活的自动化特性,尤其得到我们的广泛使用.为了打造出适合自己的z

第六周 【项目6-复数模板类】(3)

运行代码: /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *dood luck *文件名称:d.cpp *作 者:张旺华 *完成日期:2015年4月15日 *版 本 号:v1.0 * */ //项目6-复数模板类] //该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定只能是double型的. //可以通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时指定的实际类型. //(1)要求类成员

第六周 【项目6-复数模板类】

运行代码: <span style="font-size:18px;">/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *dood luck *文件名称:d.cpp *作 者:张旺华 *完成日期:2015年4月15日 *版 本 号:v1.0 * */ //项目6-复数模板类] //该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定只能是double型的. //可以通过模板类的技术手段,设计C

Django之模板Template

模板介绍 作为Web框架,Django提供了模板,可以很便利的动态生成HTML 模版系统致力于表达外观,而不是程序逻辑 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用 模板包含 HTML的静态部分 动态插入内容部分 Django模板语言,简写DTL,定义在django.template包中 由startproject命令生成的settings.py定义关于模板的值: DIRS定义了一个目录列表,模板引擎按列表顺序

zabbix 自带linux监控模板监控cpu load不准

修改模板(Template OS Linux)--项目--Processor load (1 min average per core)--键值: 把 system.cpu.load[percpu,avg1] 改为 system.cpu.load[all,avg1] 同样修改Processor load (5 min average per core)和Processor load (15 min average per core)两个项目 Zabbix监控windows的CPU利用率和其他资源

zabbix服务器添加监控主机,使用监控模板及自定义监控项

上一篇博文记录了<Ubuntu系统LNMP环境下安装配置zabbix3.04>,这里我记录了添加监控主机,添加监控模板和自定义监控CPU 添加监控主机 1.监控主机安装zabbix-agent $ sudo apt-get install zabbix-agent 2.修改zabbix_agent.conf配置文件 $ sudo vi /etc/zabbix/zabbix_agentd.conf - Server=120.40.*.* #zabbix-server端IP - ServerAct

基于海康监控的图像识别设计

基于海康监控的图像识别设计 一.基本知识和背景      ?目前,安防行业正从网络化向智能化升级:从简单的视频获取.图像截获向内容分析.自动跟踪进化.借助监控摄像头,进行图像识别或机器视觉设计的需求,变得越来越强烈.这里分享一些自己的研究. 我选用海康监控,因为目前只能接触到这种监控,其他的品牌应该差不多.关键是思路. 在这篇文章里面,实现1)控制监控摄像头获取图像2)用opencv进行简单处理3)获得量化数据一个过程.需要注意的一点是,我这里没有直接对视频流进行操作,因为目前我还没有这个需求.

C++设计模式实现--模板(Template)模式

一. 问题 在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的.Template提供了这种情况的一个实现框架. 二. 模式 Template 模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节. 三. 代码 [cpp] view plaincopy //抽象基类,实现了一个模板方法 class AbstractClass { pu