用OpenTelemetry

问题描述 投票:0回答:1

使用Spring Boot 3.4.2,我想使用弹簧执行器配置以OpentElemetry格式配置日志导出。示例属性:

management.otlp.logging.export.enabled=true
management.otlp.logging.endpoint=http://localhost:4318/v1/logs
management.otlp.logging.headers.apikey=apikey
management.otlp.logging.transport=http
management.otlp.logging.compression=gzip
tried添加Maven依赖性:

<dependency> <groupId>io.opentelemetry.instrumentation</groupId> <artifactId>opentelemetry-spring-boot-starter</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-exporter-otlp</artifactId> <version>${opentelemetry.version}</version> </dependency> <dependency> <groupId>io.opentelemetry.instrumentation</groupId> <artifactId>opentelemetry-logback-appender-1.0</artifactId> <version>1.28.0-alpha</version> </dependency>
logback.xml示例:

<configuration scan="true" scanPeriod="30 seconds"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC} [%thread] %-5level %logger{36} - %msg %replace(%replace(%ex){'[\r\n]+', ''}){'[\t]+', '&#10;&#9;'}%nopex%n</pattern> </encoder> </appender> <appender name="otel" class="io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender"> <captureExperimentalAttributes>true</captureExperimentalAttributes> <captureKeyValuePairAttributes>true</captureKeyValuePairAttributes> </appender> <root level="INFO"> <appender-ref ref="STDOUT" /> <appender-ref ref="otel" /> </root> </configuration>
但指出工作或配置未设置为otlphttplogrecordexporter。还有什么需要配置或我做错了什么?
    

spring-boot logging spring-boot-actuator open-telemetry otlp
1个回答
0
投票

io.opentelemetry.instrumentation:opentelemetry-spring-boot-starter:2.12.0

在application.yml
中使用这些设置

otel: exporter: otlp: endpoint: http://localhost:8080 headers: apikey: apikey traces: exporter: none metrics: exporter: none management: otlp: logging: export: enabled: true

和此控制器模拟端点

import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.RequestBody; @RestController @RequestMapping("/v1") public class OtlpEmulationController { private static final Logger logger = LoggerFactory.getLogger(OtlpEmulationController.class); @PostMapping("/logs") public ResponseEntity<Void> receiveLogs( @RequestBody String logData, @RequestHeader String apikey) { // logger.info("Received log data: {}", logData); // Respond with success return ResponseEntity.noContent().build(); } // optional, will only be invoked when removing traces.exporter=none @PostMapping("/traces") public ResponseEntity<String> receiveTraces(@RequestBody String tracesPayload) { return ResponseEntity.ok("Successfully received traces"); } }

我们可以通过请求例如/actuator/health/lices.

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.