Skywalking(9.7.0) 告警配置

图片被吞,来这里看吧:https://juejin.cn/post/7344567669893021736

过年前一天发版,大家高高兴兴准备回家过年去了。这时候老板说了一句,记得带上电脑,关注用户反馈。有紧急问题在高速上都得给我找个服务区改好。

但是机智如我,怎么能让老板知道服务出问题了呢?毕竟我还奢望过完年有年终奖。那正确的方式当然服务出问题了,我们开发瞒着老板偷偷给他改了,当做什么都没发生过。

平时当然Bug多点无所谓,毕竟软件嘛,有点bug也正常。但现在是决定年终的重要时刻,我们要让老板相信我们的服务是稳定的。

1. 首先你要有个Skywalking

有条件玩K8S的同学看这个:在K8S集群中部署SkyWalking-CSDN博客

没条件就本地玩玩吧:SkyWalking 本地启动以及闪退问题-CSDN博客

告警相关配置文件路径:

打开后有一些默认的规则,这些规则的作用看这个:Alerting | Apache SkyWalking

rules:service_resp_time_rule:expression: sum(service_resp_time > 1000) >= 3period: 10silence-period: 5message: Response time of service {name} is more than 1000ms in 3 minutes of last 10 minutes.service_sla_rule:expression: sum(service_sla < 8000) >= 2period: 10silence-period: 3message: Successful rate of service {name} is lower than 80% in 2 minutes of last 10 minutesservice_resp_time_percentile_rule:expression: sum(service_percentile{_='0,1,2,3,4'} > 1000) >= 3period: 10silence-period: 5message: Percentile response time of service {name} alarm in 3 minutes of last 10 minutes, due to more than one condition of p50 > 1000, p75 > 1000, p90 > 1000, p95 > 1000, p99 > 1000service_instance_resp_time_rule:expression: sum(service_instance_resp_time > 1000) >= 2period: 10silence-period: 5message: Response time of service instance {name} is more than 1000ms in 2 minutes of last 10 minutesdatabase_access_resp_time_rule:expression: sum(database_access_resp_time > 1000) >= 2period: 10message: Response time of database access {name} is more than 1000ms in 2 minutes of last 10 minutesendpoint_relation_resp_time_rule:expression: sum(endpoint_relation_resp_time > 1000) >= 2period: 10message: Response time of endpoint relation {name} is more than 1000ms in 2 minutes of last 10 minutes

2. 告警规则参数

Alerting | Apache SkyWalking

Rule name:规则名称。需要保证唯一,必须以 _rule 结尾

Expression:告警表达式。

Include names:告警规则生效包含的实体名列表。在 Skywalking中,实例有多种类型 Alerting | Apache SkyWalking

实体名称这里要注意一下,我们在集成 Agent 的时候,一般都会设置 Namespace 和 Service group。举个栗子: SW_AGENT_NAMESPACE:"dev" SW_AGENT_NAME:"dev::example-name"
当我这样定义时,service name 应该写成 dev::example-name|dev|,参考:Table of Agent Configuration Properties | Apache SkyWalking

Exclude names:告警规则不生效包含的实体名列表

Include names regex:和 Include names 一样。只不过是正则表达式字符串

Exclude names regex:和 Exclude names 一样。只不过是正则表达式字符串

Tags:自定义的 k-v 对

Period:表达式计算结果的缓存时间

Silence Period:推送最低间隔时间。例如我有一个规则,1分钟会触发一次,当我把Silence Period配置为 3 时。那就是每3分钟发送一次请求到 hook

Hooks:向外界发送通知的方式 ,本质上都是 WebHook。

3. 表达式解析

service_sla_custom_rule:# service_sla 是一个在 `alarm-config.yaml` 中默认定义的指标,当然可以覆盖它。# sum((service_sla / 100) < 90) 就是字面意思,服务SLA低于90% 的次数# >= 4 是关键,表达式每分钟算一次(这是我看了文档后猜的,应该没问题), 那这里就表示最近4分钟服务SLA都低于90%expression: sum((service_sla / 100) < 90) >= 4# 字符串匹配写法include-names:- 'dev::example|dev|'# 正则写法:所有dev组的include-names-regex: '^dev::.*' # 表达式计算结果缓存时长,表达式每一分钟计算一次,我表达式中设置了>=4# 所以period 应该设置一个大于4的值,这样能避免重复计算period: 10# 通知静默时长,如果服务有10分钟SLA是低于90的,那么m4的时候会提醒。# 下一次本来是m5提醒的,我设置了2,所以等到m6再次计算表达式的时候才会在提醒silence-period: 2# 自定义 tags,key-value形式tags:level: ERROR# 提醒文本,可以通过格式化插入参数message: '服务 SLA 低于 90%'# 使用的通知方式,如果不填则选择默认hookshooks:- '{hookType}.{hookName}'

4. 表达式定义实例

4.1 所有服务SLA在最近3分钟内小于100

service_success_rule:expression: sum((service_success / 100) < 100) >= 3period: 5silence-period: 5message: '服务 SLA 低于 100%'

4.2 单接口SLA在最近3分钟内小于100

endpoint_sla_rule:expression: sum((endpoint_sla / 100) < 100) >= 3include-names: - 'GET:/test/custom1 in dev::example|dev|'period: 5message: '此接口 SLA 低于 100%'

4.3 所有DB SLA 最近1分钟内小于100

database_access_sla_rule:expression: sum((database_access_sla / 100) < 100) >= 1period: 3message: 'DB SLA 低于 100%'

5. 定义配置 Hooks

实际测试下来,直接配置飞书会出现只有首次才会通知的情况。自己提供个Webhook在透传到飞书正常。猜测是Skywalking中集成飞书通知的模块有问题,这个待验证。

5.1 Webhook

Alerting | Apache SkyWalking

自定义的接口

@RestController  
@RequestMapping("/alerting")  
public class AlertingController {  // 我用的是lark,用飞书得改下hostprivate final static String WEBHOOK_URL = "https://open.larksuite.com/open-apis/bot/v2/hook/<token>";  @Resource  private RestTemplate restTemplate;  @PostMapping("skywalking")  public void alert(@RequestBody List<AlarmMessage> alarmMessageList) {  alarmMessageList.parallelStream().forEach(alarmMessage -> {  String text = "Apache SkyWalking Alarm:\n\n" +  alarmMessage.getScope() + ": " + alarmMessage.getName() + "\n\n" +  alarmMessage.getAlarmMessage();  ImmutableMap<String, Object> body = ImmutableMap.of(  "msg_type", "text",  "content", ImmutableMap.of("text", text)  );  restTemplate.postForEntity(WEBHOOK_URL, body, String.class);  });  }  // https://github.com/apache/skywalking/blob/master/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmMessage.java @Getter  @Setter    @JsonNaming(PropertyNamingStrategy.LowerCaseStrategy.class)  public static class AlarmMessage {  private int scopeId;  private String scope;  private String name;  private String id0;  private String id1;  @JsonAlias("ruleName")  private String ruleName;  @JsonAlias("alarmMessage")  private String alarmMessage;  private List<Tag> tags;  @JsonAlias("startTime")  private long startTime;  private transient int period;  }  @Getter  @Setter    public static class Tag {  private String key;  private String value;  }  
}

alarm-config.yaml 中配置

hooks:webhook:default:# 定义这是默认的hookis-default: trueurls:- http://localhost:8080/alerting/skywalking

5.2 飞书

创建机器人很简单的,基本上有手就行。

Alerting | Apache SkyWalking

自定义机器人使用指南 - 开发指南 - 开发文档 - Lark 开放平台 (larksuite.com)

飞书群机器人通知配置

hooks:feishu:default:text-template: |-{"msg_type": "text","content": {"text": "Apache SkyWalking Alarm: \n\n%s"}}webhooks:- url: https://open.larksuite.com/open-apis/bot/v2/hook/<token>- secret: <secret>

Ref

Alerting | Apache SkyWalking

https://skywalking.apache.org/docs/main/v9.7.0/en/api/metrics-query-expression

Analysis Native Streaming Traces and Service Mesh Traffic | Apache SkyWalking

skywalking/docs/en/setup/backend/backend-alarm.md at master · apache/skywalking (github.com)
skywalking/docs/en/api/metrics-query-expression.md at master · apache/skywalking (github.com)
自定义机器人使用指南 - 开发指南 - 开发文档 - Lark 开放平台 (larksuite.com)

Table of Agent Configuration Properties | Apache SkyWalking

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/536388.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【基础CSS】

本文章属于学习笔记&#xff0c;在https://www.freecodecamp.org/chinese/learn/2022/responsive-web-design/中练习 二、 CSS 样式&#xff0c;新建一个文件.css&#xff0c;该文件不含有style标签 <style>. h1&#xff0c;h2&#xff0c;p{ text-align&#xff1a;ce…

【零基础学习05】嵌入式linux驱动中platform与设备树基本实现

大家好,为了进一步提升大家对实验的认识程度,每个控制实验将加入详细控制思路与流程,欢迎交流学习。 今天主要学习一下,基于总线、设备和驱动进行匹配的平台驱动模型,这次将采用设备树的platform设备与驱动的编写方法,目前绝大多数的Linux内核已经支持设备树,这次主要来…

Java String 类

创建字符串 当然创建的方法很多这里我们举例两种十分常见的办法&#xff01; 最简单的方法&#xff01; String str1 "Runoob"; 使用关键字和构造方法来创建 String 对象。 String str2new String("Runoob"); 我们当然知道&#xff0c;String出来的…

https超文本传输安全协议到底是什么?

HTTPS&#xff08;全称&#xff1a;Hyper Text Transfer Protocol over Secure Socket Layer&#xff09;是超文本传输安全协议的英文翻译缩写&#xff0c;它是以安全为目标的HTTP通道&#xff0c;在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS在HTTP的基…

FreeRTOS操作系统学习——中断管理

中断管理介绍 嵌入式实时系统需要对整个系统环境产生的事件作出反应。这些事件对处理时间和响应时间都有不同的要求。事件通常采用中断方式检测&#xff0c;中断服务例程(ISR)中的处理量应当越短越好。ISR是在内核中被调用的&#xff0c; ISR执行过程中&#xff0c;用户的任务…

【LeetCode热题100】73. 矩阵置零(矩阵)

一.题目要求 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 二.题目难度 中等 三.输入样例 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0…

现代化的轻量级Redis桌面客户端Tiny RDM

​欢迎光临我的博客查看最新文章: https://river106.cn 1、简介 Tiny RDM&#xff08;全称&#xff1a;Tiny Redis Desktop Manager&#xff09;是一个界面现代化的轻量级Redis桌面客户端&#xff0c;支持Linux、Mac和Windows。它专为开发和运维人员设计&#xff0c;使得与Red…

安卓六大布局

LinearLayout&#xff08;线性布局&#xff09; 1.简介 线性布局在开发中使用最多&#xff0c;具有垂直方向与水平方向的布局方式。LinearLayout 默认是垂直排列的&#xff0c;但是可以通过设置 android:orientation 属性来改变为水平排列。 2.常用属性 orientation&#xf…

imagemagick深度系统(deepin)安装

背景&#xff1a; 为了试用MoneyPrinter&#xff0c;需要配置imagemagick软件。但是没有适配深度系统的软件包。需要自己编译后安装。 安装&#xff1a; 下载源码 解压(tar xvfz ImageMagick.tar.gz)后进入目录&#xff08;cd ImageMagick-7.1.1&#xff09;&#xff0c;使用…

基于Java+SpringBoot+vue+element实现前后端分离玩具商城系统

基于JavaSpringBootvueelement实现前后端分离玩具商城系统 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文…

HTML万字学习总结

html文本标签特殊符号图片音频与视频超链接表单列表表格语义标签(布局) html文本标签 标签简介根目录规定文档相关的配置信息&#xff08;元数据元素表示文档的内容表示那些不能由其它 HTML 元相关元素&#xff08;(<base>、<link>, <script>、<style>…

学习 考证 帆软 FCP-FineBI V6.0 考试经验

学习背景&#xff1a; 自2024年1月起&#xff0c;大部分时间就在家里度过了&#xff0c;想着还是需要充实一下自己&#xff0c;我是一个充满热情的个体。由于之前公司也和帆软结缘&#xff0c;无论是 Fine-Report 和 Fine-BI 都有接触3年之久&#xff0c;但是主要做为管理者并…