OpenTelemetry
- Okunuşu
- opın tılemıtri
Kısaca
OpenTelemetry, yazılımdan trace, metrik ve log toplayıp bunları herhangi bir izleme backend'ine göndermek için açık bir standart ve araç takımıdır.
OpenTelemetry nedir?
Çalışan bir sistemi anlamak için telemetriye ihtiyaç vardır: bir isteği servisler boyunca izleyen trace'ler, istek sayısı ve gecikme gibi metrikler ve loglar. Çoğu zaman OTel diye kısaltılan OpenTelemetry, her dile bu verileri üretmek için aynı API'yi ve SDK'yı, göndermek için de ortak bir protokolü, OTLP'yi verir. Daha önceki iki girişim olan OpenTracing ve OpenCensus'un 2019'da birleşmesiyle doğan bir Cloud Native Computing Foundation projesidir.
Asıl vaadi bağımsızlıktır. Kodunuzu bir kez enstrümante edersiniz; veriler, kodu değil yapılandırmayı değiştirerek Jaeger'a, Prometheus'a, Grafana'ya ya da ticari bir servise gidebilir. Pek çok kütüphane ve framework otomatik olarak enstrümante edilebilir; böylece HTTP çağrıları ve veritabanı sorguları ek bir iş yapmadan span olarak görünür. Ayrı bir program olan OpenTelemetry Collector ise verileri yol üzerinde alabilir, filtreleyebilir, zenginleştirebilir ve iletebilir.
Tracing, bağlamın aktarılmasıyla çalışır. Bir servis başka birini çağırdığında W3C Trace Context standardının tanımladığı bir traceparent başlığı ekler; böylece sonraki servis kendi span'lerini aynı trace'e bağlar. Sonuç, bir isteğin dokunduğu her servis boyunca uzanan bir zaman çizelgesidir; zamanın nereye gittiğini ya da bir hatanın nerede başladığını gösterir. OpenTelemetry telemetrinin üretilmesini ve taşınmasını kapsar; saklamak ve dashboard çizmek backend'e kalır.
Önemli noktalar
- OpenTelemetry, trace, metrik ve loglar için hiçbir sağlayıcıya bağlı olmayan bir standarttır.
- Kod bir kez enstrümante edilir ve veriler herhangi bir backend'e gidebilir.
- OTLP onun protokolüdür; Collector verileri alır, işler ve iletir.
- Trace bağlamı servisler arasında
traceparentbaşlığıyla taşınır.
Örnek
from opentelemetry import trace
tracer = trace.get_tracer("checkout")
def place_order(order):
with tracer.start_as_current_span("place_order") as span:
span.set_attribute("order.items", len(order.items))
charge(order) # spans inside become children of this one
send_confirmation(order)Sık sorulan sorular
OpenTelemetry bir izleme aracı mı?
Tek başına değil. Telemetriyi üretir ve taşır ama saklamaz ya da dashboard çizmez; bunun için veriler açık kaynak ya da ticari bir backend'e gider. Bu ayrımın amacı da budur: kodu değiştirmeden backend'i değiştirebilirsiniz.
OpenTelemetry ile Prometheus arasındaki fark nedir?
Prometheus bir izleme sistemidir: metrikleri toplar, saklar, sorgulamanızı ve alarm kurmanızı sağlar. OpenTelemetry ise trace, metrik ve log üretmek için bir standarttır. Birlikte çalışırlar ve OpenTelemetry metrikleri Prometheus'a gönderilebilir.
İlgili sayfalar
- GözlemlenebilirlikDevOps ve Bulut, s. 22Gözlemlenebilirlik, çalışan bir yazılım sisteminin içinde olup biteni log, metrik ve trace verilerini toplayıp analiz ederek anlayabilme yeteneğidir.
- Dağıtık İzlemeDevOps ve Bulut, s. 11Dağıtık izleme, tek bir isteği birçok servis boyunca takip eden; her adımın ne kadar sürdüğünü ve nerede başarısız olduğunu kaydeden bir tekniktir.
- MetriklerDevOps ve Bulut, s. 33Metrikler, bir sistemden zamanla toplanan istek oranı, hata oranı ve CPU kullanımı gibi sayısal ölçümlerdir; panolar, uyarılar ve planlama için kullanılır.
- LoglamaDevOps ve Bulut, s. 32Loglama, çalışan bir programdaki hata ve istek gibi olaylar hakkında zaman damgalı mesajlar kaydetme pratiğidir; insanlar bunları sonradan inceleyebilir.
- PrometheusDevOps ve Bulut, s. 41Prometheus, uygulama ve sunuculardan metrik toplayıp zaman serisi olarak saklayan ve değerler sınırı aşınca uyarı tetikleyen açık kaynaklı izleme sistemidir.
- MikroservislerYazılım Mimarisi, s. 24Mikroservisler, bir uygulamanın ağ üzerinden iletişim kuran, küçük ve bağımsız olarak dağıtılabilen servislere bölündüğü bir mimari tarzdır.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin