Skywalking的重要功能详解

学习本篇文章之前首先要了解一下Sky walking的基础知识

分布式链路追踪工具Sky walking详解

一,Sky walking监控数据库

在admin服务中,连接数据库查询user表中所有数据
引入依赖

		<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.2</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>

编写userList接口

	@GetMapping("/userList")public List<User> userList() {return userService.userList();}

UserServiceImpl类

	@Overridepublic List<User> userList() {return this.list();}

user表中模拟一百万数据【使用MySQL存储过程】

CREATE PROCEDURE bachInsert2354()
BEGIN
DECLARE n INT DEFAULT 0;
START TRANSACTION;
WHILE n < 1000000 DOINSERT INTO `user` VALUES(NULL,'dddd','333333');SET n := n + 1;END WHILE;COMMIT;
END;CALL bachInsert2354();

访问http://localhost:8086/userList
在这里插入图片描述
查看Sky walkingUI界面
在这里插入图片描述
拓扑图
在这里插入图片描述
链路追踪
在这里插入图片描述
查看数据库监控页面
在这里插入图片描述
在这里插入图片描述
Slow Statements (ms)是慢查询SQL

二,Sky walking配置服务的启动日志

将服务的启动日志上传到Sky walking
Spring boot集成log4j2
将Spring boot默认的Logback日志框架移除

		<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><!-- 去掉springboot默认配置 --><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency>

引入log4j2日志依赖

		<dependency> <!-- 引入log4j2依赖 --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency>

引入Sky walking日志工具包依赖

        <dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-log4j-2.x</artifactId><version>8.9.0</version></dependency>

配置log4j2.xml文件【在resource目录下】

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN" monitorInterval="30"><!--先定义所有的appender--><appenders><!-- skywalking输出器 --><GRPCLogClientAppender name="SkywalkingLog"><ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${LOG_PATTERN}"/></GRPCLogClientAppender></appenders><loggers><root level="INFO"><appender-ref ref="SkywalkingLog"/></root></loggers>
</configuration>

查看UI界面
在这里插入图片描述

三,配置告警

Sky walking并没有直接配置告警功能,而是将需要告警的指标配置到配置文件中,配置webhook【网络钩子】,通过自定义通知接口,然后在实现告警通知,告警规则定义在服务端的config/alarm-settings.yml文件中 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/746b285f63214b31a4af579ca03953fd.png)
#配置告警规则
rule:#服务自带的告警规则...#自定义告警规则#规则名称,必须全局唯一,并且以"_rule"结尾xxxxxx_rule:#告警的指标名称,具体值可以参考下图metrics-name: endpoint_sla#[可选] 指定告警的服务include-names:- serviceA- serviceB#[可选] 排除的服务将不触发告警  exclude-names:- serviceC#[可选] 匹配微服务的名称, 通过正则表达式  include-names-regex: instance\_\d+#阈值,对于不同的指标类型,可以设置不用类型的值,目前支持long, double or int  threshold: 9000  #操作符op: "<"#时间窗口长度,单位时间内,指标异常就会触发告警 (单位是分钟)period: 2#累计数量,指标符合告警条件达到累计数量后,才会触发告警count: 3#静默时间,当发生告警后,多长时间不再告警,默认和period值保持一致silence-period: 10#告警内容,触发告警时,显示的消息内容 {name} 表示告警的服务名称message: Successful rate of service {name} is lower than 90% in 2 minutes of last 10 minutes

配置webhook
在这里插入图片描述
告警规则使用原来的实例即可
编写notify接口

    @PostMapping("/notify")public void alertNotify(@RequestBody List<AlertMessage> alertMessages) {System.out.println("alert");System.out.println(alertMessages);for (AlertMessage alertMessage : alertMessages) {System.out.println(alertMessage);}}

再次访问 http://localhost:8086/userList
触发notify接口
在这里插入图片描述
配置钉钉告警机器人

dingtalkHooks:textTemplate: |-{"msgtype": "text","text": {"content": "Apache SkyWalking Alarm: \n %s."}}    webhooks:- url: 回调地址如【https://oapi.dingtalk.com/robot/send?access_token=dummy_token】secret: 机器人密钥【dummysecret】

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

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

相关文章

上位机图像处理和嵌入式模块部署(树莓派4b和qt应用全屏占有)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 我们都知道&#xff0c;嵌入式应用一般都是为了某一个特定应用而存在的。也就是说&#xff0c;和pc不同&#xff0c;这个嵌入式板子一般都是为了解…

消息队列面试题(四)

1. 如何监控消息队列的性能和健康状况&#xff1f; 监控消息队列的性能和健康状况是确保系统稳定、高效运行的关键环节。以下是一些建议的步骤和策略&#xff1a; 1. 使用内置指标 许多消息队列系统&#xff08;如Kafka、RabbitMQ等&#xff09;都提供了丰富的内置指标&…

10分钟快速使用Prometheus监控nginx

配置 Nginx 以输出监控数据 修改 Nginx 配置&#xff1a; 在 Nginx 配置文件 /etc/nginx/nginx.conf 中的 server 块添加如下配置&#xff1a; location /stub_status {stub_status on;access_log off;allow 0.0.0.0/0;deny all; }重启 Nginx&#xff1a; 通过命令重启 Nginx 服…

List转字符串

List:[“a”,“b”,“c”] 转换后&#xff1a;a,b,c 1、String.join // 1. 创建一个List集合 数量不可变List<String> list List.of("a", "b", "c");//list [a, b, c]System.out.println("list " list);String join Strin…

多组间比较散点图+误差棒(自备)

目录 数据 计算四分位值 作图 数据 rm(list ls()) library(ggplot2) library(dplyr) library(ggpubr) library(reshape2) library(tidyverse)data <- iris##鸢尾花数据集 dat <- data[,c(5,1)]#单个数据进行分析 计算四分位值 #根据分组计算四分位及中位数 dat1 …

Unit4

&#x1f4e3;Unit4 ✨1. merge&#xff0c;merse 合并&#xff1b;吞没 merge merger emerge emerging emergence emergency immerse immersive ✨2. ject 投掷&#xff1b;投射 eject inject injection project reject rejection subject be subject to sth subje…

【C++】HP-Socket(三):UdpClient、UdpServer、UdpCast、UdpNode的区别

1、简述 UDP是无连接的&#xff0c;在UDP传输层中并没有客户端和服务端的概念。但是可以在应用层定义客户端和服务端&#xff0c;可以灵活的互换客户端和服务端&#xff0c;或者同时既是客户端也是服务端。 HP-Socket中在应用层定义了四种UDP组件&#xff1a;UdpClient、UdpS…

使用Docker安装Redis

大家好&#xff0c;今天给大家分享一下如何使用docker安装Redis&#xff0c;关于docker的安装和常用命令&#xff0c;大家可以参考下面两篇文章&#xff0c;本文中不做过多描述。 Docker在Windows与CentOS上的安装 Docker常用命令 关于Redis的介绍与常用操作可以参考&#x…

中国科技大航海时代,“掘金”一带一路

文&#xff5c;白 鸽 编&#xff5c;王一粟 “这不就是90年代的内地吗&#xff1f;” 在深度考察完沙特市场后&#xff0c;华盛集团联合创始人兼CEO张霆对镜相工作室感慨道。 在张霆看来&#xff0c;沙特落后的基建&#xff08;意味着大量创新空间&#xff09;、刚刚开放…

AHB---数据总线

1. 数据总线 为了实现AHB系统&#xff0c;需要独立的读写数据总线。虽然推荐的最小数据总线宽度被指定为32位&#xff0c;但这可以根据数据总线宽度进行更改。 数据总线包含以下部分&#xff1a; HWDATAHRDATAEndianness&#xff08;字节序&#xff09; 1.1 HWDATA 在写传输…

SD-Turbo部署

stabilityai/sd-turbo 官网 2023 年 11 月 30 日 继推出 SDXL-Turbo 之后&#xff0c;我们又发布了SD-Turbo。 2023 年 11 月 28 日 我们正在发布 SDXL-Turbo&#xff0c;一种闪电般快速的文本到图像模型。除了模型之外&#xff0c;我们还发布了技术报告 用法&#xff1…

【革命启示录】Spring框架:Java开发的“核聚变”能量源!

Hello&#xff0c;我是阿佑&#xff0c;今天给大家整的活是 《Java开发的“核聚变”能量源》 文章目录 Spring框架原理详解一、引言简介目的特点例子 二、背景介绍问题解决方案例子 三、核心概念3.1 控制反转&#xff08;Inversion of Control, IoC&#xff09;定义实现例子与代…

Sarcasm detection论文解析 |基于情感背景和个人表达习惯的有效讽刺检测方法

论文地址 论文地址&#xff1a;https://link.springer.com/article/10.1007/s12559-021-09832-x#/ 论文首页 笔记框架 基于情感背景和个人表达习惯的有效讽刺检测方法 &#x1f4c5;出版年份:2022 &#x1f4d6;出版期刊:Cognitive Computation &#x1f4c8;影响因子:5.4 &…

【python】基础语法

目录 一.注释和常见规则 二.变量及类型 1.数据类型 2.Numbers数字数据类型 3. 字符串类型 &#xff08;1&#xff09;字符串访问 &#xff08;2&#xff09;字符串拼接 4.List&#xff08;列表&#xff09;类型 &#xff08;1&#xff09; 定义 &#xff08;2&#…

【Linux】yum

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; Linux &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 觉得本片文章写的还不错的可以&#x1f44d;点赞&#x1f44d;、&#x1f31f;收藏&#x1f31f;、&#x1f4dd;…

Vue.js设计与实现——通过Proxy实现简单的响应式系统

文章内容来源&#xff1a;《Vue.js设计与实现》 —— 当当网 &#xff0c;作者&#xff1a;霍春阳&#xff08;HcySunYang&#xff09; 一、通过 Proxy 实现基本的响应式数据&#xff1a; function Section1 () {// 存储副作用函数的桶const bucket new Set();// 原始数据co…

Golang | Leetcode Golang题解之第71题简化路径

题目&#xff1a; 题解&#xff1a; func simplifyPath(path string) string {stack : []string{}for _, name : range strings.Split(path, "/") {if name ".." {if len(stack) > 0 {stack stack[:len(stack)-1]}} else if name ! "" &am…

boost::asio::ip::tcp::resolver async_resolve异步解析

boost::asio::ip::tcp::resolver::async_resolve 是一个异步解析函数&#xff0c;用于将主机名和服务名转换为端点&#xff08;通常是 IP 地址和端口号&#xff09;。 以下是一个简单的使用示例&#xff1a; #include <boost/asio.hpp> #include <iostream>void …

PCB机打孔机程序(二)

/************************************/ void main(void) { aabb0; P0M00; P0M10; P1M00X80; //1000 0000 P1.7开漏 P1M10X80; //1000 0000 P2…

在uniapp里面使用 mp-html 并且开启 latex 功能

在uniapp里面使用 mp-html 并且开启 latex 功能 默认情况下 mp-html 是不会开启 latex 功能的, 如果需要开启 latex 功能是需要到代码操作拉取代码自行打包的。 这里说一下 mp-html 里面的 latex 功能是由 https://github.com/rojer95/katex-mini 提供的技术实现&#xff0c;…