黑客24小时在线接单的网站

黑客24小时在线接单的网站

SkyWalking 配上告警更优秀

本文转载自微信公众号「Code综艺圈」,作者Code综艺圈。请联系我们转载本文。Code综艺圈微信官方账号。

前言

对于监控系统来说,不可能让人一直盯着监控看板,而更多的是以自动提醒的方式,比如邮件、短信或微信推送等,当达到或超出预设的告警指标时,就自动发送消息提醒,下面就来说说如何配置SkyWalking的告警。

正文

告警前,先给小伙伴演示一下SkyWalking跟踪数据库操作链路和监控数据库指标,支持EF Core可以显示相应的形式操作数据库SQL语句和执行时间等信息。

1. 跟踪数据库请求

对于项目,直接或间接访问数据库是不可避免的;对于业务数据量大或高并发场景,由于数据库操作缓慢或不及时返回数据,整个系统体验差,系统操作数据库的跟踪和监控是必不可少的。让我们在下面展示一下SkyWalking跟踪和监控数据库操作。

1.1 环境准备

这里的SkyWalking如果环境建设不重复,可以参考上一篇文章(分布式/微服务必须匹配)APM系统,SkyWalking让你不迷路)。

1.2 项目集成EF Core

关于EF Core之前分享过一篇很详细的文章,可以参考(和我一起学习).NetCore之EF Core 实战入门,一目了然)。

集成EF Core之后,为了方便演示和观看效果,必须增加一个API访问,这个API简单通过EF访问数据库,如下:

注:这里的项目需要集成SkyWalking,和上一篇一样,不需要额外处理。

1.3 看效果

运营项目,访问上一步编制的运营项目GetUser接口,然后再看SkyWalking记录如下:

可以切换成列表的形式,看起来比较直观:

点击每层显示相应的详细信息,如点击数据库操作相关层,显示具体信息SQL语句等信息如下:

更多操作演示,留给朋友自己操作。

2. 报警配置及使用

自动报警基本上是监控系统的标准配置我们看看SkyWalking它是如何使用的。

2.1 配置报警规则

所谓的报警规则实际上是根据业务需要配置报警条件和检查周期。

在SkyWalking在后台服务端进行中配置报警条件,即环境建设中启动的容器skywalking-oap,见上一篇文章;

因为演示是采用的Docker没有数据卷挂载的形式启动容器,因此进入相应的容器进行配置,如下:

                   
  • 进入容器,进入相应的配置目录

执行以下命令进入SkyWalking后台容器;如果不是由容器启动的,可以直接进入配置文件目录修改相应文件;

                   
  • 查阅配置规则文件和配置规则

通过cat alarm-settings.yml查阅文件内容如下:

常用指标解释规则:

rule name:规则名称必须是唯一的,必须是 _rule结尾;

metrics name:oal(Observability Analysis Language)脚本中的测量名;名称在SkyWalking后端服务已经定义为进入容器skywalking-oap之后,可以在以下目录中找到。

想了解更多oal,参照文档:https://github.com/apache/skywalking/blob/master/docs/en/concepts-and-designs/oal.md

include names:本规则生效的实体名称,如服务名、终端名等;

exclude-names:本规则应用于服务名、终端名等不匹配的实体名称;

threshold:阈值,可以是一个数组,可以配置多个值;

op:可设置 操作符>,<,=;

period:检查当前指标数据是否符合报警规则需要多长时间;以分钟为单位

count:超过阈值条件,达到count触发报警的次数;

silence period:在同一周期中,指定silence period同样的报警信息在时间内被忽略;

详情请参考本地址:https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/backend-alarm.md

                   
  • 简单修改配置规则文件

稍微改一下模板规则,用于后续演示,如下:

  • #警告规则的名称必须是唯一的_rule结尾
  • service_sla_rule:
  • #指定metrics-name
  • metrics-name:service_sla
  • #小于
  • op:"<"
  • #指定阈值
  • threshold:8000
  • #10每分钟检测一次报警规则
  • period:10
  • #触发两次报警规则,报警
  • count:2
  • #设置的3分钟时间段有相同的报警,不重复报警.
  • silence-period:3
  • #配置报警信息
  • message:Successfulrateofservice{name}islowerthan80%in2minutesoflast10minutes
  • 过去2分钟服务成功率低于80%

    2.2 告警API编写

    有规则后,如何自动发送报警信息?

    本质还是SkyWalking按规定检查,符合规定条件的,通过WebHook、gRPCHook、WeChat Hook、Dingtalk Hook等待消息通知;收到报警数据信息后,可自行处理。为了方便起见,在这里使用WebHook演示方式,即触发报警条件后,SkyWalking将调用配置WebHook 接口,并传递相应的报警信息;

                     
    • 报警信息

    SkyWalking以后端服务Post的方式调用WebHook并以Json以下格式将报警信息传输到接口:

  • [
  • {
  • "scopeId":1,//范围ID
  • "name":"serviceA",//实体名称
  • //实体ID
  • "id0":"12",
  • ////用于识别实体关系中的目标实体ID,没关系就是空
  • "id1":"",
  • //规则名称alarm-settings.yml规则名称中配置
  • "ruleName":"service_resp_time_rule",
  • /////触发报警时发送的消息
  • "alarmMessage":"alarmMessagexxxx",
  • ///报警时间戳
  • "startTime":1560524171000
  • },
  • {
  • "scopeId":1,
  • "name":"serviceB",
  • "id0":"23",
  • "id1":"",
  • "ruleName":"service_resp_time_rule",
  • "alarmMessage":"alarmMessageyyy",
  • "startTime":1560524171000
  • }
  • ]
  • 了解报警信息的格式后,写下API以这种格式接收。

                     
    • 编写报警时调用的API,如下:

    这只是一个常规API,之前在一篇文章中详细分享了邮件的配置(来吧,Consul 服务发现入门(一眼就能看到的那种)。

                     
    • 配置WebHook地址

    由于SkyWalking环境建在我的云服务器上,本地电脑没有配置外网访问,只能API这样发布到云服务器上,SkyWalking后端服务可以调用报警接口,因此在规则配置文件的底部配置WebHook可调用接口地址;步骤如下:

    修改alarm-settings.yml在文件的最终配置中WebHook地址,可以配置多个,如下:

    告警规则和WebHook配置地址后,重启容器如下:

  • dockerstopskywalking-oap
  • dockerstartskywalking-oap
  • 2.3 操作看效果

    启动项目,然后访问之前写的接口。接口中有一个特殊的异常,所以每次都会报错。错误率必须低于设置规则的80%。稍后会产生报警信息;

    报警信息也可以在界面上看到,如下:

    因为触发告警时会调用我们编写的WebHook接口,我们发送报警信息邮件,同时收到相应的报警邮件

    演示代码:https://gitee.com/CodeZoe/microservies-demo/tree/main/SkyWalkingDemo/SkyWalkingDataDemo

    总结

    嗯,关于报警的配置和使用很简单,如果有其他配置需求,可以参考官方网站,使用方法相似;以后会记录一些使用经验;

       
    • 评论列表:
    •  闹旅殊姿
       发布于 2022-06-03 12:16:42  回复该评论
    • 看SkyWalking记录如下:可以切换成列表的形式,看起来比较直观:点击每层显示相应的详细信息,如点击数据库操作相关层,显示具体信息SQL语句等信息如下:更多操作演示,留给朋友自己操作。2. 报警配置及使用自动报警基本上是监控系统的标准配置我们看看SkyW
    •  语酌岁笙
       发布于 2022-06-03 11:28:06  回复该评论
    • d:在同一周期中,指定silence period同样的报警信息在时间内被忽略;详情请参考本地址:https://github.com/apache/skywalking/blob/master/docs
    •  痴者鸽屿
       发布于 2022-06-03 11:37:20  回复该评论
    •              进入容器,进入相应的配置目录执行以下命令进入SkyWalking后台容器;如果不是由容器启动的,可以直接进入配置文件目录修改相应文件;                查阅配置规则文件和配置规则通过cat al
    •  性许睬姥
       发布于 2022-06-03 20:52:37  回复该评论
    • alarm-settings.yml查阅文件内容如下:常用指标解释规则:rule name:规则名称必须是唯一的,必须是 _rule结尾;metrics name:oal(Observability Analysis Language)脚本中的测量名;名称在SkyWalking后端服务已经定义为

    发表评论:

    Powered By

    Copyright Your WebSite.Some Rights Reserved.