Spring Boot Actuator menyediakan manajemen ketergantungan dan konfigurasi otomatis untuk mikrometer, yang menawarkan fasad yang nyaman di berbagai sistem pemantauan yang berbeda. Salah satunya adalah OpenTelemetry.
Pengembang Spring Boot dapat mengaktifkan aplikasi mereka untuk mengekspor metrik melalui protokol OTLP ke backend opentelemetry dengan menambahkan aktuator boot musim semi dan ketergantungan opentelemetri khusus dari mikrometer ke proyek mereka.
dependencies {
implementation ' org.springframework.boot:spring-boot-starter-actuator '
runtimeOnly ' io.micrometer:micrometer-registry-otlp '
.. .
}
Eksportir yang disediakan oleh Micrometer Registry OTLP adalah eksportir HTTP dan dapat dikonfigurasi melalui properti berkat konfigurasi autoconfiguration untuk opentelemetry.
management :
otlp :
metrics :
export :
url : http://localhost:4318/v1/metrics
step : 5s
OpenTelemetry mendukung pasangan kunci/nilai tambahan (disebut resource attributes
) untuk dimasukkan dalam data telemetri. Spring Boot Actuator menyediakan konfigurasi autoCon untuk mereka dan memungkinkan untuk menambahkan atribut sumber daya baru melalui properti.
management :
opentelemetry :
resource-attributes :
cluster : local
" service.name " : ${spring.application.name}
Saya membuat aplikasi demo untuk menampilkan pengaturan ini.
Modul Micrometer Registry OTLP menggunakan klien HTTP yang kompatibel dengan OTLP untuk mengekspor metrik ke backend opentelemetry. Secara internal, OtlpMeterRegistry
menggunakan objek HttpSender
pribadi untuk mengonfigurasi klien HTTP. Manfaat dari pendekatan ini adalah bahwa modulnya ringan dan tidak memerlukan ketergantungan pada SDK OpenTelemetry. Ini hanya menggunakan perpustakaan io.opentelemetry.proto
yang menyediakan konfigurasi protobuf untuk opentelemetry.
Di sisi lain, pendekatan seperti itu berarti bahwa:
OpenTelemetryAutoConfiguration
generik baru di Spring Boot 3.2 Autoconfigures Kacang OpenTelemetry
dan memungkinkan untuk mengkonfigurasi kacang SdkMeterProvider
. Bagaimana jika mikrometer dapat menggunakannya untuk menyiapkan eksportir metrik OpenTelemetry?
Solusi yang mungkin:
MeterRegistry
yang menerima objek OpenTelemetry
untuk konfigurasi (mirip dengan OpenTelemetryMeterRegistry
yang digunakan oleh OpenTelemetry Java Instrumentation Library). Jika kompatibilitas mundur diperlukan, implementasi baru perlu hidup berdampingan dengan yang sudah ada (mungkin bendera fitur dapat beralih di antara keduanya?); Saya telah mengirimkan masalah ke proyek mikrometer dan membagikan saran -saran ini. Membangun (atau memperbarui) modul semacam itu akan memungkinkan untuk menggunakan kembali OpenTelemetryAutoConfiguration
yang sama yang diperkenalkan di Spring Boot 3.2 untuk kedua metrik dan jejak (dan, di masa depan, untuk log juga).
SdkMeterProvider
dan, secara umum, untuk menggunakan metrik dengan opentelemetry. Tapi kami kehilangan dukungan mikrometer sebelum itu bisa dilakukan.OtlpHttpMetricExporter
atau OtlpGrpcMetricExporter
).Untuk konteks lebih lanjut tentang tantangan saat ini, lihat masalah ini pada proyek Spring Boot.
Spring Boot Actuator menyediakan manajemen ketergantungan dan konfigurasi otomatis untuk penelusuran mikrometer, yang menawarkan fasad yang nyaman di atas beberapa backend penelusuran terdistribusi yang berbeda. Salah satunya adalah OpenTelemetry.
Pengembang boot Spring dapat mengaktifkan aplikasi mereka untuk mengekspor jejak melalui protokol OTLP ke backend opentelemetry dengan menambahkan aktuator boot musim semi, penelusuran mikrometer dan ketergantungan openTelemetry khusus dari mikrometer ke proyek mereka.
dependencies {
implementation ' org.springframework.boot:spring-boot-starter-actuator '
implementation ' io.micrometer:micrometer-tracing-bridge-otel '
implementation ' io.opentelemetry:opentelemetry-exporter-otlp '
.. .
}
Eksportir yang disediakan oleh pegas boot Actuator Autoconfiguration adalah eksportir HTTP (kacang OtlpHttpSpanExporter
) dan dapat dikonfigurasi melalui properti berkat konfigurasi penelusuran dalam konfigurasi OtlpAutoConfiguration
.
management :
otlp :
tracing :
endpoint : http://localhost:4318/v1/traces
OpenTelemetry mendukung pasangan kunci/nilai tambahan (disebut resource attributes
) untuk dimasukkan dalam data telemetri. Spring Boot Actuator menyediakan konfigurasi autoCon untuk mereka dan memungkinkan untuk menambahkan atribut sumber daya baru melalui properti. service.name
OpenTelemetry Standar. Atribut Sumber Daya Sumber Dikonfigurasi Secara Otomatis ke Nilai spring.application.name
(jika didefinisikan) atau ke nilai application
default.
management :
opentelemetry :
resource-attributes :
cluster : local
Saya membuat aplikasi demo untuk menampilkan pengaturan ini.
Dalam edisi ini pada proyek Spring Boot, konfigurasi autoCon untuk kacang OtlpHttpSpanExporter
telah ditambahkan untuk mengekspor jejak melalui HTTP.
Persyaratan umum adalah mengekspor jejak melalui GRPC (pendekatan yang paling banyak digunakan dalam opentelemetry). Saat ini, pengembang dapat mengkonfigurasi kacang OtlpGrpcSpanExporter
sendiri. Alangkah baiknya jika Spring Boot Actuator akan memberikan konfigurasi autocon untuk itu, meningkatkan konfigurasi OtlpAutoConfiguration
yang ada.
Sudah ada masalah pada Proyek Boot Spring untuk menambahkan konfigurasi autoc.
Secara keseluruhan, ini adalah masalah dan saran yang telah saya gambarkan sejauh ini.
Mikrometer
MeterRegistry
yang dibangun di atas opentelemetry dan dapat dikonfigurasi melalui pendekatan standarnya, sehingga dimungkinkan untuk berbagi konfigurasi antara metrik dan jejak.Aktuator Spring Boot
OpenTelemetry
dan Resource
dapat digunakan kembali dari konfigurasi opentelemetri yang ada. Selain itu, konfigurasi autocon harus mendefinisikan default untuk SdkMeterProvider
, OtlpHttpMetricExporter
dan OtlpGrpcMetricExporter
.OtlpGrpcSpanExporter
.Inisialisasi musim semi
Aktuator Spring Boot
OpenTelemetry
dan Resource
dapat digunakan kembali dari konfigurasi opentelemetri yang ada. Selain itu, konfigurasi autocon harus mendefinisikan default untuk SdkLoggerProvider
, OtlpHttpLogRecordExporter
dan OtlpGrpcLogRecordExporter
.OpenTelemetryAutoConfiguration
(masalah ini mungkin dipertimbangkan untuk OpenTelemetryAutoConfiguration
global setelah penelusuran spesifik yang dihapus).