Observability, özellikle dağıtık sistemler (distributed systems), mikroservis mimarileri (microservices architectures), bulut bilişim (cloud computing) ve DevOps alanlarını ilgilendirir. Bu konular, büyük ve karmaşık yazılım sistemlerinin izlenmesi, yönetilmesi ve optimize edilmesi için observability kavramını ve araçlarını kullanır.
Observability, uygulamalarımızın production ortamında durumlarını izlemeyebilme yeteneğidir. Uygulamalarımızın performansını, hatalarını ve genel durumunu izlemememize olanak tanır. Observability loglar (logs), metrikler (metrics) ve izler (traces) olmak üzere 3 temel bileşenden oluşur.
- Loglar (Logs)
Loglar, sistemin çalıştığı sırada neler olup bittiğini, hangi işlemlerin yapıldığını ve olası hataları göstermek için kullanılır. Loglar, bir sorunun nedenini anlamak ve teşhis etmek için çok önemlidir. - Metrikler (Metrics)
Metrikler, bir sistemin performansını ölçmek için kullanılan sayısal verilerdir. Bu veriler, CPU kullanımı, bellek kullanımı, istek/saniye (requests per second), hata oranı gibi çeşitli ölçütleri içerir. Metrikler, sistemin genel sağlığı hakkında bilgi verir ve performans sorunlarını tespit etmeye yardımcı olur. - Traces (İzler)
Traces, bir operasyonun baştan sonra izlenmesidir. Dağıtık sistemlerde, bir kullanıcı isteğinin işlenme sürecini anlamak zordur. Bu yüzden trace data, isteğin başlangıcından sonuna kadar olan süreci izlemeye yardımcı olur. Trace data, özellikle mikro servis mimarilerinde, bir isteğin hangi servislerde nasıl işlediğini anlamak için kullanılır.
Observability’nin Faydaları
- Karmaşık Sistemlerde Görünürlük: Modern uygulamalar genellikle mikro servisler, konteynerler ve bulut tabanlı mimariler gibi karmaşık yapılara sahiptir. Observability, bu karmaşık sistemlerin nasıl çalıştığını anlamayı kolaylaştırır.
- Sorunları Hızlı Teşhis Etme: Observability, sistemdeki anormallikleri ve hataları hızlı bir şekilde tespit etmemizi sağlar. Bu sayede, sorunlar meydana geldiğinde hızlı müdahale edilerek sistemin kesinti süresi en aza indirilir.
- Proaktif İzleme: İyi bir Observability uygulaması, potansiyel sorunları meydana gelmeden önce tespit etmeye yardımcı olur. Bu, sistemin daha stabil ve güvenilir çalışmasını sağlar.
- İyileştirilmiş Kullanıcı Deneyimi: Observability, kullanıcıların deneyimini olumsuz etkileyebilecek performans sorunlarını tespit etmeyi ve düzeltmeyi sağlar. Bu da genel kullanıcı memnuniyetini artırır.
Observability Araçları ve Teknolojileri
Observability’yi uygulamak için çeşitli araçlar ve teknolojiler kullanılır:
- Prometheus ve Grafana: Prometheus, metrik verilerini toplamak ve izlemek için kullanılan popüler bir araçtır. Grafana ise bu metrikleri görselleştirmek ve izlemek için kullanılan bir platformdur.
- ELK Stack (Elasticsearch, Logstash, Kibana): Bu araç seti, log yönetimi ve analizi için yaygın olarak kullanılır. Elasticsearch, büyük miktarda log verisini depolamak için kullanılırken, Logstash bu verileri toplar ve işler, Kibana ise görselleştirme sağlar.
- Jaeger ve Zipkin: Jaeger ve Zipkin, dağıtık izleme için kullanılan araçlardır. Bu araçlar, mikro hizmetler arasında geçen işlemleri izleyerek, performans sorunlarını tespit etmeye yardımcı olur.
Observability ve Monitoring Arasındaki Fark
Monitoring ve Observability terimleri bazen birbirinin yerine kullanılsa da, aslında farklı kavramlardır:
- Monitoring: Monitoring, belirli metrikleri ve logları önceden belirlenmiş eşiklere göre izlemeyi ifade eder. Örneğin, sistemdeki oluşan 500 hataları ile ilgili bir uyarı tetiklenebilir.
- Observability: Observability, monitoring’in ötesine geçerek, sistemin genel durumu hakkında daha detaylı bilgi sağlar. Observability, bir sistemdeki beklenmedik sorunları anlamak ve teşhis etmek için gerekli olan verileri sunar.
Faydalandığım linkler:
https://www.honeycomb.io/blog/what-is-observability-key-components-best-practices
https://www.linkedin.com/pulse/observability-vs-monitoring-g%C3%BCrkan-t%C3%BCzmen/
Yeni yazılarda görüşmek üzere 🙂