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访问数据库,如下:

a01c27e64fbfe58bd125f938ed7abbef.png

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

1.3 看效果

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

09e91b3fd08b51cba69c8bc0ec0464ad.png

可以切换成列表的形式,看着相对更直观一点:

b7fd4c2612ff394e6a165509bc66c089.png

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

25f7e7b98b7d19f14e5feba2042df299.png

更多操作演示,就留给小伙伴自己操作吧。

2. 告警配置及使用

自动告警基本上是监控系统的标配,接下来看看在SkyWalking中是如何使用的。

2.1 告警规则配置

所谓告警规则其实就是配置的告警条件及检查周期,根据业务需要进行配置。

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

由于演示是采用Docker的形式启动的容器,也没有进行数据卷挂载,所以我们需要进入对应的容器进行配置,如下:

  • 进入容器,并到对应的配置目录

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

    docker exec -it skywalking-oap /bin/bash
    e7f5fb4e01fe7733ea43bd62c2c626f5.png
  • 查阅配置规则文件及配置规则解读

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

    35b874a70e827444468bfe852242768f.png

    规则常用指标解读

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

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

    6722a9aa3dde9ce37e422055032e1c46.png

    如果想更多了解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-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, // 范围ID"name": "serviceA", //实体名称// 实体ID"id0": "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,如下:

    87797352a5dfd3e87d919279ff97b896.png

    这里只是一个常规的API,关于发邮件的配置,之前在一篇文章中分享的很详细(来,Consul 服务发现入个门(一看就会的那种)

  • 配置WebHook地址

    由于SkyWalking的环境搭建在了我的云服务器,本地电脑没有配置外网访问,所以只能将API发布到云服务器上,这样SkyWalking后端服务调用告警接口就可以了,所以这里就在规则配置文件的最下面配置WebHook调用的接口地址即可;步骤如下:

    1bbe32ac1f4e6effd9aab4e117e91130.png

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

    2e107d36d5350e016f49499802bcd8ab.png

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

    docker stop skywalking-oapdocker start skywalking-oap
2.3 运行看效果

启动项目,然后访问之前写好的接口,接口中特意搞了个异常,所以每次都会报错,错误率肯定是低于设置的规则80%,稍等一会就会产生告警信息;

42e1d36da1624c2d70e79a1e8625f8cc.png

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

f050236b638da5dbe3fdf8de99c89662.png

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

7057e3dfba9f5c74902d29ea252ba4b6.png

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

总结

好了,关于告警的配置和使用就简单说这么多吧,如果有其他配置需求,可以参照官网,使用方式大同小异;后续会记录一些使用经验,关注“Code综艺圈”,和我一起学习吧;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神抓拍!2020搞笑野生动物摄影大赛,哈哈哈哈哈笑到头掉

全世界只有3.14 % 的人关注了爆炸吧知识图片来自CWPAs 2020小动物们到底能有多好玩让我们来看看今年的搞笑野生动物摄影大赛吧保准叫你从头笑到尾&#xff08;以下是入围作品&#xff09;“飚自行车的”猴看起来像个酷猴▲摄影&#xff1a;Yevhen Samuchenko真情实感演绎“我太…

绝不翻车珍珠奶茶做法

1 如何在家自制珍珠奶茶▼2 儿子&#xff0c;妈妈给你烤小饼干哦▼3 放假太久了连自己哪个班都忘了▼4 想问下&#xff0c;鸟是在哪都能起窝吗&#xff1f;▼5 不到万不得已&#xff0c;绝不去做▼6 这个店名太童年阴影了▼7 小鸡做错了什么&#xff1f;▼你点的每个赞&…

施一公:“中国式科研”误国误民!表面上一片繁荣,实则深藏危机

全世界只有3.14 % 的人关注了爆炸吧知识论文和科技实力是两回事在全国政协十三届一次会议上&#xff0c;中国科学院院士、清华大学原副校长施一公曾说道&#xff1a;“我以前曾经预测&#xff0c;中国会在2020年论文数超过美国&#xff0c;没想到我们提前完成了。”但面对这项数…

正确使用和理解C#中的闭包

定义 我们把在Lambda表达式(或匿名方法)中所引用的外部变量称为捕获变量。而捕获变量的表达式就称为闭包。捕获变量 捕获的变量会在真正调用委托时“赋值”&#xff0c;而不是在捕获时“赋值”&#xff0c;即总是使用捕获变量的最新的值。如下代码所示&#xff0c;调用委托时&a…

重磅公开!36个高考数学破题大招

前段时间&#xff0c;超模君发了关于极值点偏移问题的总结资料&#xff0c;朋友们都觉得内容整合得十分详细。同时&#xff0c;也有不少很多朋友留言说希望有其他高考数学常考问题的解题总结。确实&#xff0c;毕竟高考涉及的内容非常多&#xff0c;比如说参数范围问题、数列求…

Linux服务器数据备份

2019独角兽企业重金招聘Python工程师标准>>> 服务器上的数据是如此重要&#xff0c;以至于我们定期要对其进行备份&#xff01;这里讲一下mysql的备份和使用rsync同步服务器上的文件&#xff0c;从而实现多台linux服务器之间的文件的备份。 一 Mysql备份 mysql的备份…

与毒”共舞30年!清华美女研究生为何放弃高薪,选择特招入伍?背后的原因令人泪崩......

全世界只有3.14 % 的人关注了爆炸吧知识从武汉新冠疫情爆发到如今&#xff0c;陈薇没有一天休息。短短半年间&#xff0c;54岁的她头发从黑到白&#xff0c;也哭了好几次。刚去武汉-现在陈薇的母亲也在电视上看到了女儿的变化&#xff1a;“她变老了&#xff0c;都有白头发了。…

Centos-启动network报错RTNETLINK answers: File exists解决方法

背景&#xff1a;今天在Vcenter上&#xff0c;用模板克隆了一个虚拟机&#xff0c;启动之后&#xff0c;网卡启动不了&#xff0c;报错如下&#xff1a;RTNETLINK answers: File exists说明&#xff1a; 环境 Centos6.6_X64 &#xff1b; 网卡两个原因&#xff1a; 由于用模板…

不当败家子的原因......

1 实在是太真实&#xff01;▼2 有钱就是可以为所欲为&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 在哪都要有仪式感&#xff01;▼4 送自己去孤儿院......▼5 万万没想到...&#xff08;图源网络&#xff0c;侵删&#xff09;▼6 这都能催的&#xff1f;▼…

我不信奉Scrum,我信奉敏捷

Scrum一直以来争论不断。虽然创始人Ken在演讲中曾说过即使是白痴也可以用Scrum&#xff0c;但是依然有很多人认为Scrum对团队成员的素质要求非常高。另据统计&#xff0c;75%以上的Scrum都可以称得上失败。 去年十月&#xff0c;有幸参加了Outsofting鲍央舟老师的Scrum培训。培…

仿京东商城源码java_Java+SSM实现类似京东的3C电子商城系统

需求分析基于Spring, SpringMVC, Mybatis 实现一个类似仿京东商城的3C电子商城系统, 能够实现商品管理与展示, 加入购物车, 支付购买等功能, 项目采用java技术进行开发。运行环境java, jdk1.8,tomcat8.5,mysql5.6,EclispseEE项目技术java, spring springmvc, mybatis, bootstra…

跨浏览器开发:CSS代码的金科玉律

作为Web设计师&#xff0c;你的网站在各种浏览器中有完全一样的表现是很多人的目标&#xff0c;然而这是一个永远无法真正实现的目标&#xff0c;很多人认为&#xff0c;完美的跨浏览器兼容并不必要&#xff0c;这样说虽然没错&#xff0c;但在很多情形&#xff0c;一种近似的兼…

Refit结合Polly访问ASP.NET Core Web API

前言在.NET Core应用中访问ASP.NET Core Web API接口&#xff0c;常用的方式是使用IHttpClientFactory生成HttpClient实例&#xff0c;并通过结合Polly策略&#xff0c;以实现重试&#xff0c;熔断等机制。在本文中&#xff0c;我们将介绍如何使用Refit&#xff0c;结合Polly访…

10个经典的爆炸化学反应,个个都是你惹不起的“暴脾气”

全世界只有3.14 % 的人关注了爆炸吧知识没有放过火&#xff0c;没有爆炸过&#xff0c;就不算真正学化学的。还有谁能比化学狗们的胆子更大、回忆更深刻吗&#xff1f;化学狗们能活到现在简直是个奇迹&#xff5e;&#xff5e;&#xff5e;懂的就默默转了吧&#xff01;小编整理…

狗为什么吃屎?真相男默女泪,但看完后你也会流口水......

全世界只有3.14 % 的人关注了爆炸吧知识别人笑狗太疯癫狗笑他人看不穿据说&#xff0c;200%的网友在学习一门新语言时&#xff0c;都会从最基本的日常问候语开始学起&#xff0c;例如——骂人。危险动作&#xff0c;请勿模仿。那但凡是学过汉语的人应该都知道&#xff0c;咱们中…

WPF开发登录窗口之——添加文本输入框用户控件

WPF开发者QQ群&#xff1a; 340500857 | 微信群 目前人数太多&#xff0c;暂不开放窗口开发完成后&#xff0c;接下来就是开发客户区中的输入框控件&#xff0c;但在开发之前&#xff0c;我们先开发一个输入框基类&#xff0c;然后通过继承的方式去实现文本输入框与密码输入框…

JSTL分割字符 fn:split()

2019独角兽企业重金招聘Python工程师标准>>> <% page language"java" contentType"text/html; charsetUTF-8"%> <% taglib uri"http://java.sun.com/jsp/jstl/core" prefix"c"%> <% taglib uri"http:/…

女友的前男友教我该怎么照顾她......

1 总觉得不太对劲&#xff1f;▼2 这回复真神&#xff01;&#xff08;via.机智得赵老师&#xff09;▼3 奇怪的知识又增加了......▼4 卖茶小妹真的与时俱进...&#xff08;via.外卖小哥金城武&#xff09;▼5 超大容量花露水没见过吧&#xff1f;&#xff01;▼6 别人在…

浅谈.Net异步编程的前世今生----EAP篇

前言在上一篇博文中&#xff0c;我们提到了APM模型实现异步编程的模式&#xff0c;通过使用APM模型&#xff0c;可以简化.Net中编写异步程序的方式&#xff0c;但APM模型本身依然存在一些缺点&#xff0c;如无法得知操作进度&#xff0c;不能取消异步操作等。针对这些缺点&…

CentOS 5 CentOS 6 启动流程及关键步骤

CentOS 5 CentOS 6 启动流程及关键步骤1、加电自检&#xff1a;当打开主机电源时&#xff0c;主机会唤醒cpu&#xff0c;使其运行CMOS中的BIOS&#xff0c;BIOS检查必要的硬件是否存在&#xff08;内存、硬盘等&#xff09;BIOS其实是一个小型系统&#xff0c;可以完成一些像检…