skywalking(二)告警相关配置

7 篇文章 0 订阅
5 篇文章 1 订阅

前言

        继上一篇配置了skywalking+nacos+gateway+demoservice之后,这一篇主要提供一个skywalking告警规则的配置,及dingding告警相关数据的发送。

正文

告警基本流程

        skywalking发送告警的基本原理是每隔一段时间轮询skywalking-collector收集到的链路追踪的数据,再根据所配置的告警规则(如服务响应时间、服务响应时间百分比)等,如果达到阈值则发送响应的告警信息。发送告警信息是以线程池异步的方式调用webhook接口完成,(具体的webhook接口可以使用者自行定义),从而开发者可以在指定的webhook接口中自行编写各种告警方式,钉钉告警、邮件告警等等。

告警相关配置

  1. 开启skywalking相关告警配置,编辑 config/alarm-settings.yml,打开之后如下所示:rules即为需要配置的告警规则的列表;第一个规则‘endpoint_percent_rule’,是规则名,不能重复且必须以’_rule’为结尾;其中里面的属性:
属性含义
metrics-name指定的规则(与规则名不同,这里是对应的告警中的规则map,具体可查看https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/backend-alarm.md#list-of-all-potential-metrics-name,其中一些常见的,endpoint_percent_rule——端点相应半分比告警,service_percent_rule——服务相应百分比告警)
threshold阈值,与metrics-name和下面的比较符号相匹配
op比较操作符,可以设定>,<,=,即如metrics-name: endpoint_percent, threshold: 75,op: < ,表示如果相应时长小于平均75%则发送告警
period多久检查一次当前的指标数据是否符合告警规则
counts达到多少次告警后,发送告警消息
silence-period在多久之内,忽略相同的告警消息
message告警消息内容
include-names使用本规则告警的服务列表
rules:
  # Rule unique name, must be ended with `_rule`.
  endpoint_percent_rule:
    # Metrics value need to be long, double or int
    metrics-name: endpoint_percent
    threshold: 75
    op: <
    # The length of time to evaluate the metrics
    period: 10
    # How many times after the metrics match the condition, will trigger alarm
    count: 3
    # How many times of checks, the alarm keeps silence after alarm triggered, default as same as period.
    silence-period: 10
    
  service_percent_rule:
    metrics-name: service_percent
    # [Optional] Default, match all services in this metrics
    include-names:
      - service_a
      - service_b
    threshold: 85
    op: <
    period: 10
    count: 4

webhooks:
 - http://127.0.0.1//alarm/test
  1. webhook接口url的定义(地址自定义),除了规则制定之外,还有达到告警规则后,需要skywalking调用的webhook接口,如上所示的配置,一定要注意url的缩进,之前缩进两个空格,一直没生效。

        配置完成之后,重启skywalking生效;

告警webhook接口对接

        编写上述webhook对接的接口,http://127.0.0.1//alarm/test ,当前版本webhook接口调用的方式是post+requestbody,而body中的内容如下:

[
    {
        "scopeId":1,  //指的是告警的范围类型(源码中有定义常量org.apache.skywalking.oap.server.core.source.DefaultScopeDefine)
        "name":"gateway", //告警服务名称
        "id0":3,  //与服务名称一一匹配
        "id1":0,  //暂时未做使用 
        "alarmMessage":"Response time of service gateway is more than 1000ms in 3 minutes of last 10 minutes.",
        "startTime":1569552742633  //告警发起时间戳
    },
    {
        "scopeId":1,
        "name":"en-exercise",
        "id0":2,
        "id1":0,
        "alarmMessage":"Response time of service en-exercise is more than 1000ms in 3 minutes of last 10 minutes.",
        "startTime":1569552742633
    }
]

        于是定义的接口如下:

@RequestMapping("/alarm")
@RestController
public class AlarmController {
    @Autowired
    AlarmService alarmService;

    @RequestMapping(value = "/test",method = RequestMethod.POST)
    public void alarm(@RequestBody List<AlarmMessageDto> alarmMessageList){
        System.out.println(alarmMessageList.toString());
        //具体处理告警信息
        alarmService.doAlarm(alarmMessageList);
    }
}
//实体类
@Data
public class AlarmMessageDto {
    private int scopeId;
    private String name;
    private int id0;
    private int id1;
    private String alarmMessage;
    private long startTime;
}

告警具体对接

        如上所示,我们在webhook接口拿到数据后,在service中处理相关逻辑alarmService.doAlarm(alarmMessageList);因此可以自行制定告警发送的地方,如钉钉、邮件等,具体接入方式钉钉文档及博客均有描述,就不再过多阐述。

结语

        这篇文章主要介绍了skywalking告警的简单原理、告警规则配置、webhook接收接口编写等,后续还会对skywalking进行个性化开发,希望与大家多多交流。

参考:https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/backend-alarm.md

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SkyWalking 中,可以通过自定义告警配置来定义和配置告警规则。下面是一些关于如何进行自定义告警配置的步骤: 1. 配置告警规则文件:在 SkyWalking配置文件夹中,创建一个名为 `alarm-settings.yml` 的文件,并在其中定义告警规则。 2. 定义告警规则:告警规则使用 YAML 格式进行定义。你可以根据需要定义多个告警规则,每个规则包含以下内容: - `name`:规则的名称。 - `metricName`:要监控的指标名称。 - `operation`:比较操作符,可选值为 `GREATER_THAN`、`LESS_THAN`、`EQUALS`。 - `threshold`:阈值,当指标的值与阈值进行比较时触发告警。 - `period`:触发告警所需的连续时间段,单位为分钟。 - `silencePeriod`:触发告警后的静默时间段,单位为分钟。 - `message`:触发告警时要发送的消息。 以下是一个示例告警规则的 YAML 配置: ```yaml rules: - name: High CPU Usage metricName: cpu_usage_percent operation: GREATER_THAN threshold: 80 period: 5 silencePeriod: 10 message: "High CPU Usage Detected!" - name: Low Disk Space metricName: disk_usage_percent operation: LESS_THAN threshold: 20 period: 10 silencePeriod: 15 message: "Low Disk Space Detected!" ``` 3. 启用告警规则:在 SkyWalking配置文件中,将 `alarm.enabled` 设置为 `true`,启用告警功能。 4. 重启 SkyWalking:重启 SkyWalking 使配置生效。 5. 监控告警SkyWalking 将根据定义的告警规则监控指标,并在触发告警时发送消息。 希望这些步骤可以帮助你进行自定义告警配置。如果你有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值