Spring Boot Actuator는 마이크로 미터를위한 종속성 관리 및 자동 구성을 제공하며, 이는 다양한 모니터링 시스템에 편리한 외관을 제공합니다. 그중 하나는 OpenTelemetry입니다.
Spring Boot 개발자는 Spring Boot Actuator와 Micreter에서 프로젝트에 전용 OpenTeLegrety 종속성을 추가하여 OTLP 프로토콜을 통해 OTLP 프로토콜을 통해 OPENTELETRETIC 백엔드로 메트릭을 내보내는 데 응용 프로그램을 수출 할 수 있습니다.
dependencies {
implementation ' org.springframework.boot:spring-boot-starter-actuator '
runtimeOnly ' io.micrometer:micrometer-registry-otlp '
.. .
}
마이크로 미터 레지스트리 OTLP가 제공하는 수출 업체는 HTTP 수출국이며 OpenTelemetry에 대한 자동 구성 덕분에 속성을 통해 구성 할 수 있습니다.
management :
otlp :
metrics :
export :
url : http://localhost:4318/v1/metrics
step : 5s
OpenTelemetry는 원격 측정 데이터에 포함될 추가 키/값 쌍 ( resource attributes
)을 지원합니다. Spring Boot Actuator는 이들을위한 자동 구성을 제공하고 속성을 통해 새로운 리소스 속성을 추가 할 수 있습니다.
management :
opentelemetry :
resource-attributes :
cluster : local
" service.name " : ${spring.application.name}
이 설정을 보여주기 위해 데모 응용 프로그램을 만들었습니다.
마이크로 미터 레지스트리 OTLP 모듈은 OTLP 호환 HTTP 클라이언트를 사용하여 메트릭을 OpenTeLemetry 백엔드로 내 보냅니다. 내부적으로 OtlpMeterRegistry
개인 HttpSender
객체를 사용하여 HTTP 클라이언트를 구성합니다. 이 접근법의 이점은 모듈이 가벼우 며 OpenTelemetry SDK에 대한 의존성이 필요하지 않다는 것입니다. OpenTelemetry에 대한 protobuf 구성을 제공하는 io.opentelemetry.proto
라이브러리 만 사용합니다.
반면에 그러한 접근 방식은 다음을 의미합니다.
Spring Boot 3.2의 새로운 Generic OpenTelemetryAutoConfiguration
3.2 AutoconFigures OpenTelemetry
Bean을 구성하여 SdkMeterProvider
Bean을 구성 할 수 있습니다. 마이크로 미터가 OpenTelemetry Metrics Expler를 설정하는 데이를 사용할 수 있다면 어떨까요?
가능한 솔루션 :
OpenTelemetry
객체를 수용하는 MeterRegistry
구현하십시오 (OpenTelemetry Java Instrumentation Library에서 사용하는 OpenTelemetryMeterRegistry
와 유사). 뒤로 호환성이 필요한 경우, 새로운 구현은 기존 구현과 공존해야합니다 (아마도 기능 플래그가 둘 사이에 전환 될 수 있습니까?); 문제를 마이크로 미터 프로젝트에 제출하고 이러한 제안을 공유했습니다. 이러한 모듈을 구축 (또는 업데이트)하면 스프링 부트 3.2에 메트릭과 흔적 (및 미래에 로그)에 대해 도입 된 동일한 OpenTelemetryAutoConfiguration
재사용 할 수 있습니다.
SdkMeterProvider
Bean을 자동화하고 일반적으로 OpenTeLemetry와 함께 메트릭을 사용하기위한 문제가 있습니다. 그러나 우리는 그 전에 마이크로 미터 지원이 누락되었습니다.OtlpHttpMetricExporter
또는 OtlpGrpcMetricExporter
구성)을 사용하여 HTTP와 GRPC 간의 클라이언트 구현을 전환 할 수 있습니다.현재 과제에 대한 자세한 내용은 Spring Boot 프로젝트 에서이 문제를 참조하십시오.
Spring Boot Actuator는 마이크로 미터 추적을위한 종속성 관리 및 자동 구성을 제공하며, 이는 몇 가지 분산 추적 백엔드에 대한 편리한 외관을 제공합니다. 그중 하나는 OpenTelemetry입니다.
Spring Boot Developer는 Spring Boot 액추에이터, 마이크로 미터 추적 및 마이크로 미터에서 프로젝트에 전용 OpenTeLemetry 종속성을 추가하여 OTLP 프로토콜을 통해 OPENTELETRETY 백엔드로 내보내기 트레이스로 응용 프로그램을 내보낼 수 있습니다.
dependencies {
implementation ' org.springframework.boot:spring-boot-starter-actuator '
implementation ' io.micrometer:micrometer-tracing-bridge-otel '
implementation ' io.opentelemetry:opentelemetry-exporter-otlp '
.. .
}
Spring Boot Actuator Autoconfiguration에서 제공하는 수출 업체는 HTTP Expler ( OtlpHttpSpanExporter
BEAN)이며 OtlpAutoConfiguration
의 추적 구성 덕분에 속성을 통해 구성 할 수 있습니다.
management :
otlp :
tracing :
endpoint : http://localhost:4318/v1/traces
OpenTelemetry는 원격 측정 데이터에 포함될 추가 키/값 쌍 ( resource attributes
)을 지원합니다. Spring Boot Actuator는 이들을위한 자동 구성을 제공하고 속성을 통해 새로운 리소스 속성을 추가 할 수 있습니다. 표준 OpenTelemetry service.name
Resource Attribute는 spring.application.name
(정의 된 경우) 또는 기본 application
값으로 자동 구성됩니다.
management :
opentelemetry :
resource-attributes :
cluster : local
이 설정을 보여주기 위해 데모 응용 프로그램을 만들었습니다.
Spring Boot Project 에서이 문제에서 OtlpHttpSpanExporter
bean에 대한 Autoconfiguration이 HTTP를 통해 수출 트레이스에 추가되었습니다.
일반적인 요구 사항은 GRPC (OpenTelemetry에서 가장 많이 사용되는 접근법)를 통해 추적을 내보내는 것입니다. 현재 개발자는 OtlpGrpcSpanExporter
Bean을 스스로 구성 할 수 있습니다. Spring Boot 액추에이터가이를 위해 자동 구성을 제공하여 기존의 OtlpAutoConfiguration
향상시키는 것이 좋을 것입니다.
Spring Boot 프로젝트에는 이러한 자동 구성을 추가하는 데 이미 문제가 있습니다.
전반적으로, 이것들은 내가 지금까지 설명한 문제와 제안입니다.
마이크로 미터
MeterRegistry
구현을 도입하여 메트릭과 트레이스간에 구성을 공유 할 수 있도록합니다.스프링 부트 액추에이터
OpenTelemetry
및 Resource
Bean은 기존 OpenTelemetry 구성에서 재사용 할 수 있습니다. 그 외에도, 자동 구성은 SdkMeterProvider
, OtlpHttpMetricExporter
및 OtlpGrpcMetricExporter
의 기본값을 정의해야합니다.OtlpGrpcSpanExporter
BEAN을 정의하여 GRPC를 통해 OpenTeLemetric 트레이스를 내보내기위한 AutoConfiguration을 도입하십시오.스프링 이니셜
스프링 부트 액추에이터
OpenTelemetry
및 Resource
Bean은 기존 OpenTelemetry 구성에서 재사용 할 수 있습니다. 그 외에도, 자동 구성은 SdkLoggerProvider
, OtlpHttpLogRecordExporter
및 OtlpGrpcLogRecordExporter
의 기본값을 정의해야합니다.OpenTelemetryAutoConfiguration
에서 현재 사용 가능한 구성 가능한 Bean의 수를 제한하는 방법을 조사하기 위해 문제가 열렸습니다 (이 문제는 추적 특정 제품이 삭제되면 글로벌 OpenTelemetryAutoConfiguration
에 대해 고려 될 수 있습니다).