CAT告警配置

1.背景

CAT自带一个告警规则,便于对告警有一个宏观的了解。合理、灵活的监控规则可以帮助更快、更精确的发现业务线上故障。

规则解释:

  • 监控对象:cat项目下,Type为URL的Transaction,且不按照Name筛选
  • 监控指标:该Transaction每分钟的执行次数
  • 监控时段:监控规则检测的时段,从00:00~24:00,即每天全天监控
  • 监控周期:每分钟执行一次告警监控
  • 持续分钟:每次监控,检查最近几分钟的数据,这里是检查最近1分钟的数据
  • 告警规则:当Transaction每分钟的执行次数大于1时,命中告警

2.告警通用配置

  • 告警服务器配置

只有配置为告警服务器的机器,才会执行告警逻辑;只有配置为发送服务器的机器,才会发送告警。全局系统配置-->服务端配置 对告警服务器增加<property name="alarm-machine" value="true"/>配置、以及<property name="send-machine" value="true"/>配置。

说明: id="default"是默认的配置信息,server id="127.0.0.1" 如下的配置是表示本机节点配置覆盖default的配置信息,比如下面的job-machine,alarm-machine,send-machine为true。

  • 应用告警配置

说明:

Transaction告警

对Transaction的告警,支持的指标有次数、延时、失败率;监控周期:一分钟

配置说明:

  • 项目名:要监控的项目名
  • type:被监控transaction的type
  • name:被监控transaction的name;如果为All,代表全部name
  • 监控指标:次数、延时、失败率
  • 告警规则:详情见告警规则部分
  • 告警规则

目前CAT的监控规则有五个要素,请按照以下五点要素制定规则:

  • 告警时间段。同一项业务指标在每天不同的时段可能有不同的趋势。设定该项,可让CAT在每天不同的时间段执行不同的监控规则。注意:告警时间段,不是监控数据的时间段,只是告警从这一刻开始进行检查数据
  • 规则组合。在一个时间段中,可能指标触发了多个监控规则中的一个规则就要发出警报,也有可能指标要同时触发了多个监控规则才需要发出警报。这种关系好比电路图中的并联和串联。规则的组合合理有助于提高监控的准确度
  • 监控规则类型。通过以下六种类型对指标进行监控:最大值、最小值、波动上升百分比、波动下降百分比、总和最大值、总和最小值
  • 监控最近分钟数。设定时间后(单位为分钟),当指标在设定的最近的时间长度内连续触发了监控规则,才会发出警报。比如最近分钟数为3,表明连续三分钟的数组都满足条件才告警。如果分钟数为1,表示最近的一分钟满足条件就告警
  • 规则与被监控指标的匹配。监控规则可以按照名称、正则表达式与监控的对象(指标)进行匹配

告警时间

  1. 告警时间段,08:00 - 20:00,是指告警从08:00开始进行数据检查,直到20:00
  2. 检查的数据是根据告警时间段和下面设置的“监控最近分钟数”来决定的
  3. 如果只想进行边界告警(即只判断最近的变化情况),而不是水平告警(不关心最近的几分钟时间区间内的变化趋势),可以直接设置“监控最近分钟数”为1,即为判断最后一分钟数据的情况
  4. 如果对告警时间精度要求较高的业务方,可以参考进行斟酌

监控条件与子条件:

一个告警规则由多个监控条件组成。一个规则下的多个监控条件为并联关系,当一个监控条件被触发,整个规则就被触发。

监控条件中的持续分钟数表示该条件的持续时间。设定时间单位为分钟。当指标在设定的时间长度内连续触发了该条规则,才会触发该监控条件。

监控条件由子条件组成。一个condition下的多个子条件为串联关系,只有当一个监控条件下的全部子条件被触发,该监控条件才被触发。

  • 告警策略

告警策略:配置某种告警类型、某个项目、某个错误级别,对应的告警发送渠道,以及暂停时间。

举例:下述配置示例,说明对于Transaction告警

  • 当告警级别为error时,发送渠道为邮件、短信、微信,连续告警之间的间隔为5分钟

  • 当告警级别为warning时,发送渠道为邮件、微信,连续告警之间的间隔为5分钟

配置说明:

  • type:告警的类型,可选:Transaction、Event、Business、Heartbeat
  • group id属性:group可以为default,代表默认,即所有项目;也可以为项目名,代表某个项目的策略,此时default策略不会生效
  • level id属性:错误级别,分为warning代表警告、error代表错误
  • level send属性:告警渠道,分为mail-邮箱、weixin-微信、sms-短信
  • level suspendMinute属性:连续告警的暂停时间

告警接收人

告警接收人,为告警所属项目的联系人:

  • 项目组邮件:项目负责人邮件,或项目组产品线邮件,多个邮箱由英文逗号分割,不要留有空格;作为发送告警邮件、微信的依据
  • 项目组号码:项目负责人手机号;多个号码由英文逗号分隔,不要留有空格;作为发送告警短信的依据。

发送邮件

说明:url为发送邮件的controller,示例代码如下:

package com.gdie.cat.rest;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.util.Map;

@RestController
public class EmailController {

    private static final Logger log = LoggerFactory.getLogger(EmailController.class);



    @PostMapping(value = "/sendEmail")
    public void sendEmail(HttpServletRequest request, HttpServletResponse response) throws Exception {
        Map<String, String[]> parameterMap = request.getParameterMap();

        for (Object o:parameterMap.keySet() ) {
            System.out.println(o+":" +parameterMap.get(o)[0].toString());
        }
        try {
            HtmlEmail email = new HtmlEmail();
            email.setHostName("smtp.139.com");
            email.setCharset("utf-8");
            email.addTo(parameterMap.get("to")[0]);
            email.setFrom("你的邮箱");
            email.setAuthentication("你的邮箱","邮箱密码");
            email.setSubject(parameterMap.get("value")[0].substring(0,16));
            email.setMsg(parameterMap.get("value")[0]);
            email.send();
        } catch (EmailException e) {
            e.printStackTrace();
        }
        response.setStatus(200);
        PrintWriter pw = response.getWriter();
        pw.write("200");
        pw.flush();
        pw.close();
    }

}

需要导入的邮件发送maven依赖如下:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-email</artifactId>
  <version>1.5</version>
</dependency>

如上配置,如果超过10次访问该项目就会触发告警机制。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值