ApiSix 开启SkyWalking插件,实现链路信息追踪

news2025/1/11 19:53:51

ApiSix 开启SkyWalking插件,实现链路信息追踪

  • 1 ApiSix开启SkyWalking插件
    • 1.1 修改config.yml配置文件
    • 1.2 在路由中开启SkyWalking插件
  • 2 创建两个SpringBoot服务,接入SkyWalking
    • 2.1 下载skywalking agent
    • 2.2 创建服务
    • 2.3 测试SkyWalking

1 ApiSix开启SkyWalking插件

1.1 修改config.yml配置文件

切换目录到/usr/local/apisix-docker/example/apisix_conf,编辑config.yml配置文件,添加SkyWalking插件配置,内容如下:
在这里插入图片描述

plugins:
  - skywalking          # 启用skywalking插件

skywalking: # 配置skywalking的属性
    service_name: APISIX_GATEWAY
    service_instance_name: "APISIX_INSTANCE_GATEWAY"
    endpoint_addr: http://192.168.44.131:12800  # skywalking的地址,本机默认是这个,可自行修改

在这里插入图片描述
切换目录至/usr/local/apisix-docker/example,执行指令docker-compose -p docker-apisix up -d重新安装ApiSix,如果SkyWalking插件不起作用,就删除apisix容器,重新执行指令docker-compose -p docker-apisix up -d创建apisix容器即可。
在这里插入图片描述

1.2 在路由中开启SkyWalking插件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2 创建两个SpringBoot服务,接入SkyWalking

2.1 下载skywalking agent

skywalking-agent,它简称探针,用来收集和发送数据到归集器。下载地址为:https://archive.apache.org/dist/skywalking/,下载到本地并解压。
在这里插入图片描述
apache-skywalking-apm-bin-es7/agent目录压缩为agent.zip,上传至Centos7服务器的/usr/local/skywalking-agent目录,并执行指令unzip agent.zip进行解压。
在这里插入图片描述
在这里插入图片描述

2.2 创建服务

创建两个SpringBoot服务,端口分别为8002、8003,提供的接口都为/user/test,接口的返回内容不同。

在pom.xml添加依赖

 <!--打印skywalking的TraceId到日志-->
<dependency>
   <groupId>org.apache.skywalking</groupId>           
   <artifactId>apm-toolkit-logback-1.x</artifactId>
   <version>8.7.0</version>
</dependency>

在logback-spring.xml添加打印skywalking链路日志信息

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true"  debug="false">

	<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
	<!--日志存放路径-->
	<property name="PATH" value="logs"/>

	<property name="FILE_NAME" value="${spring.application.name}"/>

	<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
			<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
				<Pattern>
					%black(%d{ISO8601}) [%tid] %highlight(${LOG_LEVEL_PATTERN:-%5p}) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
				</Pattern>
			</layout>
		</encoder>
	</appender>
	<!--trace-->
	<appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${PATH}/${FILE_NAME}_trace.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>${PATH}/${FILE_NAME}_trace.%d{yyyy-MM-dd}.log</FileNamePattern>
			<maxHistory>60</maxHistory>
			<totalSizeCap>1GB</totalSizeCap>
		</rollingPolicy>
		<encoder>
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %highlight([%-5level]) %green([%15.15thread]) %cyan([%logger:%line])--%mdc{client} %msg%n</pattern>
		</encoder>
	</appender>

	<!--error-->
	<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${PATH}/${FILE_NAME}_error.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>${PATH}/${FILE_NAME}_error.%d{yyyy-MM-dd}.log</FileNamePattern>
			<maxHistory>60</maxHistory>
			<totalSizeCap>1GB</totalSizeCap>
		</rollingPolicy>
		<encoder>
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %highlight([%-5level]) %green([%15.15thread]) %cyan([%logger:%line])--%mdc{client} %msg%n</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>ERROR</level>
		</filter>
	</appender>

	<root level="info">
		<appender-ref ref="Console" />
		<appender-ref ref="TRACE_FILE" />
		<appender-ref ref="ERROR_FILE" />
	</root>
</configuration>

第一个服务
在这里插入图片描述
启动指令

nohup java -javaagent:/usr/local/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=test-api -Dskywalking.collector.backend_service=192.168.44.131:11800 \
-jar /home/images/api/backend-1.0-SNAPSHOT.jar \
--server.port=8002 \
2>&1 > /home/images/api/nohup.log &

第二个服务
在这里插入图片描述
启动指令

nohup java -javaagent:/usr/local/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=test-api2 -Dskywalking.collector.backend_service=192.168.44.131:11800 \
-jar /home/images/api2/backend-1.0-SNAPSHOT.jar \
--server.port=8003 \
2>&1 > /home/images/api2/nohup.log &

2.3 测试SkyWalking

查看两个SpringBoot服务打印的日志信息,存在SkyWalking链路信息。
在这里插入图片描述

ApiSix也开启了SkyWalking插件。
在这里插入图片描述

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

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

相关文章

【链表】反转链表

BM1反转链表 描述 给定一个单链表的头结点pHead(该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1)&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 数据范围&#xff1a; 0\leq n\leq10000≤n≤1000 要求&#xff1a;空间复杂度…

飞行员兄弟( 二进制枚举) --《算法竞赛进阶指南》

题目如下&#xff1a; 输入样例&#xff1a; --- ---- ---- ---输出样例&#xff1a; 6 1 1 1 3 1 4 4 1 4 3 4 4思路 or 题解&#xff1a; 数据量很小可以直接进行 搜索 在这里我使用 二进制枚举 的方法去寻找答案 时间复杂度&#xff1a;O(2n)O(2^n)O(2n) 我们二进制枚举…

计算机相关专业混体制的解决方案(事业编之学校与医院)

文章目录1、教师行业1.1 中小学教师资格1.2 高校教师资格证1.3 应聘中小学教师1.4 待遇2、医疗行业2.1 如何进入医院信息科2.2 医院信息科工作内容2.3 医院信息科待遇主要介绍三个方面&#xff1a; 1、招聘条件&#xff0c;要求是什么。 2、工作内容&#xff0c;需要我做什么工…

【哈希表】leetcode242.有效的字母异位词(C/C++/Java/Python/Js)

leetcode242.有效的字母异位词1 题目2 思路 &#xff08;字典解法&#xff09;3 代码3.1 C版本3.2 C版本3.3 Java版本3.4 Python版本3.5 JavaScript版本4 总结1 题目 题源链接 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xf…

【JavaScript】多态(Symbol),迭代器接口,getter/setter,继承,instanceof

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录多态symbol迭代器接口实现数组的迭代器方法练习Getter/Setterstatic继承instanceof多态 我拿到一…

虽迟但到,我的2022年终总结

“子在川上曰&#xff0c;逝者如斯夫”。经历一年的居家办公、解封&#xff0c;终于在年底回归正常生活。时隔三年回老家过年&#xff0c;一切如故&#xff0c;好像疫情从没有来过。2022年对我来说是值得记忆的一年&#xff0c;在这一年里完成了买房这件人生大事&#xff0c;终…

SpringCloud学习笔记【part1】Spring Cloud Gateway网关的搭建、处理跨域问题

一、Spring Cloud Gateway 介绍 API网关出现的原因是微服务架构的出现&#xff0c;不同的微服务一般会有不同的网络地址&#xff0c;而外部客户端可能需要调用多个服务的接口才能完成一个业务需求。API 网关是介于客户端和服务器端之间的中间层&#xff0c;所有的外部请求都会先…

macos nginx 安装/卸载,启动/重启/关闭

1.安装/卸载 在macos中使用homebrew安装 brew install nginx,卸载brew uninstall nginx。homebrew安装 brew install xx&#xff0c;卸载brew uninstall xx 可以直接安装nginx-full&#xff0c;来安装echo模块 brew install nginx-full # 如果上面安装报错&#xff0c;需要按…

C 程序设计教程(18)—— 数组和指针(一):数组

C 程序设计教程&#xff08;18&#xff09;—— 数组和指针&#xff08;一&#xff09;&#xff1a;数组 该专栏主要介绍 C 语言的基本语法&#xff0c;作为《程序设计语言》课程的课件与参考资料&#xff0c;用于《程序设计语言》课程的教学&#xff0c;供入门级用户阅读。 目…

【SpringCloud复习巩固】微服务+Eureka+Ribbon

文章中需要用到的代码和sql 链接&#xff1a;https://pan.baidu.com/s/1_1Qqro7wR5zi7Ds8Bgmf-g 提取码&#xff1a;vxzg 目录 一.微服务 1.1单体架构 1.2分布式架构 1.3微服务 1.4各自特点总结 1.5微服务技术对比 二.服务拆分及远程调用 三.Eureka注册中心 3.1服务调用…

KVM虚拟化之小型虚拟机kvmtool的使用

根据 kvmtool github仓库文档的描述&#xff0c;类似于QEMU&#xff0c;kvmtool是一个承载KVM Guest OS的 host os用户态虚拟机&#xff0c;作为一个纯的完全虚拟化的工具&#xff0c;它不需要修改guest os即可运行, 不过&#xff0c;由于KVM基于CPU的硬件虚拟化支持&#xff0…

【JavaGuide面试总结】Java集合篇·上

【JavaGuide面试总结】Java集合篇上1.简单说说Java集合框架体系Collection接口Map接口2.说说 List, Set, Queue, Map 四者的区别&#xff1f;3.你在编程时如何选用集合?4.Collection 子接口之 ListArrayList 和 Vector 的区别?ArrayList 与 LinkedList 区别?说一说 ArrayLis…

ISIS特性与配置实例(DU比特、OL置位、Tag等)

2.3.0 ISIS基础命令与查询命令介绍、ISIS特性、ISIS与OSPF 本文章以ISIS的特性结合ISIS配置实例进行讲述&#xff0c;故篇幅会非常之大&#xff0c;建议电脑端上结合目录观看以免影响观感。 目录路由渗透配置路由渗透实例一、配置设备IP地址二、配置ISIS三、检查ISIS&#xff0…

ProGet 22.0 Enterprise Crack by Xacker

ProGet将所有包和 Docker 容器放在一个地方&#xff0c;扫描漏洞&#xff0c;并控制谁可以访问不同的提要。ProGet 可在数分钟内完成安装&#xff0c;并且拥有功能强大的免费版本&#xff0c;其中包含许多您可以在准备就绪后进行升级的强大功能。 特色用例 私人 NuGet 服务器 …

Bug:SpringBoot类文件具有错误的版本 61.0, 应为 52.0

Bug:SpringBoot类文件具有错误的版本 61.0, 应为 52.0 启动Springboot项目时候报错 java: 无法访问org.springframework.boot.SpringApplication 错误的类文件: /D:/Maven/apache-maven-3.6.3/repository/org/springframework/boot/spring-boot/3.0.0/spring-boot-3.0.0.jar!/o…

Linux动静态库

目录 一、库的概念与类型 二、库的组成文件(.o) 2.1 初始源代码(.c .h) 2.2 可重定位二进制文件(.o) 2.3 库文件(lib) 与 头文件(.h&#xff09; 三、实现静态库(.a) 3.1 建立静态库文件 3.2 交付库 3.3 编译器在编译链接中的作用 3.4 使用第三方静态库与头文件 3.…

JavaScript的引入方式和基础语法~

JavaScript简介&#xff1a; JavaScript是一门跨平台&#xff0c;面向对象的脚本语言&#xff0c;来控制网页行为的&#xff0c;它能使网页可交互 W3C标准&#xff1a;网页主要由三部分组成 结构&#xff1a;HTML 表现&#xff1a;CSS 行为&#xff1a;JavaScriptJavaScript…

大数据技术架构(组件)8——Hive:Function Cases UDF/UDTF/UDAF 1

1.3、Function Cases1.3.1、窗口函数row_number&#xff1a;使用频率 ★★★★★rank &#xff1a;使用频率 ★★★★dense_rank&#xff1a;使用频率 ★★★★rank/dense_rank/row_number对比first_value&#xff1a;使用频率 ★★★last_value&#xff1a;使用频率 ★lead&am…

下班前几分钟,我彻底弄懂了并查集

目录一、并查集的由来二、代表元法2.1 初始化2.2 查询2.3 合并2.4 设计理念三、并查集的应用3.1 合并集合3.2 连通块中点的数量3.3 亲戚3.4 省份数量References一、并查集的由来 考虑这样一个场景。 现有 nnn 个元素&#xff0c;编号分别为 1,2,⋯,n1,2,\cdots,n1,2,⋯,n&…

【JVM】详解直接内存

文章目录1. 直接内存概述2. 直接内存的使用2.1 Java缓冲区2.2 直接内存3. 直接内存的释放3.1 直接内存释放原理4. 禁用显式回收对直接内存的影响1. 直接内存概述 下面是 《深入理解 Java 虚拟机 第三版》2.2.7 小节 关于 Java 直接内存的描述。 直接内存&#xff08;Direct Me…