EMZETT.
Giriş yap

OpenTelemetry: birleşik gözlemlenebilirlik

Kısaca: Uygulamalardan izleri, metrikleri ve günlükleri tek tip biçimde üretmek ve herhangi bir analiz aracına göndermek için kütüphaneleri olan açık bir standart.

Biraz daha ayrıntılı: OpenTelemetry (kısaca OTel), Cloud Native Computing Foundation’ın bir projesidir. Önceden her satıcının kendi kütüphaneleri vardı ve geçiş yapmak kodu yeniden işlemek demekti. OTel ortak API’leri, SDK’ları ve bir veri biçimini (OTLP) tanımlar; böylece uygulamalar bir kez enstrümante edilir ve veriler Jaeger, Prometheus, Grafana, Datadog veya diğerlerine gidebilir.

Ayrıntılı

Üç sinyal

  • İzler (traces): bir isteğin birkaç hizmet üzerinden yolu, span’lere (süre ve özellikleri olan tekil iş adımları) bölünmüş. Bir trace ID tüm span’leri bağlar.
  • Metrikler: saniyedeki istek veya bellek kullanımı gibi sayısal seriler.
  • Günlükler (logs): trace ID ile ilişkilendirilebilen metin olayları.

Yapı taşları

Enstrümantasyon veri üretir; otomatik (Java, Node.js, Python ve diğerleri için ajanlar HTTP çağrılarını ve veritabanı erişimlerini yakalar) veya API aracılığıyla elle. SDK onu toplar ve işler. Toplayıcı (collector), verileri alan, süzen, zenginleştiren ve ileten ayrı bir hizmettir. Bağlam, hizmetler arasında traceparent (W3C Trace Context) gibi başlıklar aracılığıyla yol alır.

Elle bir span örneği (JavaScript)

import { trace } from '@opentelemetry/api';
const tracer = trace.getTracer('shop');
await tracer.startActiveSpan('calculate-shipping', async (span) => {
  span.setAttribute('country', 'DE');
  // ... iş ...
  span.end();
});

Notlar

Her şeyi saklarsanız izler pahalıdır: örnekleme (sampling) olağandır, yani isteklerin yalnızca bir kısmı veya tüm başarısız ve yavaş olanlar. Özniteliklere kişisel veri veya sır yazmamaya dikkat edin. Proje çeşitli sinyaller için farklı ölçüde olgundur; izler ve metrikler kararlı sayılır.

Ayrıca bak: Gözlemlenebilirlik (observability), Prometheus ve metrikler, Günlük kaydı (logging)