告警功能| 学习笔记

简介: 快速学习告警功能

开发者学堂课程【分布式链路追踪 Skywalking告警功能】学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/743/detail/13164


告警功能


内容介绍:

一、告警功能简介

二、Skywalking 默认的告警规则


一、告警功能简介

1.告警功能是相比比较灵活的,Skywalking每隔一段时间根据收集到的链路追踪的数据和配置的告警规则(如服务响应时间、服务响应时间百分比)等,判断如果达到阀值则发送相应的告警信息。发送告警信息是通过调用webhook接口完成,具体的webhook接口可以使用者自行定义,从而开发者可以在指定的webhook接口中编写各种告警方式,比如邮件、短信等。告警的信息也可以在RocketBot中查看到。告警功能是相比比较灵活的。

2.RocketBot

如图:image.png

打开告警功能后,会发现什么数据都没有,这是因为目前并没有触发告警,所以需要模拟告警信息的产生。


二、Skywalking 默认的告警规则

默认的告警规则一般在 skywalking 安装目录下的config文件夹下 alarm-settings.yml 文件中。打开后如下图所示:

image.png

首先这是一个 y mail,最外层的是 rules,可以定义多个规则。如图:

image.png

每一条都代表一个规则,规则中就定义了规则生效的条件。要看懂规则,则需要学习规则的语法。规则名称、注释及图片如下:

image.png

1、metrics-name:对应某数据进行监控;oal脚本中的度量名称。目前用到的是service_resp_time也就是服务的返回时间。

2、service_resp_time_rule:对于服务的响应时间制定了一个规则。

3、Op:代表比较符,threshold代表预值(服务响应时间大于一秒钟的时候去触发告警。)

4、period:多久检查一次当前的指标数据是否触发预值(图中意为每十分钟去检测当前数据是否触发预值,默认单位是min)。

5、count指的是达到多少次后发送告警消息(图中指的是返回的数据必须大于三次)。

6、silence-period:指的是在多久之内,忽略相同的告警消息(图中指的是当告警产生的时候,五分钟之内不会重复发送告警信息)。

image.png

7、webhooks:指的是告警产生后的回调地址(通过调用接口的方法把告警信息传递到此接口中之后就可以对此接口进行扩展。例如发送短信)如图:

image.png

  1. 流程

1、打开 skywalking alarm 代码

打开后查看源码controller。如图:

image.png

此代码中只有一个接口timeout。模拟了一个超时的告警。

当我们大量的调用timeout接口时,就会产生告警,之后会通过webhook调用接口,把告警的数据传递过来。

2、编制 webHooks 编码

如图:

image.png

此代码提供了一个WebHooks的接口,让其能够接收到skywalking上报的告警消息,此告警消息需要自己封装,因为是通过post请求携带在请求体中传递过来的。本质上是一个多个对象,所以用list进行封装。List中的数据中的格式如下图所示:

image.png

其中scopeid、name、id0、id1、alarmMessage、startTime。这些字段会通过post请求传递给我们。

startTime:指的是开始时间也可以理解为产生的时间。

alarmMessage:指的是告警的消息

webhooks中还有一个方法show。如图:

image.png

因为webhook收到消息后需要有地方去展示,所以在内存内生成一个lastlist的对象。如图:

image.png

当收到 webhook 的消息后会把传递过来参数复制到这个对象中然后通过 show 接口能够把 AlarmMessage 也就是告警消息打印到浏览器上方便展示。

大体流程就是多次调用 timeout 让其产生一个告警,之后会触发 webhook 调用其中的 webhook 的接口,把告警信息传递进来,之后通过 show 接口把告警信息打印、核对。

3.模拟请求

查看发布的端口,如图:

image.png

首先修改告警配置,需要将webhook改为当前自己的接口。如图:

image.png

image.png

之后需要把此接口也调整为webhook接口,也就是/webhook。如图:

image.png

并进行保存。

重启skywalking的oap。如图:

image.png

之后找到ID 1835。如图:

image.png

再拉倒最底端编制代码ki11-9 1835。如图:

image.png

通过执行./oapservice.sh来重新启动。如图:

image.png

这样告警配置即可生效,现在可以准备告警的应用上传到服务器,之后切换到/usr/local/skywalking/目录下并启动alarm应用。如图:

image.png

启动命令为:java-javaagent:/usr/local/skywalking/apache-skywalking-apm-

bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking_alarm

-jar skywalking_alarm.jar

将此命令拷贝到代码中(将多余的空格去掉)。如图:

image.png

执行后如图所示:

image.png

启动后通过8089端口访问timeout接口(注意:通过一次timeout接口是不行的因为告警规则中也判断了需要连续多次才能触发这次告警,所以需要不停的调用直到出现告警。告警可以在Rocketbot中查看)。如图:

image.png

在两分钟之内出现了多次1毫秒的请求所以进行了告警,告警力度是service instance也就是服务实例,服务实例超过一秒就会告警。

之后在查看webhook有没有收到此请求,用show接口来查看是否接收到告警信息。如图:

image.png

image.png

名称就是代表服务实例在62.141中,2162为进程号。同时此告警信息就代表service instance 也就是服务的实例超时了1秒钟,开始时间就是一个毫秒数需要去转换当前的时间才能看到具体时间。

当前案例就可以证明,当我们的skywalking产生告警的时候,它就会通过webhook接口传递到系统内部,系统就可以根据里面的告警信息来进行特别的处理(例如发送短信、发送邮件等)。

相关文章
|
11月前
|
Prometheus 监控 Cloud Native
夜莺自定义告警模板
夜莺自定义告警模板
|
存储 数据采集 监控
无数据告警最佳实践
在对SLS的Logstore和Metricstore进行监控的过程中,有时候会出现一些无数据的情况,监控SLS的存储库中无数据的情况,是保证数据成功上传到SLS的一个重要手段,本文将介绍无数据告警的常见配置方法。
431 0
无数据告警最佳实践
|
监控 机器人
夜莺系列 2 告警管理
夜莺的告警管理
621 0
|
弹性计算 监控 开发者
云监控-应用分组报警规则管理|学习笔记
快速介绍云监控-应用分组报警规则管理
152 0
云监控-应用分组报警规则管理|学习笔记
|
4月前
|
存储 数据采集 监控
【最佳实践】无数据告警配置
背景在对SLS的Logstore和Metricstore进行监控的过程中,有时候会出现一些无数据的情况,例如数据采集阶段出现故障Logtail采集异常、数据导入任务异常或者SDK写入数据出错等情况都有可能导致日志库中没有数据。业务系统出现问题例如用户的业务日志中有某个系统模块的日志,在一段时间内,由...
120 0
【最佳实践】无数据告警配置
|
监控 NoSQL 数据库
监控与报警|学习笔记
快速学习监控与报警
101 0
监控与报警|学习笔记
|
存储 监控 Cloud Native
【笔记】用户指南—监控与告警—配置告警
您可以在控制台上配置计算资源监控指标和存储资源监控指标的告警规则。本文将介绍如何配置实例的告警规则。
117 0
【笔记】用户指南—监控与告警—配置告警
|
存储 监控 索引
SLS告警最佳实践——自定义分析告警历史
在SLS告警评估、触发到通知的整个生命周期过程中,都会有一些日志记录,通过这些日志我们可以借助告警对系统的整体健康状况、稳定性等有一个相对全面的了解。
513 0
|
存储 监控 Cloud Native
用户指南—监控与告警—配置告警
您可以在控制台上配置计算资源监控指标和存储资源监控指标的告警规则。本文将介绍如何配置实例的告警规则。
164 0
用户指南—监控与告警—配置告警
|
存储 运维 Kubernetes
SLS告警最佳实践—— K8s事件中心告警管理
K8S事件中心是SLS的日志应用之一,主要记录了集群的状态变更,包括创建Pod、运行Pod、删除Pod、组件异常等。K8S事件中心实时收集K8S中的所有事件并提供存储、查询、分析、可视化与告警能力。K8s事件中心默认也会提供仪表盘和告警,本文主要介绍下如何在ACK控制台和SLS控制台管理K8s事件中心的告警及其区别和使用场景。
1154 0
SLS告警最佳实践—— K8s事件中心告警管理