• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解Apache SkyWalking 告警配置指南

    Apache SkyWalking

    Apache SkyWalking是分布式系统的应用程序性能监视工具(Application Performance Management,APM),专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。

    它提供了分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。

    Apache SkyWalking告警

    Apache SkyWalking告警是由一组规则驱动,这些规则定义在config/alarm-settings.yml文件中。

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

    告警规则

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

    单独规则(Individual Rules)

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

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

    对于多个值指标,例如percentile,阈值是一个数组。像value1 value2 value3 value4 value5这样描述。
    每个值可以作为度量中每个值的阈值。如果不想通过此值或某些值触发警报,则将值设置为 -
    例如在percentile中,value1是P50的阈值,value2是P75的阈值,那么-,-,value3, value4, value5的意思是,没有阈值的P50和P75的percentile告警规则。

    举个例子:

    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

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

    举个例子:

    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": 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 {
    }

    Slack Chat Hook

    您需要遵循传入Webhooks入门指南并创建新的Webhooks。

    如果您按以下方式配置了Slack Incoming Webhooks,则告警消息将按 Content-Typeapplication/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-Typeapplication/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

    钉钉 Hook

    您需要遵循自定义机器人开放并创建新的Webhooks。为了安全起见,您可以为Webhook网址配置可选的密钥。

    如果您按以下方式配置了钉钉的 Webhooks ,则告警消息将按 Content-Typeapplication/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

    微信扫描二维码,关注java 技术迷,回复「电子书」,免费获取Java必读技术书籍。

    到此这篇关于Apache SkyWalking 告警配置指南的文章就介绍到这了,更多相关SkyWalking 告警配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    上一篇:使用Portainer部署Docker容器的项目实践
    下一篇:详解使用Docker进行Redis主从复制实践
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    详解Apache SkyWalking 告警配置指南 详解,Apache,SkyWalking,告警,