一、策略和动作多对多的好处坏处
1、好处:
相同服务,相同策略的服务可以不用重复写好多次触发器
2、坏处:
1、策略A给小李和小罗发邮件
2、策略B给小胡和小崔发邮件
3、策略A是第三部发邮件
4、策略B是第五步发邮件
二、解决问题与代码实现
1、trigger发生后,如何报警
1、解决了什么问题
1、问题恢复自定义通知
2、触发是触发器决定,报警不报警是报警中心说了算,一个是收集部门,一个是处理部门
3、报警的次数报警升级阈值
4、通知组别
5、脚本名称相当与故障自愈
2、代码实现
2、报警动作列表
1、解决了什么问题
1、触发和动作是多对一
2、动作列表
3、报警多少次与多少次中间报警
4、报警策略,一个策略包含很多动作
5、策略和动作多对多的好处坏处
2、代码实现
三、和去年写的代码的区别
1、区别内容:
1、之前的triggers关联的是模板
2、之前是多对多,现在是一对多
2、区别的代码:
1、之前的triggers关联的是模板
host_groups = models.ManyToManyField('HostGroup',blank=True) #在template里已经关联了主机和tirgger了,为什么这里还要有 hosts = models.ManyToManyField('Host',blank=True)
2、之前triggers是多对多,现在是一对多
triggers = models.ManyToManyField('Trigger',blank=True,help_text=u"想让哪些trigger触发当前报警动作")
四、后台操作
1、admin注册文件
from django.contrib import admin from django import forms from monitor import models # Register your models here. from django.contrib.auth.admin import UserAdmin from django.contrib.auth.forms import ReadOnlyPasswordHashField class HostAdmin(admin.ModelAdmin): list_display = ('id','name','ip_addr','status') filter_horizontal = ('host_groups','templates') class TemplateAdmin(admin.ModelAdmin): filter_horizontal = ('services','triggers') class ServiceAdmin(admin.ModelAdmin): filter_horizontal = ('items',) list_display = ('name','interval','plugin_name') #list_select_related = ('items',) class TriggerExpressionInline(admin.TabularInline): model = models.TriggerExpression #exclude = ('memo',) #readonly_fields = ['create_date'] class TriggerAdmin(admin.ModelAdmin): list_display = ('name','severity','enabled') inlines = [TriggerExpressionInline,] #filter_horizontal = ('expressions',) class TriggerExpressionAdmin(admin.ModelAdmin): list_display = ('trigger','service','service_index','specified_index_key','operator_type','data_calc_func','threshold','logic_type') admin.site.register(models.Host,HostAdmin) admin.site.register(models.HostGroup) admin.site.register(models.Template,TemplateAdmin) admin.site.register(models.Service,ServiceAdmin) admin.site.register(models.Trigger,TriggerAdmin) admin.site.register(models.TriggerExpression,TriggerExpressionAdmin) admin.site.register(models.ServiceIndex) admin.site.register(models.Action) admin.site.register(models.ActionOperation) #admin.site.register(models.ActionCondtion,ActionConditionAdmin) admin.site.register(models.Maintenance) admin.site.register(models.UserProfile,UserProfileAdmin) admin.site.register(models.EventLog)
2、后台创建表达式
1、创建截图
2、创建完成
3、表达式列表
3、triggers和表达式有关联表达式吗?
1、反向的关联
- triggers和表达式有关联表达式吗?
- 反向的,triggers表达式关联的trigger
- 正常在在admin应该是triggeradmin里能看到trigger
- 没有直接关联的,我想看到反向关联的数据
2、实现代码如下:
class TriggerExpressionInline(admin.TabularInline): model = models.TriggerExpression #exclude = ('memo',) #readonly_fields = ['create_date'] class TriggerAdmin(admin.ModelAdmin): list_display = ('name','severity','enabled') inlines = [TriggerExpressionInline,] #filter_horizontal = ('expressions',