Apache SkyWalking 告警配置指南

告警规则的定义分为三部分。

  1. 告警规则:定义了触发告警所考虑的条件。

  2. webhook:当告警触发时,被调用的服务端点列表。

  3. gRPCHook:当告警触发时,被调用的远程gRPC方法的主机和端口。

  4. Slack Chat Hook:当告警触发时,被调用的Slack Chat接口。

  5. 微信 Hook:当告警触发时,被调用的微信接口。

  6. 钉钉 Hook:当告警触发时,被调用的钉钉接口。

告警规则

告警规则有两种类型,单独规则(Individual Rules)和复合规则(Composite Rules),复合规则是单独规则的组合。

单独规则(Individual Rules)

单独规则主要有以下几点:

  • 规则名称:在告警信息中显示的唯一名称,必须以_rule结尾。

  • metrics-name:度量名称,也是OAL脚本中的度量名。默认配置中可以用于告警的度量有:服务实例端点服务关系实例关系端点关系。它只支持long,double和int类型。

  • include-names:包含在此规则之内的实体名称列表。

  • exclude-names:排除在此规则以外的实体名称列表。

  • include-names-regex:提供一个正则表达式来包含实体名称。如果同时设置包含名称列表和包含名称的正则表达式,则两个规则都将生效。

  • exclude-names-regex:提供一个正则表达式来排除实体名称。如果同时设置排除名称列表和排除名称的正则表达式,则两个规则都将生效。

  • include-labels:包含在此规则之内的标签。

  • exclude-labels:排除在此规则以外的标签。

  • include-labels-regex:提供一个正则表达式来包含标签。如果同时设置包含标签列表和包含标签的正则表达式,则两个规则都将生效。

  • exclude-labels-regex:提供一个正则表达式来排除标签。如果同时设置排除标签列表和排除标签的正则表达式,则两个规则都将生效。

标签的设置必须把数据存储在meter-system中,例如:Prometheus, Micrometer。以上四个标签设置必须实现LabeledValueHolder接口。

  • threshold:阈值。

对于多个值指标,例如percentile,阈值是一个数组。像value1 value2 value3 value4 value5这样描述。

每个值可以作为度量中每个值的阈值。如果不想通过此值或某些值触发警报,则将值设置为 -

例如在percentile中,value1是P50的阈值,value2是P75的阈值,那么-,-,value3, value4, value5的意思是,没有阈值的P50和P75的percentile告警规则。

  • op:操作符,支持>, >=, <, <=, =

  • period:多久告警规则需要被检查一下。这是一个时间窗口,与后端部署环境时间相匹配。

  • count:在一个周期窗口中,如果按op计算超过阈值的次数达到count,则发送告警。

  • only-as-conditiontrue或者false,指定规则是否可以发送告警,或者仅作为复合规则的条件。

  • silence-period:在时间N中触发报警后,在N -> N + silence-period这段时间内不告警。 默认情况下,它和period一样,这意味着相同的告警(同一个度量名称拥有相同的Id)在同一个周期内只会触发一次。

  • message:该规则触发时,发送的通知消息。

举个例子:

rules:

service_resp_time_rule:

metrics-name: service_resp_time

op: “>”

threshold: 1000

period: 10

count: 2

silence-period: 10

message: 服务【{name}】的平均响应时间在最近10分钟内有2分钟超过1秒

service_instance_resp_time_rule:

metrics-name: service_instance_resp_time

op: “>”

threshold: 1000

period: 10

count: 2

silence-period: 10

message: 实例【{name}】的平均响应时间在最近10分钟内有2分钟超过1秒

endpoint_resp_time_rule:

metrics-name: endpoint_avg

threshold: 1000

op: “>”

period: 10

count: 2

message: 端点【{name}】的平均响应时间在最近10分钟内有2分钟超过1秒

复合规则(Composite Rules)

复合规则仅适用于针对相同实体级别的告警规则,例如都是服务级别的告警规则:service_percent_rule && service_resp_time_percentile_rule

不可以编写不同实体级别的告警规则,例如服务级别的一个告警规则和端点级别的一个规则:service_percent_rule && endpoint_percent_rule

复合规则主要有以下几点:

  • 规则名称:在告警信息中显示的唯一名称,必须以_rule结尾。

  • expression:指定如何组成规则,支持&&, ||, ()操作符。

  • message:该规则触发时,发送的通知消息。

举个例子:

rules:

service_resp_time_rule:

metrics-name: service_resp_time

op: “>”

threshold: 1000

period: 10

count: 2

silence-period: 10

message: 服务【{name}】的平均响应时间在最近10分钟内有2分钟超过1秒

service_sla_rule:

metrics-name: service_sla

op: “<”

threshold: 8000

period: 10

count: 2

silence-period: 10

message: 服务【{name}】的成功率在最近10分钟内有2分钟低于80%

composite-rules:

comp_rule:

expression: service_resp_time_rule && service_sla_rule

message: 服务【{name}】在最近10分钟内有2分钟超过1秒平均响应时间超过1秒并且成功率低于80%

Webhook

Webhook 要求一个点对点的 Web 容器。告警的消息会通过 HTTP 请求进行发送,请求方法为 POSTContent-Typeapplication/json,JSON 格式包含以下信息:

  • scopeId:目标 Scope 的 ID。

  • name:目标 Scope 的实体名称。

  • id0:Scope 实体的 ID。

  • id1:未使用。

  • ruleName:您在 alarm-settings.yml 中配置的规则名。

  • alarmMessage. 告警消息内容。

  • startTime. 告警时间戳,当前时间与 UTC 1970/1/1 相差的毫秒数。

举个例子:

[{

“scopeId”: 1,

“scope”: “SERVICE”,

“name”: “one-more-service”,

“id0”: “b3JkZXItY2VudGVyLXNlYXJjaC1hcGk=.1”,

“id1”: “”,

“ruleName”: “service_resp_time_rule”,

“alarmMessage”: “服务【one-more-service】的平均响应时间在最近10分钟内有2分钟超过1秒”,

“startTime”: 1617670815000

}, {

“scopeId”: 2,

“scope”: “SERVICE_INSTANCE”,

“name”: “e4b31262acaa47ef92a22b6a2b8a7cb1@192.168.30.11 of one-more-service”,

“id0”: “dWF0LWxib2Mtc2VydmljZQ==.1_ZTRiMzEyNjJhY2FhNDdlZjkyYTIyYjZhMmI4YTdjYjFAMTcyLjI0LjMwLjEzOA==”,

“id1”: “”,

“ruleName”: “instance_jvm_young_gc_count_rule”,

“alarmMessage”: “实例【e4b31262acaa47ef92a22b6a2b8a7cb1@192.168.30.11 of one-more-service】的YoungGC次数在最近10分钟内有2分钟超过10次”,

“startTime”: 1617670815000

}, {

“scopeId”: 3,

“scope”: “ENDPOINT”,

“name”: “/one/more/endpoint in one-more-service”,

“id0”: “b25lcGllY2UtYXBp.1_L3RlYWNoZXIvc3R1ZGVudC92aXBsZXNzb25z”,

“id1”: “”,

“ruleName”: “endpoint_resp_time_rule”,

“alarmMessage”: “端点【/one/more/endpoint in one-more-service】的平均响应时间在最近10分钟内有2分钟超过1秒”,

“startTime”: 1617670815000

}]

gRPCHook

告警消息将使用 Protobuf 类型通过gRPC远程方法发送。消息格式的关键信息定义如下:

syntax = “proto3”;

option java_multiple_files = true;

option java_package = “org.apache.skywalking.oap.server.core.alarm.grpc”;

service AlarmService {

rpc doAlarm (stream AlarmMessage) returns (Response) {

}

}

message AlarmMessage {

int64 scopeId = 1;

string scope = 2;

string name = 3;

string id0 = 4;

string id1 = 5;

string ruleName = 6;

string alarmMessage = 7;

int64 startTime = 8;

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
715666314749)]

[外链图片转存中…(img-7RPG2Rt2-1715666314750)]

[外链图片转存中…(img-eR4qYJp5-1715666314750)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 23
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值