Bir uygulamanın CPU kullanımı yükseldiğinde monitoring sistemi alarm üretebilir. Ancak kullanıcıların yalnızca belirli bir ödeme yönteminde hata almasının nedenini, hangi servis çağrısının yavaşladığını veya yeni sürümden sonra sorunun neden sadece mobil oturumlarda ortaya çıktığını tek bir gösterge açıklamayabilir. Sistem çalışıyor mu sorusu ile sistem neden böyle davranıyor sorusu aynı değildir.
Monitoring, önceden belirlenmiş sağlık ve performans göstergelerini izleyerek beklenen sınırların dışına çıkan durumları fark etmeye odaklanır. Observability ise sistemin ürettiği metric, log ve trace gibi telemetri sinyallerini bağlam içinde ilişkilendirerek iç durumu dışarıdan anlayabilme yeteneğidir. İyi bir operasyon yaklaşımında bu iki kavram rakip değil, birbirini tamamlayan katmanlardır.
Observability nedir?
Observability, bir yazılım sisteminin iç durumunu, sistemin dışarıya ürettiği sinyalleri inceleyerek anlayabilme kabiliyetidir. Amaç yalnızca önceden tahmin edilen arızaları görmek değil; daha önce özel bir dashboard veya alarm hazırlanmadığı hâlde ortaya çıkan yeni davranışları araştırabilmektir. OpenTelemetry bu kavramı, sistemin iç işleyişini doğrudan bilmeden dış çıktılar üzerinden sorular sorabilme ve özellikle yeni problemlerin nedenini araştırabilme yeteneği olarak açıklar OpenTelemetry Observability Primer.
Bu tanım observability'nin yalnızca bir araç satın almak anlamına gelmediğini gösterir. Bir panelde çok sayıda grafik bulunması, sistemin otomatik olarak gözlemlenebilir olduğu anlamına gelmez. Telemetrinin doğru üretilmesi, ortak bağlamla ilişkilendirilmesi, aranabilir olması ve ekiplerin teşhis sırasında anlamlı sorular sorabilmesi gerekir.
Monitoring nedir?
Monitoring; uygulama, sunucu, ağ, veritabanı veya iş akışına ait belirlenmiş göstergelerin toplanması, görselleştirilmesi ve eşik aşımlarında uyarı üretilmesidir. İşlemci kullanımı, istek sayısı, hata oranı, kuyruk uzunluğu, yanıt süresi veya başarılı ödeme oranı izlenen değerlerden bazılarıdır. Monitoring sistemin mevcut durumuna ilişkin hızlı ve tekrarlanabilir cevaplar üretir.
Google Site Reliability Engineering yaklaşımında kullanıcıya hizmet veren sistemler için latency, traffic, errors ve saturation dört temel monitoring sinyali olarak öne çıkar Google SRE Monitoring Distributed Systems. Bu göstergeler her sistemde tek başına yeterli değildir; fakat alarm ve hizmet sağlığı tasarımına kullanıcı etkisini merkeze alan güçlü bir başlangıç sağlar.
Monitoring özellikle beklenen arıza biçimlerinde etkilidir. Örneğin hata oranı belirli bir seviyeye çıktığında, disk kapasitesi azaldığında veya ödeme başarı oranı düştüğünde ekip uyarılabilir. Buna karşılık alarmın neden tetiklendiğini bulmak için daha ayrıntılı bağlama ihtiyaç duyulduğunda observability devreye girer.
Observability ile monitoring arasındaki temel farklar
İki kavram arasındaki en önemli ayrım veri türü değil, cevaplamaya çalıştıkları sorudur. Aynı metric hem monitoring panelinde eşik kontrolü için hem de observability araştırmasında diğer sinyallerle birlikte kullanılabilir. Fark; verinin nasıl modellenip ilişkilendirildiği ve ekibin yalnızca belirlenmiş kontrollerle mi, yoksa serbest araştırmayla mı ilerleyebildiğidir.
| Kriter | Monitoring | Observability |
|---|---|---|
| Ana soru | Sistem beklenen sınırlar içinde çalışıyor mu? | Sistem neden bu şekilde davranıyor? |
| Başlangıç noktası | Önceden belirlenmiş metric, eşik ve alarmlar | İlişkili telemetri üzerinden araştırılabilir sorular |
| Güçlü olduğu alan | Bilinen arızaları hızlı fark etmek | Yeni, karmaşık veya çok servisli sorunları teşhis etmek |
| Tipik çıktı | Dashboard, sağlık kontrolü, uyarı ve durum bildirimi | Kök neden analizi, istek yolculuğu ve bağlamsal inceleme |
| Veri yaklaşımı | Seçilmiş göstergelerin düzenli takibi | Metric, log ve trace sinyallerinin ortak bağlamla ilişkilendirilmesi |
| Operasyonel rol | Sorunun varlığını ve etkisini bildirir | Sorunun nerede, kimde ve hangi koşulda oluştuğunu araştırmaya yardım eder |
Monitoring çoğunlukla “bir sorun var” der. Observability, doğru telemetri mevcutsa “sorun hangi kullanıcı yolculuğunda, hangi servis zincirinde ve hangi değişiklikten sonra ortaya çıktı?” sorusunu araştırılabilir hâle getirir.
Observability hangi telemetri sinyallerine dayanır?
Observability uygulamalarında üç temel sinyal metric, log ve trace'tir. OpenTelemetry dokümantasyonu metric'i çalışma zamanında yakalanan ölçüm, log'u bir olayın kaydı, trace'i ise bir isteğin uygulama içindeki yolu olarak tanımlar OpenTelemetry Signals. Bu sinyallerden biri diğerinin yerine geçmez; farklı ayrıntı ve zaman ölçeklerinde cevap üretir.
Metrics: Eğilimi ve büyüklüğü gösterir
Metrics, zaman içinde sayısal olarak izlenen ölçümlerdir. İstek sayısı, hata oranı, gecikme yüzdeleri, bellek kullanımı ve kuyruk derinliği örnek verilebilir. Düşük depolama maliyetiyle uzun dönem eğilimleri ve alarm koşullarını görmek için uygundur. Ancak bir grafikte hata oranının yükseldiğini görmek, hangi kullanıcı isteğinin neden başarısız olduğunu tek başına açıklamaz.
Logs: Belirli olayın ayrıntısını kaydeder
Logs, uygulamada meydana gelen olayların yapılandırılmış kayıtlarıdır. Hata türü, servis adı, sürüm, kullanıcıya ait anonimleştirilmiş bağlam, işlem kimliği ve zaman bilgisi içerebilir. Düz metin ve tutarsız loglar aramayı zorlaştırır; anahtar-değer biçimindeki yapılandırılmış kayıtlar ise filtreleme ve korelasyon için daha elverişlidir. Şifre, erişim anahtarı, kart bilgisi veya gereksiz kişisel veri loglara yazılmamalıdır.
Traces: Bir isteğin servisler arasındaki yolunu gösterir
Trace, tek bir isteğin frontend, API, veritabanı, kuyruk ve dış servisler boyunca nasıl ilerlediğini gösterir. Her işlem parçası genellikle bir span ile temsil edilir ve üst-alt ilişkileri sayesinde gecikmenin hangi adımda oluştuğu incelenebilir. Distributed tracing'in uygulama ayrıntıları ayrı bir teknik konudur; observability açısından önemli olan, trace kimliğinin ilgili log ve metric bağlamıyla ilişkilendirilebilmesidir.
Google Cloud dokümantasyonu da observability'yi uygulamanın ve çalışma ortamının durumunu anlamak için log, metric ve trace telemetrisinin toplanıp analiz edilmesine dayanan kapsamlı bir yaklaşım olarak tanımlar Google Cloud Observability. Asıl değer sinyal sayısından değil, sinyaller arasında geçiş yapabilmekten doğar.
Sadece dashboard kullanmak neden yeterli değildir?
Dashboard, belirli soruların sürekli ve hızlı cevaplanması için gereklidir. Ana hizmetlerin hata oranı, gecikmesi, trafik miktarı ve kaynak kullanımı tek bakışta görülebilir. Fakat her yeni hata biçimi için önceden grafik hazırlanamaz. Sistem yalnızca mevcut panellerde görülebilen boyutları sunuyorsa ekip bilinmeyen bir problemi araştırırken kör noktalarla karşılaşır.
Örneğin toplam hata oranı normal görünürken yalnızca belirli uygulama sürümünü kullanan Android müşterilerinde ödeme başarısız olabilir. Dashboard platform, sürüm, ödeme yöntemi ve servis bağımlılığını birlikte filtreleyemiyorsa genel ortalama sorunu gizler. Observability, bu yüksek bağlamlı soruları telemetri üzerinde sonradan sorabilmeyi hedefler.
- Dashboard'ların işletme açısından kritik kullanıcı yolculuklarını göstermesi gerekir.
- Her panelin sahibi, amacı ve karar üretme biçimi tanımlı olmalıdır.
- Grafikler yalnız teknik kaynak kullanımını değil, kullanıcı etkisini de göstermelidir.
- Panel sayısı arttıkça gözlem yeteneğinin otomatik olarak artmadığı kabul edilmelidir.
- Dashboard dışında ad hoc sorgu, korelasyon ve tekil istek inceleme imkânı bulunmalıdır.
Monitoring alarmından kök neden analizine nasıl geçilir?
İyi tasarlanmış operasyon akışı alarmı araştırmanın sonu değil, başlangıcı olarak görür. Alarm önce kullanıcı etkisini ve hangi hizmet hedefinin bozulduğunu söyler. Ekip ardından ilgili zaman aralığındaki sürüm değişikliklerini, servis bağımlılıklarını, trace örneklerini ve hata loglarını ortak kimlikler üzerinden inceler.
- Etkisini belirleyin: Kaç kullanıcı, hangi işlem ve hangi coğrafi veya teknik segment etkileniyor?
- Zamanı daraltın: Sorunun başlangıcı bir dağıtım, yapılandırma veya trafik değişikliğiyle örtüşüyor mu?
- Metric'i parçalayın: Toplam değeri servis, endpoint, sürüm, durum kodu ve uygun iş boyutlarına göre inceleyin.
- Trace'e geçin: Yavaş veya hatalı örnek isteğin servisler arasındaki yolunu bulun.
- Logları ilişkilendirin: Aynı trace veya işlem kimliğiyle uygulama olaylarının ayrıntısını görüntüleyin.
- Hipotezi doğrulayın: Bulgunun yalnızca korelasyon mu, gerçek neden mi olduğunu kontrollü değişiklik veya ek veriyle test edin.
- Öğrenimi kalıcılaştırın: Gerekliyse yeni metric, daha iyi log bağlamı, runbook veya güvenli alarm ekleyin.
Bu akışın çalışması için telemetri tasarımı yazılım geliştirme sürecinin sonuna bırakılmamalıdır. Servis isimleri, sürüm bilgileri, işlem kimlikleri ve hata sınıfları uygulama tasarımı sırasında tutarlı hâle getirilmelidir.
Gerçek bir senaryoda observability nasıl fark yaratır?
Bir e-ticaret uygulamasında ödeme başarı oranının düştüğünü düşünelim. Monitoring sistemi oran düşüşünü fark eder ve ekibe alarm gönderir. İlk kontrol CPU, bellek ve genel API gecikmesinin normal olduğunu gösterebilir. Sadece altyapı grafiklerine bakıldığında sorun görünmez kalır.
İlişkili telemetri üzerinden hata yalnızca belirli banka yönlendirmesini kullanan, yeni frontend sürümündeki mobil oturumlarda filtrelenebilir. Trace incelemesi ödeme servisine giden isteğin başarılı olduğunu, fakat dönüş callback'inin kimlik doğrulama katmanında reddedildiğini gösterebilir. Aynı trace kimliğine bağlı yapılandırılmış log ise yeni sürümün yanlış callback path'i gönderdiğini ortaya çıkarabilir.
Bu örnekte monitoring sorunun varlığını hızlıca bildirir; observability ise altyapı normal görünürken kullanıcı akışındaki gerçek kırılmayı bulmayı mümkün kılar. Benzer ihtiyaçlar sipariş, CRM, bayi, stok ve üçüncü taraf API'lerin birlikte çalıştığı özel web yazılımı projelerinde daha belirgin hâle gelir.
Observability altyapısı nasıl planlanmalı?
Başlangıç noktası “hangi aracı satın almalıyız?” değil, “hangi kullanıcı yolculukları ve iş sonuçları korunmalı?” sorusudur. Her şeyi toplamak hem maliyeti artırır hem de gereksiz gürültü üretir. Önce kritik hizmetler, servis sınırları ve operasyon sırasında cevaplanması gereken sorular belirlenmelidir.
| Adım | Karar | Beklenen çıktı |
|---|---|---|
| 1. Kritik akışlar | Giriş, ödeme, teklif, sipariş veya entegrasyon gibi kullanıcı yolculuklarını seçin | İzleme önceliği ve hizmet sahipliği |
| 2. Sağlık göstergeleri | Başarı, gecikme, hata ve kapasite ölçülerini tanımlayın | Anlamlı metric ve alarm seti |
| 3. Instrumentation | Servislerin hangi metric, log ve trace bağlamını üreteceğini belirleyin | Tutarlı telemetri şeması |
| 4. Korelasyon | Trace, request, tenant ve sürüm gibi ortak bağlamları standartlaştırın | Sinyaller arasında geçiş yapılabilmesi |
| 5. Depolama politikası | Saklama süresi, sampling, erişim ve veri maskeleme kararlarını verin | Kontrollü maliyet ve veri güvenliği |
| 6. Operasyon süreci | Alarm sahipliği, runbook, escalation ve olay sonrası incelemeyi tanımlayın | Telemetriyi aksiyona dönüştüren iş akışı |
Küçük bir monolith uygulamada birkaç kritik metric, yapılandırılmış log ve istek kimliği yeterli başlangıç sağlayabilir. Çok servisli, yoğun entegrasyonlu veya yüksek trafik alan sistemlerde merkezi telemetry pipeline, dağıtık context propagation, sampling ve daha ayrıntılı hizmet haritası gerekebilir. Mimari karmaşıklık arttıkça observability ihtiyacı büyür; fakat çözümün karmaşıklığı sistemden daha hızlı büyümemelidir.
Alarm tasarımı nasıl yapılmalı?
Her değişken için alarm üretmek observability sağlamaz; alert fatigue oluşturur. Alarm, bir insanın müdahalesini veya otomatik aksiyonu gerektiren gerçek kullanıcı etkisine bağlanmalıdır. Bilgi amaçlı her dalgalanma pager alarmına dönüşmemelidir.
- Kullanıcıya etkisi olmayan tekil altyapı dalgalanmalarını doğrudan kritik alarm yapmayın.
- Alarm metninde etkilenen hizmeti, gözlenen koşulu, başlangıç zamanını ve ilgili dashboard bağlantısını belirtin.
- Semptom tabanlı alarmları, yalnızca olası nedenleri gösteren düşük seviye uyarılardan ayırın.
- Uyarının sahibi ve ilk kontrol adımları açık değilse alarmı yeniden tasarlayın.
- Sürekli açılıp kapanan eşikler için süre, pencere ve tolerans koşullarını gözden geçirin.
- Olay sonrası gereksiz alarmı silin; eksik teşhis sinyalini ise kontrollü biçimde ekleyin.
Monitoring'in amacı insanları her hareketten haberdar etmek değil, doğru zamanda doğru müdahaleyi başlatmaktır. Observability ise bu müdahalenin tahmine değil, bağlantılı kanıta dayanmasını sağlar.
Observability maliyeti ve veri güvenliği nasıl yönetilir?
Telemetri sınırsız değildir. Yüksek hacimli debug logları, her isteğin eksiksiz trace'i ve kontrolsüz label kullanımı depolama ve sorgu maliyetini hızla büyütebilir. Özellikle kullanıcı kimliği, URL parametreleri veya serbest metin gibi yüksek çeşitlilikli alanlar metric cardinality sorununa neden olabilir.
Maliyet yönetimi için sampling, farklı veri sınıflarına farklı saklama süreleri, gereksiz log seviyelerinin azaltılması ve kritik olayların önceliklendirilmesi gerekir. Ancak yalnızca maliyeti düşürmek için hatalı isteklerin tamamını örnekleme dışında bırakmak teşhis kabiliyetini yok edebilir. Sampling politikası hata, gecikme ve kritik işlem türlerini koruyacak şekilde tasarlanmalıdır.
Telemetri aynı zamanda hassas veri taşıyabilir. Parola, token, ödeme bilgisi, kişisel mesaj veya gereksiz kullanıcı verisi loglanmamalı; erişim yetkileri sınırlanmalı ve saklama politikaları tanımlanmalıdır. Teknik kayıtlar KVKK veya diğer veri koruma yükümlülüklerinden bağımsız değildir. Gözlemlenebilirlik için gereken bağlam ile kullanıcı mahremiyeti arasında veri minimizasyonuna dayanan bir denge kurulmalıdır.
Observability çalışmalarında sık yapılan hatalar
- Araç kurulumunu sonuç sanmak: Telemetry backend çalışsa da hizmet sahipliği ve ortak veri modeli yoksa araştırma parçalı kalır.
- Her şeyi toplamak: Amaçsız veri hacmi maliyet ve gürültü üretir; kritik sinyalleri görünmez hâle getirir.
- Yapılandırılmamış log kullanmak: Serbest metin logları servis, sürüm ve işlem bağlamına göre güvenilir biçimde filtrelemek zordur.
- Korelasyon kimliği taşımamak: Metric'ten ilgili trace'e, trace'ten ilgili loga geçilemiyorsa üç ayrı veri deposu oluşur.
- Yalnız altyapıyı izlemek: Sunucular sağlıklı görünürken ödeme, form veya entegrasyon akışı bozulabilir.
- Alarm sahipliği tanımlamamak: Uyarının kimin sorumluluğunda olduğu belirsizse müdahale gecikir.
- Üretim değişikliklerini işaretlememek: Deploy ve yapılandırma zamanları telemetriyle ilişkilendirilmediğinde arıza başlangıcını açıklamak zorlaşır.
- Bakımı ihmal etmek: Kullanılmayan paneller, eski alarmlar ve değişen servis isimleri zamanla güveni azaltır.
Observability tek seferlik kurulum değil, sistemle birlikte gelişen bir operasyon yeteneğidir. Yeni servis, entegrasyon ve sürümler telemetri şemasını etkilediği için düzenli denetim web sitesi bakım hizmeti ve canlı sistem operasyonunun parçası olmalıdır.
Monitoring ne zaman yeterli, observability ne zaman gereklidir?
Basit, az değişen ve tek bileşenli bir sistemde iyi monitoring çoğu operasyon ihtiyacını karşılayabilir. Trafik, hata oranı, kaynak kullanımı ve yedekleme durumu izlenir; bilinen arızalar için anlaşılır alarmlar oluşturulur. Bu durumda karmaşık bir telemetry pipeline kurmak, sağlayacağı faydadan fazla operasyon yükü doğurabilir.
Sistem birden fazla servis, kuyruk, veritabanı, mobil istemci veya üçüncü taraf API içeriyorsa sorunların bağlamı hızla parçalanır. Aynı hata yalnızca belirli tenant, sürüm, endpoint veya işlem zincirinde ortaya çıkabilir. Bu koşullarda metric, log ve trace sinyallerini ilişkilendiren observability yaklaşımı kök neden araştırmasını daha sistematik hâle getirir.
Sonuç: Monitoring görünür kılar, observability açıklamayı mümkün kılar
Monitoring ve observability aynı problemi farklı derinliklerde ele alır. Monitoring; hizmet sağlığını, bilinen eşikleri ve kullanıcı etkisini sürekli kontrol ederek sorunun varlığını bildirir. Observability ise doğru instrument edilmiş metric, log ve trace verilerini ortak bağlamla ilişkilendirerek sorunun nedenini araştırmaya imkân verir.
İyi bir başlangıç, kritik kullanıcı yolculuklarını belirlemek, az fakat anlamlı alarmlar kurmak ve telemetriyi servis, sürüm ve işlem bağlamıyla üretmektir. Araç sayısından önce soruların, sahipliğin ve veri kalitesinin tanımlanması gerekir. Böylece ekip yalnızca sistemin bozulduğunu görmekle kalmaz; doğru kanıt üzerinden nerede ve neden bozulduğunu da anlayabilir.
Sıkça Sorulan Sorular
Observability ile monitoring aynı şey mi?
Hayır, ancak birbirini tamamlar. Monitoring önceden belirlenmiş metric ve eşikleri izleyerek sistemin beklenen sınırlar içinde çalışıp çalışmadığını gösterir. Observability ise metric, log ve trace gibi telemetri sinyallerini bağlam içinde ilişkilendirerek sistemin neden belirli bir davranış gösterdiğini araştırmayı sağlar. Monitoring çoğunlukla sorunun varlığını bildirir; observability daha önce özel bir alarm tanımlanmamış karmaşık sorunların kök nedenini bulmaya yardımcı olur.
Observability için hangi veriler toplanmalıdır?
Temel sinyaller metrics, logs ve traces'tir. Metrics zaman içindeki sayısal eğilimleri, logs belirli olayların ayrıntısını, traces ise bir isteğin servisler arasındaki yolunu gösterir. Her veriyi sınırsız toplamak doğru değildir. Kritik kullanıcı akışları, hata sınıfları, servis adı, sürüm, işlem kimliği ve uygun iş bağlamı önceliklendirilmelidir. Hassas kişisel bilgiler, parola, token ve ödeme verileri telemetriye yazılmamalıdır.
Küçük bir web sitesi observability altyapısına ihtiyaç duyar mı?
Basit ve az değişen bir web sitesinde kapsamlı bir observability platformu gereksiz olabilir. Uptime, hata oranı, performans ve yedekleme için iyi monitoring; yapılandırılmış uygulama logları ve temel hata takibi yeterli başlangıç sağlayabilir. Ödeme, üyelik, entegrasyon, arka plan işleri veya birden fazla servis devreye girdikçe bağlamlı telemetri ihtiyacı artar. Çözüm, sistemin operasyonel karmaşıklığıyla orantılı kurulmalıdır.
Dashboard sayısının fazla olması sistemi daha gözlemlenebilir yapar mı?
Hayır. Dashboard'lar belirlenmiş sorulara hızlı cevap verir; fakat daha önce öngörülmemiş bir sorunun araştırılabilmesi için telemetrinin ayrıntılı, tutarlı ve ilişkili olması gerekir. Çok sayıda sahipsiz panel gürültü ve bakım yükü oluşturabilir. Her dashboard kritik bir kullanıcı yolculuğu veya operasyon kararıyla ilişkilendirilmeli; ekip gerektiğinde metric'ten trace'e ve ilgili log kayıtlarına geçebilmelidir.
Observability alarm sayısını artırmak anlamına mı gelir?
Hayır. Observability'nin amacı her değişimi alarm yapmak değil, sistemi açıklayabilecek telemetri sağlamaktır. Alarm yalnızca insan müdahalesi veya otomatik aksiyon gerektiren anlamlı kullanıcı etkisine bağlanmalıdır. Gereksiz eşikler alert fatigue oluşturur ve kritik uyarıların gözden kaçmasına neden olabilir. İyi tasarımda monitoring az ve etkili alarm üretir; observability ise alarm sonrasında ayrıntılı araştırma yapılmasını sağlar.
Observability altyapısının başarısı nasıl ölçülür?
Başarı yalnızca toplanan veri miktarıyla ölçülmez. Ekiplerin sorunu fark etme ve kök nedeni doğrulama süresi, tekrarlanan arızaların azalması, alarmların gerçekten aksiyon üretmesi, kritik kullanıcı akışlarının kapsamı ve olay sonrası eksik telemetrinin giderilmesi izlenebilir. Ayrıca sorgu maliyeti, veri saklama hacmi, gereksiz alarm oranı ve hassas veri kontrolleri düzenli olarak değerlendirilmelidir.