open-falcon监控系统组件学习之——judge组件

本文深入解析Open-Falcon监控系统中Judge模块的工作原理,包括监控数据分类、数据模型、告警模板参数、模块启动流程及告警检测机制,为理解与优化系统性能提供全面指南。

在 open-falcon 监控系统中,judge 模块负责告警判断,它会定期向 hbs 请求告警策略信息,然后将告警信息推送到 redis ,本文向大家介绍 judge 是如何进行告警诊断的,希望对你有帮助。

阅读前需要了解的概念:
1. 监控数据分类
  • GAUGE:实测值,直接使用采集的原始数值,比如气温;
  • COUNTER:记录连续增长的数据,只增不减。比如汽车行驶里程,网卡流出流量,cpu_idle等;
  • DERIVE:变化率,类似COUNTER ,但是可增可减;

GAUGE 类型的值在进行告警诊断的时候直接与告警值比较即可,另外两种则需要根据差值进行判断。

2. 数据模型

open-falcon的"监控项"模型如下:

{
   
   
    metric: cpu.busy,               // 监控项名称
    endpoint: open-falcon-host,     // 目标服务器的主机名
    tags: srv=falcon,group=az1,     // tag标签,作用是聚合和归类,在配报警策略时会比较方便。
    value: 10,                      // 监控项数值
    timestamp: `date +%s`,          // 采集时间
    counterType: GAUGE,             // 监控项类型。 只能是COUNTER或者GAUGE二选一,前者表示该数据采集项为计时器类型,后者表示其为原值 (注意大小写)
    step: 60                        // 采集间隔。 秒。
}

这种模型有两个好处:

  • 一是方便从多个维度来配置告警

    比如tag的使用起到了给机器进行归类的作用,比如有3台机器:host1、host2和host3,如果tags依次配置为"group=java", "group=java"和"group=erlang",那么配置报警策略"metric=cpu/group=java“时就只会对java标签的机器(即host1,host2)生效。
    
  • 二是可以灵活的进行自主数据采集。

    由于agent会自发现的采集很多基本的系统指标,但是对业务应用等需要研发人员自己写脚本收集和上报。这里openfalcon定义了监控项模型,相当于定义了一个规范,当研发人员需要监控某个对象(比如mysql、redis等),只需采集数据,并遵守规范包装成监控项模型,再上报即可。
    
3. 告警模板参数说明
type Strategy struct {
   
   
	Id         int               `json:"id"`
	Metric     string            `json:"metric"`     // 告警适用的 metric
	Tags       map[string]string `json:"tags"`       // 告警适用的 tag
	Func       string            `json:"func"`       // e.g. max(#3) all(#3)
	Operator   string            `json:"operator"`   // e.g. < !=
	RightValue float64           `json:"rightValue"` // 告警阈值
	MaxStep    int               `json:"maxStep"`    // 表示该数据采集项的汇报周期,这对于后续的配置监控策略很重要,必须明确指定。
	Priority   int               `json:"priority"`   // 比如P0/P1/P2等等,每个及别的报警都会对应不同的redis队列
	Note       string            `json:"note"`       // 告警信息
	Tpl        *Template         `json:"tpl"`
}

需要重点说的是 func 参数,下面是 func 参数可以配置的类型:

  • max 根据最大值判断是否触发告警。

    max(#3): 对于最新的3个点,其最大值满足阈值条件则报警
    
  • min 根据最小值判断是否触发告警。

    min(#3): 对于最新的3个点,其最小值满足阈值条件则报警
    
  • all

    all(#3): 最新的3个点都满足阈值条件则报警
    
  • sum 根据和判断是否触发告警。

    sum(#3): 对于最新的3个点,其和满足阈值条件则报警
    
  • avg 根据平均值判断是否触发告警。

    avg(#3): 对于最新的3个点,其平均值满足阈值条件则报警
    
  • diff 只要有一个点的diff触发阈值,就报警,diff是当前值减去历史值

    diff(#3): 拿最新push上来的点(被减数),与历史最新的3个点(3个减数)相减,得到3个差,只要有一个差满足阈值条件则报警
    
  • pdiff

    pdiff(#3): 拿最新push上来的点,与历史最新的3个点相减,得到3个差,再将3个差值分别除以减数,得到3个商值,只要有一个商值满足阈值则报警
    
  • lookup

    lookup(#2,3): 最新的3个点中有2个满足条件则报警;
    
  • stddev

    离群点检测函数,更多请参考3-sigma算法:https://en.wikipedia.org/wiki/68%E2%80%9395%E2%80%9399.7_rule
    	stddev(#10) = 3 //取最新 **10** 个点的数据分别计算得到他们的标准差和均值,分别计为 σ 和 μ,其中当前值计为 X,那么当 X 落在区间 [μ-3σ, μ+3σ] 之外时则报警。
    
4. falcon_protal 数据库表结构

在这里插入图片描述

一、 judge 模块的启动流程

1. 加载配置文件
{
   
   
    "debug": true,
    "debugHost": "nil",
    "remain": 11,
    "http": {
   
   
        "enabled": true,
        "listen": "0.0.0.0:6081"
    },
    "rpc": {
   
   
        "enabled": true,
        "listen": "0.0.0.0:6080"
    },
    "hbs": {
   
   
        "servers": ["127.0.0.1:6030"], # hbs最好放到lvs vip后面,所以此处最好配置为vip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值