Apache SkyWalking 告警配置指南
Apache SkyWalking
Apache SkyWalking是分布式系统的应用程序性能监视工具(Application Performance Management,APM),专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。
它提供了分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。
Apache SkyWalking告警
Apache SkyWalking告警是由一组规则驱动,这些规则定义在config/alarm-settings.yml文件中。
告警规则的定义分为三部分。
- 告警规则:定义了触发告警所考虑的条件。
- webhook:当告警触发时,被调用的服务端点列表。
- gRPCHook:当告警触发时,被调用的远程gRPC方法的主机和端口。
- Slack Chat Hook:当告警触发时,被调用的Slack Chat接口。
- 微信 Hook:当告警触发时,被调用的微信接口。
- 钉钉 Hook:当告警触发时,被调用的钉钉接口。
文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。
告警规则
告警规则有两种类型,单独规则(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-condition:
true或者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秒
文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。
复合规则(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%
文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。
Webhook
Webhook 要求一个点对点的 Web 容器。告警的消息会通过 HTTP 请求进行发送,请求方法为 POST,Content-Type 为 application/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;
}
message Response {
}
文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。
Slack Chat Hook
您需要遵循传入Webhooks入门指南并创建新的Webhooks。
如果您按以下方式配置了Slack Incoming Webhooks,则告警消息将按 Content-Type 为 application/json 通过HTTP的 POST 方式发送。
举个例子:
slackHooks:
textTemplate: |-
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": ":alarm_clock: *Apache Skywalking Alarm* \n **%s**."
}
}
webhooks:
- https://hooks.slack.com/services/x/y/z
微信Hook
只有微信的企业版才支持 Webhooks ,如何使用微信的 Webhooks 可参见如何配置群机器人。
如果您按以下方式配置了微信的 Webhooks ,则告警消息将按 Content-Type 为 application/json 通过HTTP的 POST 方式发送。
举个例子:
wechatHooks:
textTemplate: |-
{
"msgtype": "text",
"text": {
"content": "Apache SkyWalking 告警: \n %s."
}
}
webhooks:
- https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=dummy_key
文章持续更新,微信搜索「万猫学社」第一时间阅读,关注后回复「电子书」,免费获取12本Java必读技术书籍。
钉钉 Hook
您需要遵循自定义机器人开放并创建新的Webhooks。为了安全起见,您可以为Webhook网址配置可选的密钥。
如果您按以下方式配置了钉钉的 Webhooks ,则告警消息将按 Content-Type 为 application/json 通过HTTP的 POST 方式发送。
举个例子:
dingtalkHooks:
textTemplate: |-
{
"msgtype": "text",
"text": {
"content": "Apache SkyWalking 告警: \n %s."
}
}
webhooks:
- url: https://oapi.dingtalk.com/robot/send?access_token=dummy_token
secret: dummysecret
微信公众号:万猫学社
微信扫描二维码
关注后回复「电子书」
获取12本Java必读技术书籍

Apache SkyWalking 告警配置指南的更多相关文章
- Apache的Directory配置指南
使用<Directory>… </Directory>设置指定目录的访问权限,其中可包含:Options.Allow.Override.Order.Allow.Deny.Req ...
- JBoss7配置指南
JBoss7配置指南 1. jboss各主要版本特性... 3 1.1. jboss4特性... 3 1.2. jboss5特性... 5 1.3. jboss6特性 ...
- 【转】CentOS 6 服务器安全配置指南
原文连接: CentOS 6 服务器安全配置指南(通用) Linux 是一个开放式系统,可以在网络上找到许多现成的程序和工具,这既方便了用户,也方便了黑客,因为他们也能很容易地找到程序和工具来潜入 L ...
- 大数据应用日志采集之Scribe 安装配置指南
大数据应用日志采集之Scribe 安装配置指南 大数据应用日志采集之Scribe 安装配置指南 1.概述 Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用.它 ...
- 苹果ATS特性服务器证书配置指南
配置指南: 需要配置符合PFS规范的加密套餐,目前推荐配置: ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!AD ...
- Apache SkyWalking 为.NET Core带来开箱即用的分布式追踪和应用性能监控
在大型网站系统设计中,随着分布式架构,特别是微服务架构的流行,我们将系统解耦成更小的单元,通过不断的添加新的.小的模块或者重用已经有的模块来构建复杂的系统.随着模块的不断增多,一次请求可能会涉及到十几 ...
- 【大数据安全】Apache Kylin 安全配置(Kerberos)
1. 概述 本文首先会简单介绍Kylin的安装配置,然后介绍启用Kerberos的CDH集群中如何部署及使用Kylin. Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spa ...
- 高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南
原文:http://my.oschina.net/wstone/blog/365010#OSC_h3_13 (WJW)高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南 [X] ...
- [转帖]CentOS 6 服务器安全配置指南(通用)
CentOS 6 服务器安全配置指南(通用) http://seanlook.com/2014/09/07/linux-security-general-settings/ 发表于 2014-09- ...
随机推荐
- Node.js & BFF & FaaS
Node.js & BFF & FaaS server https://github.com/PacktPublishing/Node.js-Web-Development-Fourt ...
- GridSearchCV网格搜索得到最佳超参数, 在K近邻算法中的应用
最近在学习机器学习中的K近邻算法, KNeighborsClassifier 看似简单实则里面有很多的参数配置, 这些参数直接影响到预测的准确率. 很自然的问题就是如何找到最优参数配置? 这就需要用到 ...
- 详解SSH 框架中对象调用流程
摘要:SSH=Struts+Spring+Hibernate SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用 ...
- Python基础之:数字字符串和列表
目录 简介 数字 字符串 字符串对象str 列表 简介 Python的主要应用是进行科学计算,科学计算的基础就是数字,字符串和列表.本文将会详细的给大家介绍一下这三个数据类型的使用情况. 数字 数字是 ...
- Java自学no.1———带你初步认识java
什么是Java Java语言是美国Sun公司(Stanford University Network),在1995年推出的高级的编程语言.所谓编程语言,是 计算机的语言,人们可以使用编程语言对计算机下 ...
- js中this指向的问题与联系
前言 JavaScript 中最大的一个安全问题,也是最令人困惑的一个问题,就是在某些情况下this的值是如何确定的.有js基础的同学面对这个问题基本可以想到:this的指向和函数调用的方式相关.这当 ...
- javascript中的内置对象和数据结构
目录 简介 基础类型 undefined Boolean和Boolean对象 Number和BigInt String Symbol null Object Function Date Array K ...
- Vue学习笔记-jsonl转换显示工具JsonView安装及使用
一 使用环境: windows 7 64位操作系统 二 jsonl转换显示工具JsonView安装及使用 1.下载: https://github.com/gildas-lormeau/JSONV ...
- 微信小程序:Navigator导航组件
导航组件:类似超链接标签. url:要跳转的页面路径,可以放绝对路径,也可以放相对路径,绝对路径指从pages作为根目录开始找到你要的页面. 找到你要找的页面的相对地址的方法:在vscode中,该页面 ...
- Centos7 升级 sqlite3
下载地址:https://www.sqlite.org/download.html [root@djangoServer ~]# wget https://www.sqlite.org/2019/sq ...