侧边栏壁纸
博主头像
程彬彬博主等级

业精于勤 荒于嬉 行成于思 毁于随

  • 累计撰写 101 篇文章
  • 累计创建 26 个标签
  • 累计收到 20 条评论

目 录CONTENT

文章目录

skywalking告警规则使用

程彬彬
2019-12-26 / 0 评论 / 2 点赞 / 4,707 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2019-12-26,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
广告 广告

参考官网文档翻译过来,部分不准,仅供参考 官方文档

一.告警

警报核心由一组规则驱动,这些规则在config/alarm-settings.yml中定义。 警报规则定义分为两部分。

1.Alarm rules。 它们定义了应如何触发指标警报,应考虑哪些条件。 2.Webhooks。 Web服务端点列表,在触发警报后应调用该列表。

二.规则

报警规则由以下键组成

规则名称(Rule name): 唯一名称,显示在警报消息中。必须以结尾_rule。 指标名称(Metrics name): OAL脚本中的AKA指标名称。仅支持long,double,int类型。 包括名称(Include names): 以下实体名称包含在该规则中。如服务名,端点名。 排除名称(Exclude names): 此规则排除以下实体名称。如服务名,端点名。 阈值(Threshold): 目标值。 操作符(OP): 操作,支持>,<,=。欢迎贡献所有OP。 期间(Period): 应该检查警报规则多长时间。这是一个时间窗口,与后端部署环境时间一起出现。 阈值(Count): 在周期窗口中,如果值 s 的数量超过阈值(通过OP),达到计数,则应发送警报。 沉默期(Silence period): 在Time-N中触发警报后,请在TN-> TN +期间保持静音。默认情况下,它与Period(周期)相同,这意味着在一个周期内,将触发一次相同的警报(相同度量值名称中的相同ID)。

三.默认警报规则

alarm-setting.yml为了方便起见,我们在发行版中提供了默认设置,其中包括以下规则

最近3分钟内服务平均响应时间超过1秒。 最近2分钟的服务成功率低于80%。 在过去3分钟内,服务90%的响应时间超过1秒 最近2分钟内服务实例的平均响应时间超过1秒。 最近2分钟内端点平均响应时间超过1秒。

演示才把值设置低了,时间根据项目运行情况配置

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


# Sample alarm rules.
rules:
  # Rule unique name, must be ended with `_rule`.
  service_resp_time_rule:
    metrics-name: service_resp_time
    op: ">"
    threshold: 8
    period: 1
    count: 1
    silence-period: 2
    message: Response time of service {name} is more than 1000ms in 3 minutes of last 10 minutes.
  service_sla_rule:
    # Metrics value need to be long, double or int
    metrics-name: service_sla
    op: "<"
    threshold: 8
    # The length of time to evaluate the metrics
    period: 1
    # How many times after the metrics match the condition, will trigger alarm
    count: 1
    # How many times of checks, the alarm keeps silence after alarm triggered, default as same as period.
    silence-period: 2
    message: Successful rate of service {name} is lower than 80% in 2 minutes of last 10 minutes
  service_p90_sla_rule:
    # Metrics value need to be long, double or int
    metrics-name: service_p90
    op: ">"
    threshold: 8
    period: 1
    count: 1
    silence-period: 2
    message: 90% response time of service {name} is more than 1000ms in 3 minutes of last 10 minutes
  service_instance_resp_time_rule:
    metrics-name: service_instance_resp_time
    op: ">"
    threshold: 8
    period: 10
    count: 1
    silence-period: 2
    message: Response time of service instance {name} is more than 1000ms in 2 minutes of last 10 minutes
#  Active endpoint related metrics alarm will cost more memory than service and service instance metrics alarm.
#  Because the number of endpoint is much more than service and instance.
#
  endpoint_avg_rule:
    metrics-name: endpoint_avg
    op: ">"
    threshold: 6
    period: 10
    count: 2
    silence-period: 5
    message: Response time of endpoint {name} is more than 1000ms in 2 minutes of last 10 minutes


webhooks:
#  - http://127.0.0.1/notify/
  - http://192.168.124.4:58080/alarm/pushData

四.Webhook

Webhook要求对等方是一个Web容器。警报消息将按application/json内容类型通过HTTP发布。JSON格式基于List<org.apache.skywalking.oap.server.core.alarm.AlarmMessage以下关键信息。

范围(scopeId, scope): 所有范围都在org.apache.skywalking.oap.server.core.source.DefaultScopeDefine中定义。 名字(name): 目标范围实体名称。 实体的ID(id0): 作用域实体的ID,与名称匹配。 实体的ID(id1): 今天不使用。 规则名称(ruleName): 您在中配置的规则名称alarm-settings.yml。 报警消息(alarmMessage): 报警文本消息。 时间(startTime): 以毫秒为单位,介于当前时间和UTC 1970年1月1日午夜之间。

消息内容例如:

[
  {
    "scopeId": 3,
    "scope": "ENDPOINT",
    "name": "/areaDetail/findById in ES-DEMO",
    "id0": 4,
    "id1": 0,
    "ruleName": "endpoint_avg_rule",
    "alarmMessage": "Response time of endpoint /areaDetail/findById in ES-DEMO is more than 1000ms in 2 minutes of last 10 minutes",
    "startTime": 1577330120698
  }
]

Webhook接口

@RequestMapping("/alarm")
@RestController
@Slf4j
public class AlarmController {


    @RequestMapping(value = "/pushData", method = RequestMethod.POST)
    public void alarm(@RequestBody List<AlarmMessageDto> alarmMessageList) {
        log.error("===================={}", alarmMessageList.toString());
        // todo 具体处理告警信息
    }


}

消息体

@Data
public class AlarmMessageDto {


    /**
     * 范围id。所有范围都在org.apache.skywalking.oap.server.core.source.DefaultScopeDefine中定义
     */
    private int scopeId;


    /**
     * 范围
     */
    private String scope;


    /**
     * 目标范围实体名称
     */
    private String name;


    /**
     * 您在中配置的规则名称alarm-settings.yml
     */
    private String ruleName;


    /**
     * 作用域实体的ID,与名称匹配
     */
    private int id0;


    /**
     * 不使用
     */
    private int id1;


    /**
     * 报警文本消息
     */
    private String alarmMessage;


    /**
     * 时间,以毫秒为单位,介于当前时间和UTC 1970年1月1日午夜之间
     */
    private long startTime;


}

五.效果

image.png

在根据接收到的消息对接钉钉或者邮箱通知运营人员

2
广告 广告

评论区