Kavramlar
Log, trace, span, metrik, SLO, RCA kelimelerinin her birinin bir karşılığı var. Bu sayfa, arayüzde göreceğiniz her şeyi anlamadan önce kavramları somut benzetmelerle açıklar.
Bu sayfayı bir kez, acele etmeden okuyun. Sonrasında Orbtrace'in her ekranı anlamlı gelecek. Hiçbir ön bilgi varsaymıyoruz.
Yazılımınızın neden "telemetriye" ihtiyacı var
Yazılımınızın yoğun bir restoran olduğunu hayal edin. Dışarıdan yalnızca müşterilerin girip çıktığını görürsünüz — başka bir şey değil. Hiçbir fikriniz yok:
- Mutfak hangi yemekleri hazırladı, her aşaması ne kadar sürdü?
- Bulaşık makinesi tıkalı mı?
- Geçen salı işe aldığınız aşçı eskisinden yavaş mı?
Bu soruları yanıtlamak için restoranın kayıtlara ihtiyacı var. Yazılımda bu kayıtlara telemetri denir. Orbtrace üç türünü yönetir:
- 1
Loglar — günlük
Bir log satırı, yazılımınızın bir şey olduğunda yazdığı tek bir cümledir.
2026-05-13 14:02:11.842 INFO checkout-api Kullanıcı 42, 19.99 ₺ sipariş verdi 2026-05-13 14:02:12.103 ERROR checkout-api Ödeme sağlayıcı 503 döndüHer satırda şunlar vardır:
- Zaman damgası (ne zaman olduğu).
- Önem derecesi (
INFO,WARN,ERROR,FATAL). - Servis adı (yazan program —
checkout-api). - Mesaj (insan tarafından okunabilir cümle).
- İsteğe bağlı öznitelikler (yapılı alanlar:
user_id=42,order_total=19.99).
Orbtrace'te logları Loglar ekranında arar ve süzersiniz.
- 2
Trace ve span — fiş
Trace, tek bir isteğin ona dokunan her servisten geçişinin kaydıdır. Bu yolculuktaki her adıma span denir.
Bir müşteri "satın al"a basarsa, istek şu yolu izleyebilir:
frontend(10 ms — buton tıklamasının çizimi)checkout-api(140 ms — sepeti doğrula)inventory-service(12 ms — stok kontrolü)payment-provider(115 ms — kartı çek)email-service(5 ms — fişi kuyruğa koy)
Tüm yolculuk tek bir trace'tir (altında beş span yuvalanmıştır). Her span şunu bilir:
- Ebeveynini (kim çağırdı).
- Başlangıç zamanını ve süresini.
- Başarılı mı başarısız mı olduğunu.
- Özniteliklerini (örn.
db.statement="SELECT * FROM orders").
Orbtrace'te trace şelalesini görürsünüz; her yatay çubuk bir span'dir, çubukların derinliği iç içe geçmeyi gösterir.
Trace'ler neden önemli?
Loglar "bir servis ne dedi?" sorusuna yanıt verir. Trace'ler ise "bütün isteğin zamanı nereye gitti?" sorusuna yanıt verir. Bir sayfa yavaşken trace, tahmin etmenize gerek kalmadan hangi adımın yavaşladığını gösterir.
- 3
Metrikler — gösterge tablosu sayısı
Metrik, düzenli aralıklarla ölçülen bir sayıdır.
- "
checkout-api'a saniyede istek" → her 10 saniyede bir ölçülür. - "
inventory-servicepod'unun bellek kullanımı" → her 15 saniyede. - "
email-workerkuyruk derinliği" → her 5 saniyede.
Metrikler üç çeşittir:
On screen- Counter (sayaç)Yalnız yukarı gider. Örnek: servis başladığından beri toplam sipariş. "Dakikadaki sipariş" görmek için Orbtrace'e
rate(orders_total[1m])sorgusunu sorarsınız. - Gauge (ölçüm)Yukarı-aşağı oynar. Örnek: anlık kuyruk derinliği, anlık bellek, anlık CPU.
- HistogramYalnız son değeri değil, değerlerin dağılımını kaydeder. Örnek: istek gecikmesi — "son dakikanın 99. yüzdebirliği" sorulabilir.
Metrikleri Metrikler ekranında keşfeder, üstlerinden Panolarda pano kurarsınız.
- "
SLO — verdiğiniz söz
SLO (Service Level Objective — Hizmet Düzeyi Hedefi), bir servisin ne kadar iyi çalışacağına dair ölçülebilir sözdür. Örnek: "Checkout isteklerinin %99,9'u, son 30 günlük yürüyen pencerede 500 ms altında tamamlanacak."
Her SLO'da üç sayı vardır:
- SLI (Service Level Indicator — Hizmet Düzeyi Göstergesi) — ölçtüğünüz şey. "500 ms altında biten isteklerin oranı."
- SLO — hedef. "%99,9'u."
- Hata bütçesi — bozulmaya izin verilen miktar. 30 günde %99,9 hedefi, %0,1 hata bütçesi demektir; yani ayda 43 dakikalık "sağlıksızlık" hakkı.
Hata bütçeniz olması gerektiğinden hızlı tükenirse (örneğin 14× hızla), Orbtrace bir burn-rate alarmı üretir. SLO'lar Yönetim → SLO'lar bölümünden yapılandırılır.
RCA — "neden?" sorusuna yapay zekânın cevabı
RCA = Root Cause Analysis (Kök Sebep Analizi). Orbtrace'te RCA bir yapay zekâ özelliğidir: bir olay sırasında trace'leri, logları ve son deploy'ları okur ve şunun gibi bir paragraf üretir:
"checkout-api p99 gecikmesi 14:02'de (Europe/Istanbul) 220 ms'den 2,1 s'ye fırladı. Değişim, 13:58'de yapılan ve
OrderRepository.findByUser'i bir indeks ipucunu kaldıracak şekilde değiştirena8f21bdeploy'u ile örtüşüyor.b3f2…vec81a…span'leri bu sorgununorderstablosunda 1,8 s harcadığını gösteriyor (id 84210)."
Span ID'lerini kaynak olarak gösterir; tıklayıp doğrulayabilirsiniz. RCA sonuçları Olaylar (Incidents) ekranında yaşar.
Geriye Dönük Oynatma — varsayım motoru
Bir olay kapandıktan sonra Orbtrace'e şunu sorabilirsiniz: "a8f21b deploy'u yapılmasaydı ne olurdu?" — geçmiş veri, benzer geçmiş olaylar ve yapay zekâ ile olası bir cevap tahmin edilir. Tam bir simülasyon değil, temellendirilmiş bir sezgisel yöntemdir: güven aralıklı olasılıksal bir sonuç alır, karşılaştırılabilir geçmiş olaylar kaynak gösterilir. Post-mortem ve deploy öncesi canary kararları için biçilmiş kaftan. Geriye Dönük Oynatma.
OpenTelemetry — verinizin bindiği otobüs
Uygulamalarınız Orbtrace'le asla doğrudan konuşmaz. OpenTelemetry (OTel) konuşurlar — bütün sektörün telemetri verisi için üzerinde anlaştığı açık standart. Her büyük dilin bir OTel SDK'sı vardır (Java, Node, Python, Go, .NET, Ruby, Rust, …) ve eklemek çoğu zaman tek satır config'dir.
Oradan sonra verinizin izlediği yol kısadır ve hep aynıdır. Uygulamanız loglarını, trace'lerini ve metriklerini OpenTelemetry Collector denen küçük bir programa teslim eder. Collector tüm uygulamalarınızdan gelen veriyi toplar, verimli paketler hâlinde gruplar ve Orbtrace'in veritabanı Apache Doris'e yazar. Orbtrace'i açtığınızda Doris'ten okur ve ekranda gördüğünüzü çizer.
Uygulamalarınız
loglar · trace'ler · metrikler
OpenTelemetry Collector
Standart, değiştirilmemiş image — bizim sağladığımız config ile siz çalıştırırsınız.
Depolama & Arayüz
"OTLP", uygulamaların Collector'a veri gönderirken kullandığı kablo formatıdır — port 4317 (gRPC) ya da 4318 (HTTP) üzerinden.
Bu dolaylılık niye var? Çünkü standart bize değil, sektöre aittir: uygulamalarınızı bir kez, OTel'e karşı enstrümante edersiniz ve satıcıdan bağımsız kalırlar — aynı veri OTel uyumlu herhangi bir backend'i besleyebilir.
Baştan anlaşılması gereken önemli bir nokta: Orbtrace, Collector'ı paketlemez. Orbtrace ürünü gönderir — sunucu, arayüz ve depolama — Collector'ı siz çalıştırırsınız (sağladığımız bir config ile standart, değiştirilmemiş otel/opentelemetry-collector-contrib image'ı). Bu kasıtlıdır ve diğer modern observability yığınlarının çalışma şekliyle örtüşür: Collector zaten OTLP alımını, batch'lemeyi, retry'ı ve geri-basıncı 100K+ olay/sn'de hallediyor, yeniden yazmak hiçbir şey katmaz. Bir tane ayağa kaldırmak tek bir docker run — bkz. Entegrasyon desenleri.
Dokümanların geri kalanında "OTLP", "OTel SDK" ve "Collector" sözcüklerine bu yüzden rastlayacaksınız.
Daha sonra karşınıza çıkacak terimler
- OTLP"OpenTelemetry Protocol" — uygulamaların Collector'a konuştuğu kablo formatı. 4317 (gRPC) ve 4318 (HTTP) standart portlardır.
- Apache DorisOrbtrace'in log/trace/metrik sakladığı hızlı OLAP veritabanı. Doğrudan sorgu atmazsınız — Orbtrace atar.
- PostgreSQLOrbtrace'in kendi ayarlarını sakladığı küçük veritabanı — kullanıcılar, SLO'lar, alarm kuralları, panolar.
- ValkeyBir önbellek. Redis 7+ ile uyumludur. Orbtrace kısa ömürlü durum için kullanır.
- CaddyOtomatik HTTPS için Orbtrace'in önüne koyabileceğiniz isteğe bağlı bir ters proxy. Varsayılan olarak başlatılmaz — açıkça etkinleştirirsiniz (
edgeprofili). O olmadan Orbtrace 8080 portunda düz HTTP sunar. - Tail samplingHatalı her trace'i tutarken sıkıcı olanları atan örnekleme. Orbtrace'in yayımladığı bir politikayla sizin Collector'ınızda yaşar.
Bunları ezberlemenize gerek yok. Bağlam içinde tekrar karşınıza çıkacaklar.
Sırada on dakikalık Hızlı başlangıç.