返回介绍

告警

发布于 2023-10-10 23:52:03 字数 3246 浏览 0 评论 0 收藏 0

告警的核心由一组规则驱动,这些规则定义在 config/ Alarm -settings.yml 文件中。 告警规则的定义分为三部分。

  1. 告警规则。它们定义了应该如何触发度量警报,应该考虑什么条件。
  2. [网络钩子](#Webhook}。当警告触发时,哪些服务终端需要被告知。
  3. 实体名称

定义范围和实体名称之间的关系.

  • 服务: 服务名称
  • 实例: {服务名称} 的 {实例名称}
  • 端点: {服务名称} 中的 {端点名称}
  • 数据库: 数据库服务名
  • 服务关系: {源服务名称} 到 {目标服务名称}
  • 实例关系: {源服务名称} 的 {源实例名称} 到 {目标服务名称} 的 {目标实例名称}
  • 端点关系: {源服务名称} 中的 {源端点名称} 到 {目标服务名称} 中的 {目标端点名称}

规则

报警规则主要有以下几点:

  • 规则名称。在告警信息中显示的唯一名称。必须以 _rule 结尾。
  • 度量名称。 也是 oal 脚本中的度量名。只支持 long,double 和 int 类型。详情见 默认告警规则

为了方便,我们在发行版中提供了默认的 alarm setting.yml 文件,包括以下规则 1.最近 3 分钟内服务平均响应时间超过 1 秒。 2.服务成功率在最近 2 分钟内低于 80%。 3.服务响应时间在最近 3 分钟内低于 1000 毫秒. 4.服务实例在最近 2 分钟内的平均响应时间超过 1 秒。 5.端点平均响应时间在最近 2 分钟内超过 1 秒。 6.数据库访问平均响应时间在过去 2 分钟内超过 1 秒。 7.端点之间平均响应时间在最近 2 分钟内超过 1 秒。

所有可能的度量名称列表

这些度量名称定义在 OAL 脚本 中, 现在,来自Service, Service Instance, Endpoint的度量可以用于告警,我们会在后期版本中进行扩展。

如果你希望有其它的告警场景,请提交 issue 或 pr。

Webhook

SkyWalking 的告警 Webhook 要求对等方是一个 Web 容器. 告警的消息会通过 HTTP 请求进行发送, 请求方法为 POST , Content-Typeapplication/json , JSON 格式基于 List<org.apache.skywalking.oap.server.core.alarm.AlarmMessage , 包含以下信息.

  • scopeId. 所有可用的 Scope 请查阅 org.apache.skywalking.oap.server.core.source.DefaultScopeDefine .
  • name. 目标 Scope 的实体名称.
  • id0. Scope 实体的 ID.
  • id1. 未使用.
  • ruleName. 您在 alarm-settings.yml 中配置的规则名.
  • alarmMessage. 报警消息内容.
  • startTime. 告警时间, 位于当前时间与 UTC 1970/1/1 之间.

以下是一个样例

[{
	"scopeId": 1, 
        "name": "serviceA", 
	"id0": 12,  
	"id1": 0,  
    "ruleName": "service_resp_time_rule",
	"alarmMessage": "alarmMessage xxxx",
	"startTime": 1560524171000
}, {
	"scopeId": 1,
        "name": "serviceB",
	"id0": 23,
	"id1": 0,
    "ruleName": "service_resp_time_rule",
	"alarmMessage": "alarmMessage yyy",
	"startTime": 1560524171000
}]

gRPCHook

告警消息将使用 Protobuf 类型通过 gRPC 远程方法发送. 消息格式,以下文件定义了关键信息 oap-server/server-alarm-plugin/src/main/proto/alarm-hook.proto .

协议的部分内容如下:

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;
}

动态更新配置

从 6.5.0 开始,可以通过 动态配置 在运行时动态更新报警设置 , 它将覆盖 alarm-settings.yml 中的设置.

为了确定是否触发告警规则, SkyWalking 需要为每个告警规则缓存时间窗的指标, 如果任何属性 ( metrics-name , op , threshold , period , count , etc.) 的规则改变, 滑动窗口将会毁坏和重建, 导致此告警规则重新启动.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文