上海响应式网站制作公司,建设公司起名哪个网站好,网站建设甲方给乙方的需求方案,wordpress 主题更改前台字体前言对于监控系统来说#xff0c;不可能让人一直盯着监控看板#xff0c;而更多的是以自动提醒的方式#xff0c;比如邮件、短信或微信推送等#xff0c;当达到或超出预设的告警指标时#xff0c;就自动发送消息提醒#xff0c;下面就来说说如何配置SkyWalking的告警。正… 前言对于监控系统来说不可能让人一直盯着监控看板而更多的是以自动提醒的方式比如邮件、短信或微信推送等当达到或超出预设的告警指标时就自动发送消息提醒下面就来说说如何配置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后台容器如果不是以容器启动的直接进到配置文件目录修改对应文件即可docker exec -it skywalking-oap /bin/bash查阅配置规则文件及配置规则解读通过cat alarm-settings.yml可以查阅文件内容如下规则常用指标解读rule name规则名称必须唯一必须以 _rule结尾metrics nameoal(Observability Analysis Language)脚本中的度量名名称在SkyWalking后端服务中已经定义进入容器skywalking-oap之后进入如下目录就可以找到。如果想更多了解oal参照文档https://github.com/apache/skywalking/blob/master/docs/en/concepts-and-designs/oal.mdinclude 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-namemetrics-name: service_sla# 小于op: # 指定阈值threshold: 8000 # 10分钟检测一次告警规则 period: 10 # 触发2次告警规则就告警 count: 2 # 设置的3分钟时间段有相同的告警不重复告警.silence-period: 3 # 配置告警消息message: Successful rate of service {name} is lower than 80% in 2 minutes of last 10 minutes规则概要服务成功率在过去2分钟内低于80%2.2 告警API编写有了规则之后如何进行自动发送告警信息呢这个本质还是SkyWalking根据规则进行检查如果符合规则条件就通过WebHook、gRPCHook、WeChat Hook、Dingtalk Hook等方式进行消息通知接收到告警数据信息之后可以自行处理消息。这里为了方便就采用WebHook的方式进行演示即触发告警条件之后SkyWalking会调用配置的WebHook 接口并传递对应的告警信息传递的告警信息SkyWalking后端服务会以Post的方式调用WebHook的接口并以Json的形式向接口传递告警信息如下格式[{scopeId: 1, // 范围IDname: serviceA, //实体名称// 实体IDid0: 12, // 用于标识实体关系中的目标实体ID没有关系就为空 id1: , // 规则名称 alarm-settings.yml中配置的规则名称ruleName: service_resp_time_rule,// 触发告警时发送的消息alarmMessage: alarmMessage xxxx,// 告警的时间戳startTime: 1560524171000}, {scopeId: 1,name: serviceB,id0: 23,id1: ,ruleName: service_resp_time_rule,alarmMessage: alarmMessage yyy,startTime: 1560524171000}]知道传递告警的信息的格式后写API的时候就得以此格式接收。编写告警时调用的API如下这里只是一个常规的API关于发邮件的配置之前在一篇文章中分享的很详细(来Consul 服务发现入个门(一看就会的那种)配置WebHook地址由于SkyWalking的环境搭建在了我的云服务器本地电脑没有配置外网访问所以只能将API发布到云服务器上这样SkyWalking后端服务调用告警接口就可以了所以这里就在规则配置文件的最下面配置WebHook调用的接口地址即可步骤如下修改alarm-settings.yml的文件在文件最后配置WebHook地址可以配置多个如下告警规则和WebHook地址配置完毕之后重启一下容器如下docker stop skywalking-oapdocker start skywalking-oap2.3 运行看效果启动项目然后访问之前写好的接口接口中特意搞了个异常所以每次都会报错错误率肯定是低于设置的规则80%稍等一会就会产生告警信息界面上也可以看到告警信息如下因为触发告警时会调用我们编写的WebHook接口我们针对告警信息发送了邮件所以同时会收到对应的告警邮件演示代码https://gitee.com/CodeZoe/microservies-demo/tree/main/SkyWalkingDemo/SkyWalkingDataDemo总结好了关于告警的配置和使用就简单说这么多吧如果有其他配置需求可以参照官网使用方式大同小异后续会记录一些使用经验关注“Code综艺圈”和我一起学习吧