Monitoring ve Logging

Sistem ve uygulama performansını izleme ve sorunları tespit etme sanatı

Monitoring Nedir?

Monitoring (İzleme), sistem ve uygulama performansını, sağlığını ve davranışını gerçek zamanlı olarak izleme sürecidir. Bu süreç, sistemlerin ve uygulamaların durumunu sürekli olarak takip ederek, potansiyel sorunları önceden tespit etmeyi ve hızlı bir şekilde müdahale etmeyi sağlar.

Monitoring, DevOps ve SRE (Site Reliability Engineering) pratiklerinin temel bir bileşenidir. Sistem ve uygulama performansını izleyerek, sorunları proaktif bir şekilde tespit etmek ve çözmek, kesinti sürelerini azaltmak ve kullanıcı deneyimini iyileştirmek için kritik öneme sahiptir.

Logging Nedir?

Logging (Günlük Kaydı), sistem ve uygulama olaylarının, hataların ve diğer önemli bilgilerin kaydedilmesi sürecidir. Bu süreç, sistemlerin ve uygulamaların davranışını anlamak, sorunları teşhis etmek ve güvenlik olaylarını izlemek için önemli bir araçtır.

Logging, geçmiş olayları ve hataları analiz etmek, sorunların kök nedenlerini belirlemek ve sistemlerin ve uygulamaların davranışını anlamak için değerli bilgiler sağlar. Ayrıca, güvenlik olaylarını tespit etmek, uyumluluk gereksinimlerini karşılamak ve denetim izleri oluşturmak için de kullanılır.

Monitoring Türleri

Altyapı Monitoring

Altyapı monitoring, sunucular, ağlar, depolama sistemleri ve diğer altyapı bileşenlerinin performansını ve sağlığını izler.

İzlenen Metrikler:

  • CPU kullanımı
  • Bellek kullanımı
  • Disk kullanımı ve I/O
  • Ağ trafiği ve gecikme süresi
  • Sistem yükü

Uygulama Monitoring

Uygulama monitoring, uygulamaların performansını, kullanılabilirliğini ve davranışını izler.

İzlenen Metrikler:

  • Yanıt süresi
  • İstek sayısı
  • Hata oranı
  • İşlem süresi
  • Aktif kullanıcı sayısı

Ağ Monitoring

Ağ monitoring, ağ cihazlarının, bağlantılarının ve trafiğinin performansını ve sağlığını izler.

İzlenen Metrikler:

  • Bant genişliği kullanımı
  • Paket kaybı
  • Gecikme süresi (Latency)
  • Jitter
  • Bağlantı durumu

Logging Türleri

Uygulama Logging

Uygulama logging, uygulamaların ürettiği günlük kayıtlarını kapsar. Bu kayıtlar, uygulamaların davranışını anlamak, hataları teşhis etmek ve performans sorunlarını belirlemek için kullanılır.

Kayıt Türleri:

  • Bilgi (Info)
  • Uyarı (Warning)
  • Hata (Error)
  • Kritik (Critical)
  • Debug

Sistem Logging

Sistem logging, işletim sistemi ve sistem hizmetlerinin ürettiği günlük kayıtlarını kapsar. Bu kayıtlar, sistem davranışını anlamak, güvenlik olaylarını tespit etmek ve sistem sorunlarını teşhis etmek için kullanılır.

Kayıt Türleri:

  • Sistem olayları
  • Güvenlik olayları
  • Donanım olayları
  • Hizmet olayları
  • Kullanıcı etkinlikleri

Ağ Logging

Ağ logging, ağ cihazlarının ve trafiğinin ürettiği günlük kayıtlarını kapsar. Bu kayıtlar, ağ davranışını anlamak, güvenlik olaylarını tespit etmek ve ağ sorunlarını teşhis etmek için kullanılır.

Kayıt Türleri:

  • Bağlantı kayıtları
  • Trafik kayıtları
  • Güvenlik duvarı kayıtları
  • VPN kayıtları
  • DHCP kayıtları

Popüler Monitoring Araçları

Prometheus

Prometheus

Açık kaynaklı bir monitoring ve alerting sistemi. Zaman serisi veritabanı ve güçlü sorgu dili (PromQL) ile bilinir.

Özellikler:

  • Çoklu boyutlu veri modeli
  • Güçlü sorgu dili
  • Pull tabanlı mimari
  • Alerting ve alertmanager
Grafana

Grafana

Açık kaynaklı bir metrik analizi ve görselleştirme platformu. Çeşitli veri kaynaklarını destekler ve güzel gösterge panelleri oluşturur.

Özellikler:

  • Çoklu veri kaynağı desteği
  • Özelleştirilebilir gösterge panelleri
  • Alerting
  • Annotasyonlar
Datadog

Datadog

Bulut tabanlı bir monitoring ve analiz platformu. Altyapı, uygulama ve log monitoring'i tek bir platformda birleştirir.

Özellikler:

  • Kapsamlı entegrasyonlar
  • APM (Application Performance Monitoring)
  • Log management
  • Synthetic monitoring

Popüler Logging Araçları

ELK Stack

ELK Stack

Elasticsearch, Logstash ve Kibana'dan oluşan açık kaynaklı bir log yönetim ve analiz platformu.

Bileşenler:

  • Elasticsearch: Log depolama ve arama
  • Logstash: Log toplama ve işleme
  • Kibana: Log görselleştirme
  • Beats: Log toplama ajanları
Graylog

Graylog

Açık kaynaklı bir log yönetim platformu. Büyük ölçekli log toplama, depolama ve analiz için tasarlanmıştır.

Özellikler:

  • Merkezi log yönetimi
  • Güçlü arama yetenekleri
  • Alerting
  • Gösterge panelleri
Splunk

Splunk

Ticari bir log yönetim ve analiz platformu. Büyük ölçekli veri toplama, depolama ve analiz için tasarlanmıştır.

Özellikler:

  • Gerçek zamanlı arama ve analiz
  • Makine öğrenimi
  • Güvenlik analizi
  • İş zekası

Monitoring ve Logging Best Practices

Anlamlı Metrikler ve Loglar

İzlenen metrikler ve kaydedilen loglar, sistem ve uygulama davranışını anlamak ve sorunları teşhis etmek için anlamlı olmalıdır. Gereksiz veya aşırı detaylı metrikler ve loglar, gürültü oluşturabilir ve önemli bilgilerin gözden kaçmasına neden olabilir.

Alerting ve Eşik Değerleri

Alerting, önemli olaylar ve sorunlar hakkında bildirim almak için kullanılır. Eşik değerleri, gerçek sorunları yansıtacak şekilde ayarlanmalıdır. Çok düşük eşik değerleri, çok sayıda yanlış pozitif uyarıya neden olabilir; çok yüksek eşik değerleri ise, önemli sorunların gözden kaçmasına neden olabilir.

Merkezi Log Yönetimi

Loglar, merkezi bir konumda toplanmalı ve yönetilmelidir. Bu, farklı sistemlerden ve uygulamalardan gelen logları birleştirerek, daha kapsamlı bir görünüm sağlar ve sorunları daha kolay teşhis etmeyi mümkün kılar.

Log Rotasyonu ve Saklama

Loglar, belirli bir süre sonra döndürülmeli ve arşivlenmelidir. Bu, disk alanı kullanımını kontrol altında tutar ve performans sorunlarını önler. Ayrıca, uyumluluk gereksinimleri için belirli logların daha uzun süre saklanması gerekebilir.

Prometheus Yapılandırma Örneği

# prometheus.yml

global:
  scrape_interval: 15s
  evaluation_interval: 15s

alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - alertmanager:9093

rule_files:
  - "alert_rules.yml"

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']

  - job_name: 'node_exporter'
    static_configs:
    - targets: ['node_exporter:9100']

  - job_name: 'cadvisor'
    static_configs:
    - targets: ['cadvisor:8080']

  - job_name: 'app'
    metrics_path: '/metrics'
    static_configs:
    - targets: ['app:8000']

DevOps Bültenimize Abone Olun

En son DevOps haberleri, araçları ve best practice'leri hakkında güncel kalın.