From e394f2b51f3fcdc5db7a9b178328d939de850813 Mon Sep 17 00:00:00 2001 From: lingxiao865 <1060369102@qq.com> Date: Tue, 10 Feb 2026 08:54:10 +0800 Subject: [PATCH] 1 --- README.md | 142 ------------------ .../config/InstallOpenTelemetryAppender.java | 22 +++ .../example/demo001/config/TraceIdFilter.java | 37 +++++ a-service/src/main/resources/application.yml | 20 +++ .../src/main/resources/logback-spring.xml | 12 ++ .../config/InstallOpenTelemetryAppender.java | 22 +++ .../springboot4/config/TraceIdFilter.java | 38 +++++ auth/src/main/resources/application.yml | 22 ++- auth/src/main/resources/logback-spring.xml | 12 ++ {geteway => gateway}/.gitattributes | 0 {geteway => gateway}/.gitignore | 0 .../.mvn/wrapper/maven-wrapper.properties | 0 {geteway => gateway}/Dockerfile | 0 {geteway => gateway}/mvnw | 0 {geteway => gateway}/mvnw.cmd | 0 {geteway => gateway}/pom.xml | 4 +- .../example/geteway/GatewayApplication.java | 0 .../config/CookieBearerTokenResolver.java | 0 .../config/InstallOpenTelemetryAppender.java | 22 +++ .../config/OpenTelemetryConfiguration.java | 54 +++++++ .../geteway/config/SecurityConfig.java | 0 .../example/geteway/config/TraceIdFilter.java | 38 +++++ .../geteway/config/UserIdMappingFilter.java | 0 .../src/main/resources/application.yml | 22 ++- gateway/src/main/resources/logback-spring.xml | 12 ++ .../geteway/GatewayApplicationTests.java | 0 pom.xml | 12 +- 27 files changed, 345 insertions(+), 146 deletions(-) delete mode 100644 README.md create mode 100644 a-service/src/main/java/com/example/demo001/config/InstallOpenTelemetryAppender.java create mode 100644 a-service/src/main/java/com/example/demo001/config/TraceIdFilter.java create mode 100644 a-service/src/main/resources/logback-spring.xml create mode 100644 auth/src/main/java/com/example/springboot4/config/InstallOpenTelemetryAppender.java create mode 100644 auth/src/main/java/com/example/springboot4/config/TraceIdFilter.java create mode 100644 auth/src/main/resources/logback-spring.xml rename {geteway => gateway}/.gitattributes (100%) rename {geteway => gateway}/.gitignore (100%) rename {geteway => gateway}/.mvn/wrapper/maven-wrapper.properties (100%) rename {geteway => gateway}/Dockerfile (100%) rename {geteway => gateway}/mvnw (100%) rename {geteway => gateway}/mvnw.cmd (100%) rename {geteway => gateway}/pom.xml (94%) rename {geteway => gateway}/src/main/java/com/example/geteway/GatewayApplication.java (100%) rename {geteway => gateway}/src/main/java/com/example/geteway/config/CookieBearerTokenResolver.java (100%) create mode 100644 gateway/src/main/java/com/example/geteway/config/InstallOpenTelemetryAppender.java create mode 100644 gateway/src/main/java/com/example/geteway/config/OpenTelemetryConfiguration.java rename {geteway => gateway}/src/main/java/com/example/geteway/config/SecurityConfig.java (100%) create mode 100644 gateway/src/main/java/com/example/geteway/config/TraceIdFilter.java rename {geteway => gateway}/src/main/java/com/example/geteway/config/UserIdMappingFilter.java (100%) rename {geteway => gateway}/src/main/resources/application.yml (64%) create mode 100644 gateway/src/main/resources/logback-spring.xml rename {geteway => gateway}/src/test/java/com/example/geteway/GatewayApplicationTests.java (100%) diff --git a/README.md b/README.md deleted file mode 100644 index 57fc2de..0000000 --- a/README.md +++ /dev/null @@ -1,142 +0,0 @@ -# LingXiao 项目 - -基于 Spring Boot 4 和 Spring Cloud 2025 的微服务架构示例,包含认证授权、API 网关和业务服务模块,支持 Kubernetes 原生部署。 - -## 技术栈 - -- **Java**: 25 -- **Spring Boot**: 4.0.2 -- **Spring Cloud**: 2025.1.1 -- **构建工具**: Maven -- **数据库**: MySQL, Redis -- **容器编排**: Kubernetes (Fabric8) -- **Web 服务器**: Jetty (auth 模块), Netty (网关和业务服务) -- **模板引擎**: Thymeleaf -- **安全**: Spring Security OAuth2 - -## 项目结构 - -``` -lingxiao/ -├── auth/ # 认证授权服务 -├── geteway/ # API 网关 -├── a-service/ # 业务服务 -├── k8s/ # Kubernetes 部署配置 -├── keys/ # 密钥文件 -├── pom.xml # 父 POM -└── mvnw, mvnw.cmd # Maven Wrapper -``` - -### 模块说明 - -#### auth (认证授权服务) -- 基于 Spring Boot + Jetty -- 集成 Spring Security OAuth2 Authorization Server -- 使用 Redis 存储会话和缓存 -- 支持 MySQL 数据库存储用户信息 -- 启用 Kubernetes 服务发现 (`@EnableDiscoveryClient`) -- 提供 Thymeleaf 模板页面 - -#### geteway (API 网关) -- 基于 Spring Cloud Gateway (WebFlux) -- 集成 OAuth2 资源服务器和客户端 -- 作为微服务架构的入口点,负责路由、安全认证等 - -#### a-service (业务服务) -- 基于 Spring Boot WebFlux (响应式) -- 使用 `@ImportHttpServices` 导入 HTTP 服务客户端 -- 示例业务逻辑服务 - -## 快速开始 - -### 环境要求 -- JDK 25+ -- Maven 3.9+ -- Docker & Kubernetes (可选,用于容器化部署) -- MySQL 8.0+ 和 Redis 7.0+ (用于 auth 模块) - -### 构建项目 -```bash -# 使用 Maven Wrapper (推荐) -./mvnw clean package -DskipTests - -# 或直接使用 Maven -mvn clean package -DskipTests -``` - -### 运行单个服务 -```bash -# 运行认证服务 -cd auth -../mvnw spring-boot:run - -# 运行网关 -cd geteway -../mvnw spring-boot:run - -# 运行业务服务 -cd a-service -../mvnw spring-boot:run -``` - -### 使用 Docker 运行 -```bash -# 构建 Docker 镜像 -docker build -t lingxiao-auth ./auth -docker build -t lingxiao-gateway ./geteway -docker build -t lingxiao-a-service ./a-service -``` - -## Kubernetes 部署 - -项目已包含 Kubernetes 部署配置 (`k8s/` 目录): - -- `auth-deployment.yaml` - 认证服务部署 -- `gateway-deployment.yaml` - 网关部署 -- `a-service-deployment.yaml` - 业务服务部署 -- `secrets.yaml` - 密钥配置 - -### 部署步骤 -1. 确保已安装 kubectl 并配置 Kubernetes 集群 -2. 应用配置文件: - ```bash - kubectl apply -f k8s/ - ``` - -## 配置说明 - -### 数据库配置 -auth 模块需要 MySQL 和 Redis,配置位于 `auth/src/main/resources/application.properties` (或 application.yml)。 - -### 服务发现 -项目使用 Spring Cloud Kubernetes Fabric8 进行服务发现,各服务会自动注册到 Kubernetes。 - -### 安全配置 -- OAuth2 授权服务器运行在 auth 服务 -- 网关作为资源服务器验证令牌 -- 业务服务通过 HTTP 服务客户端调用认证服务 - -## 开发指南 - -### 添加新模块 -1. 在父 `pom.xml` 的 `` 中添加新模块 -2. 创建模块目录,包含自己的 `pom.xml` -3. 继承父 POM:`` 指向 `com:lingxiao` - -### 代码风格 -- 使用 Lombok 减少样板代码 -- 遵循 Spring Boot 最佳实践 -- 响应式编程使用 WebFlux (网关和业务服务) - -### 测试 -```bash -# 运行所有测试 -./mvnw test - -# 跳过测试 -./mvnw clean package -DskipTests -``` - -## 许可证 - -本项目仅供学习参考,请根据实际需求调整使用。 \ No newline at end of file diff --git a/a-service/src/main/java/com/example/demo001/config/InstallOpenTelemetryAppender.java b/a-service/src/main/java/com/example/demo001/config/InstallOpenTelemetryAppender.java new file mode 100644 index 0000000..c979224 --- /dev/null +++ b/a-service/src/main/java/com/example/demo001/config/InstallOpenTelemetryAppender.java @@ -0,0 +1,22 @@ +package com.example.demo001.config; + +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.stereotype.Component; + +@Component +class InstallOpenTelemetryAppender implements InitializingBean { + + private final OpenTelemetry openTelemetry; + + InstallOpenTelemetryAppender(OpenTelemetry openTelemetry) { + this.openTelemetry = openTelemetry; + } + + @Override + public void afterPropertiesSet() { + OpenTelemetryAppender.install(this.openTelemetry); + } + +} \ No newline at end of file diff --git a/a-service/src/main/java/com/example/demo001/config/TraceIdFilter.java b/a-service/src/main/java/com/example/demo001/config/TraceIdFilter.java new file mode 100644 index 0000000..2812ef7 --- /dev/null +++ b/a-service/src/main/java/com/example/demo001/config/TraceIdFilter.java @@ -0,0 +1,37 @@ +package com.example.demo001.config; + +import io.micrometer.tracing.TraceContext; +import io.micrometer.tracing.Tracer; +import jakarta.annotation.Nullable; +import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; +import org.springframework.web.server.WebFilter; +import org.springframework.web.server.WebFilterChain; +import reactor.core.publisher.Mono; + +@Component +class TraceIdFilter implements WebFilter { + + private final Tracer tracer; + + TraceIdFilter(Tracer tracer) { + this.tracer = tracer; + } + + @Override + public Mono filter(ServerWebExchange exchange, WebFilterChain chain) { + String traceId = getTraceId(); + + if (traceId != null) { + exchange.getRequest().mutate() + .header("X-Trace-Id", traceId) + .build(); + } + return chain.filter(exchange); + } + + private @Nullable String getTraceId() { + TraceContext context = this.tracer.currentTraceContext().context(); + return context != null ? context.traceId() : null; + } +} \ No newline at end of file diff --git a/a-service/src/main/resources/application.yml b/a-service/src/main/resources/application.yml index ad4eed5..4522867 100644 --- a/a-service/src/main/resources/application.yml +++ b/a-service/src/main/resources/application.yml @@ -9,3 +9,23 @@ oauth2: client-id: oidc-client client-secret: secret +management: + otlp: + metrics: + export: + url: http://192.168.1.14:9090/api/v1/otlp/v1/metrics #Prometheus otlp协议 http地址 + step: 30s + opentelemetry: + tracing: + export: + otlp: + endpoint: http://192.168.1.14:4317/v1/traces #Jaeger otlp协议 grpc地址 + transport: grpc + # endpoint: http://localhost:4318/v1/traces + # transport: http + + logging: + export: + otlp: + endpoint: http://192.168.1.14:32664/otlp/v1/logs #Loki otlp协议 grpc地址 +# transport: grpc diff --git a/a-service/src/main/resources/logback-spring.xml b/a-service/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..232f752 --- /dev/null +++ b/a-service/src/main/resources/logback-spring.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/auth/src/main/java/com/example/springboot4/config/InstallOpenTelemetryAppender.java b/auth/src/main/java/com/example/springboot4/config/InstallOpenTelemetryAppender.java new file mode 100644 index 0000000..fd37dcb --- /dev/null +++ b/auth/src/main/java/com/example/springboot4/config/InstallOpenTelemetryAppender.java @@ -0,0 +1,22 @@ +package com.example.springboot4.config; + +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.stereotype.Component; + +@Component +class InstallOpenTelemetryAppender implements InitializingBean { + + private final OpenTelemetry openTelemetry; + + InstallOpenTelemetryAppender(OpenTelemetry openTelemetry) { + this.openTelemetry = openTelemetry; + } + + @Override + public void afterPropertiesSet() { + OpenTelemetryAppender.install(this.openTelemetry); + } + +} \ No newline at end of file diff --git a/auth/src/main/java/com/example/springboot4/config/TraceIdFilter.java b/auth/src/main/java/com/example/springboot4/config/TraceIdFilter.java new file mode 100644 index 0000000..9a6259c --- /dev/null +++ b/auth/src/main/java/com/example/springboot4/config/TraceIdFilter.java @@ -0,0 +1,38 @@ +package com.example.springboot4.config; + +import io.micrometer.tracing.TraceContext; +import io.micrometer.tracing.Tracer; +import jakarta.annotation.Nullable; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; + +import java.io.IOException; + +@Component +class TraceIdFilter extends OncePerRequestFilter { + + private final Tracer tracer; + + TraceIdFilter(Tracer tracer) { + this.tracer = tracer; + } + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { + String traceId = getTraceId(); + if (traceId != null) { + response.setHeader("X-Trace-Id", traceId); + } + filterChain.doFilter(request, response); + } + + private @Nullable String getTraceId() { + TraceContext context = this.tracer.currentTraceContext().context(); + return context != null ? context.traceId() : null; + } + +} \ No newline at end of file diff --git a/auth/src/main/resources/application.yml b/auth/src/main/resources/application.yml index a8ca0c8..39762ef 100644 --- a/auth/src/main/resources/application.yml +++ b/auth/src/main/resources/application.yml @@ -38,4 +38,24 @@ server: port: 9000 jetty: threads: - max: 1000 \ No newline at end of file + max: 1000 +management: + otlp: + metrics: + export: + url: http://192.168.1.14:9090/api/v1/otlp/v1/metrics #Prometheus otlp协议 http地址 + step: 30s + opentelemetry: + tracing: + export: + otlp: + endpoint: http://192.168.1.14:4317/v1/traces #Jaeger otlp协议 grpc地址 + transport: grpc + # endpoint: http://localhost:4318/v1/traces + # transport: http + + logging: + export: + otlp: + endpoint: http://192.168.1.14:32664/otlp/v1/logs #Loki otlp协议 grpc地址 +# transport: grpc \ No newline at end of file diff --git a/auth/src/main/resources/logback-spring.xml b/auth/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..232f752 --- /dev/null +++ b/auth/src/main/resources/logback-spring.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/geteway/.gitattributes b/gateway/.gitattributes similarity index 100% rename from geteway/.gitattributes rename to gateway/.gitattributes diff --git a/geteway/.gitignore b/gateway/.gitignore similarity index 100% rename from geteway/.gitignore rename to gateway/.gitignore diff --git a/geteway/.mvn/wrapper/maven-wrapper.properties b/gateway/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from geteway/.mvn/wrapper/maven-wrapper.properties rename to gateway/.mvn/wrapper/maven-wrapper.properties diff --git a/geteway/Dockerfile b/gateway/Dockerfile similarity index 100% rename from geteway/Dockerfile rename to gateway/Dockerfile diff --git a/geteway/mvnw b/gateway/mvnw similarity index 100% rename from geteway/mvnw rename to gateway/mvnw diff --git a/geteway/mvnw.cmd b/gateway/mvnw.cmd similarity index 100% rename from geteway/mvnw.cmd rename to gateway/mvnw.cmd diff --git a/geteway/pom.xml b/gateway/pom.xml similarity index 94% rename from geteway/pom.xml rename to gateway/pom.xml index 8cf607b..ddba5dd 100644 --- a/geteway/pom.xml +++ b/gateway/pom.xml @@ -9,7 +9,9 @@ ../pom.xml - geteway + gateway + gateway + gateway diff --git a/geteway/src/main/java/com/example/geteway/GatewayApplication.java b/gateway/src/main/java/com/example/geteway/GatewayApplication.java similarity index 100% rename from geteway/src/main/java/com/example/geteway/GatewayApplication.java rename to gateway/src/main/java/com/example/geteway/GatewayApplication.java diff --git a/geteway/src/main/java/com/example/geteway/config/CookieBearerTokenResolver.java b/gateway/src/main/java/com/example/geteway/config/CookieBearerTokenResolver.java similarity index 100% rename from geteway/src/main/java/com/example/geteway/config/CookieBearerTokenResolver.java rename to gateway/src/main/java/com/example/geteway/config/CookieBearerTokenResolver.java diff --git a/gateway/src/main/java/com/example/geteway/config/InstallOpenTelemetryAppender.java b/gateway/src/main/java/com/example/geteway/config/InstallOpenTelemetryAppender.java new file mode 100644 index 0000000..d61f32e --- /dev/null +++ b/gateway/src/main/java/com/example/geteway/config/InstallOpenTelemetryAppender.java @@ -0,0 +1,22 @@ +package com.example.geteway.config; + +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.stereotype.Component; + +@Component +class InstallOpenTelemetryAppender implements InitializingBean { + + private final OpenTelemetry openTelemetry; + + InstallOpenTelemetryAppender(OpenTelemetry openTelemetry) { + this.openTelemetry = openTelemetry; + } + + @Override + public void afterPropertiesSet() { + OpenTelemetryAppender.install(this.openTelemetry); + } + +} \ No newline at end of file diff --git a/gateway/src/main/java/com/example/geteway/config/OpenTelemetryConfiguration.java b/gateway/src/main/java/com/example/geteway/config/OpenTelemetryConfiguration.java new file mode 100644 index 0000000..e74e258 --- /dev/null +++ b/gateway/src/main/java/com/example/geteway/config/OpenTelemetryConfiguration.java @@ -0,0 +1,54 @@ +package com.example.geteway.config; + +import io.micrometer.core.instrument.Tags; +import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics; +import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics; +import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics; +import io.micrometer.core.instrument.binder.jvm.convention.otel.OpenTelemetryJvmClassLoadingMeterConventions; +import io.micrometer.core.instrument.binder.jvm.convention.otel.OpenTelemetryJvmCpuMeterConventions; +import io.micrometer.core.instrument.binder.jvm.convention.otel.OpenTelemetryJvmMemoryMeterConventions; +import io.micrometer.core.instrument.binder.jvm.convention.otel.OpenTelemetryJvmThreadMeterConventions; +import io.micrometer.core.instrument.binder.system.ProcessorMetrics; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.server.observation.OpenTelemetryServerRequestObservationConvention; + +import java.util.List; + +/** + * 指标配置,选择需要的指标 + */ +@Configuration(proxyBeanMethods = false) +public class OpenTelemetryConfiguration { + + @Bean + OpenTelemetryServerRequestObservationConvention openTelemetryServerRequestObservationConvention() { + return new OpenTelemetryServerRequestObservationConvention(); + } + + @Bean + OpenTelemetryJvmCpuMeterConventions openTelemetryJvmCpuMeterConventions() { + return new OpenTelemetryJvmCpuMeterConventions(Tags.empty()); + } + + @Bean + ProcessorMetrics processorMetrics() { + return new ProcessorMetrics(List.of(), new OpenTelemetryJvmCpuMeterConventions(Tags.empty())); + } + + @Bean + JvmMemoryMetrics jvmMemoryMetrics() { + return new JvmMemoryMetrics(List.of(), new OpenTelemetryJvmMemoryMeterConventions(Tags.empty())); + } + + @Bean + JvmThreadMetrics jvmThreadMetrics() { + return new JvmThreadMetrics(List.of(), new OpenTelemetryJvmThreadMeterConventions(Tags.empty())); + } + + @Bean + ClassLoaderMetrics classLoaderMetrics() { + return new ClassLoaderMetrics(new OpenTelemetryJvmClassLoadingMeterConventions()); + } + +} \ No newline at end of file diff --git a/geteway/src/main/java/com/example/geteway/config/SecurityConfig.java b/gateway/src/main/java/com/example/geteway/config/SecurityConfig.java similarity index 100% rename from geteway/src/main/java/com/example/geteway/config/SecurityConfig.java rename to gateway/src/main/java/com/example/geteway/config/SecurityConfig.java diff --git a/gateway/src/main/java/com/example/geteway/config/TraceIdFilter.java b/gateway/src/main/java/com/example/geteway/config/TraceIdFilter.java new file mode 100644 index 0000000..e0ef8d6 --- /dev/null +++ b/gateway/src/main/java/com/example/geteway/config/TraceIdFilter.java @@ -0,0 +1,38 @@ +package com.example.geteway.config; + +import io.micrometer.tracing.TraceContext; +import io.micrometer.tracing.Tracer; +import jakarta.annotation.Nullable; +import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; +import org.springframework.web.server.WebFilter; +import org.springframework.web.server.WebFilterChain; +import reactor.core.publisher.Mono; + + +@Component +class TraceIdFilter implements WebFilter { + + private final Tracer tracer; + + TraceIdFilter(Tracer tracer) { + this.tracer = tracer; + } + + @Override + public Mono filter(ServerWebExchange exchange, WebFilterChain chain) { + String traceId = getTraceId(); + + if (traceId != null) { + exchange.getRequest().mutate() + .header("X-Trace-Id", traceId) + .build(); + } + return chain.filter(exchange); + } + + private @Nullable String getTraceId() { + TraceContext context = this.tracer.currentTraceContext().context(); + return context != null ? context.traceId() : null; + } +} \ No newline at end of file diff --git a/geteway/src/main/java/com/example/geteway/config/UserIdMappingFilter.java b/gateway/src/main/java/com/example/geteway/config/UserIdMappingFilter.java similarity index 100% rename from geteway/src/main/java/com/example/geteway/config/UserIdMappingFilter.java rename to gateway/src/main/java/com/example/geteway/config/UserIdMappingFilter.java diff --git a/geteway/src/main/resources/application.yml b/gateway/src/main/resources/application.yml similarity index 64% rename from geteway/src/main/resources/application.yml rename to gateway/src/main/resources/application.yml index 55b4979..9a1021e 100644 --- a/geteway/src/main/resources/application.yml +++ b/gateway/src/main/resources/application.yml @@ -47,4 +47,24 @@ spring: client: provider: spring: - issuer-uri: http://localhost:9000 \ No newline at end of file + issuer-uri: http://localhost:9000 +management: + otlp: + metrics: + export: + url: http://192.168.1.14:9090/api/v1/otlp/v1/metrics #Prometheus otlp协议 http地址 + step: 30s + opentelemetry: + tracing: + export: + otlp: + endpoint: http://192.168.1.14:4317/v1/traces #Jaeger otlp协议 grpc地址 + transport: grpc + # endpoint: http://localhost:4318/v1/traces + # transport: http + + logging: + export: + otlp: + endpoint: http://192.168.1.14:32664/otlp/v1/logs #Loki otlp协议 grpc地址 +# transport: grpc \ No newline at end of file diff --git a/gateway/src/main/resources/logback-spring.xml b/gateway/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..232f752 --- /dev/null +++ b/gateway/src/main/resources/logback-spring.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/geteway/src/test/java/com/example/geteway/GatewayApplicationTests.java b/gateway/src/test/java/com/example/geteway/GatewayApplicationTests.java similarity index 100% rename from geteway/src/test/java/com/example/geteway/GatewayApplicationTests.java rename to gateway/src/test/java/com/example/geteway/GatewayApplicationTests.java diff --git a/pom.xml b/pom.xml index c8b2ee2..d0aa493 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ auth - geteway + gateway a-service @@ -37,6 +37,16 @@ spring-boot-starter + + io.opentelemetry.instrumentation + opentelemetry-logback-appender-1.0 + 2.21.0-alpha + + + org.springframework.boot + spring-boot-starter-opentelemetry + + com.github.ben-manes.caffeine caffeine