Skip to content
Back to blog
Yaşam Linux Log Yönetimi journalctl rsyslog Grafana Sistem İzleme Problem Çözme Merkezi Loglama Mistral

Linux Sistemlerinde Log Yönetimi: journalctl, rsyslog ve Grafana ile Merkezi ve Analitik Yaklaşım

Linux sunucularınızda log yönetimini merkezi, güvenilir ve analiz edilebilir hale getirmenin yollarını keşfedin. journalctl, rsyslog ve Grafana entegrasyonuyla sistem performansınızı izleyin ve sorunları proaktif olarak çözün.

Caner Serbest

Sistem ve Altyapı

7 min read

Linux Sistemlerinde Log Yönetimi: journalctl, rsyslog ve Grafana ile Merkezi ve Analitik Yaklaşım

Teknik altyapıların karmaşıklığı arttıkça, sistemlerinizin sağlığını ve performansını izlemek kritik bir hale geliyor. Linux sunucularında log yönetimi, sadece hata ayıklama için değil, aynı zamanda güvenlik, performans optimizasyonu ve uyumluluk açısından da hayati önem taşıyor. Bu rehberde, Linux log yönetimini merkezi, güvenilir ve analiz edilebilir hale getirmenin yollarını adım adım inceleyeceğiz. journalctl, rsyslog ve Grafana entegrasyonunu kullanarak sistemlerinizi nasıl daha verimli yönetebileceğinizi öğreneceksiniz.


Neden Log Yönetimi Önemlidir?

Loglar, sistemlerinizin dijital ayak izleridir. Herhangi bir sistemde meydana gelen olaylar, hata mesajları, kullanıcı aktiviteleri ve performans metrikleri loglar aracılığıyla kaydedilir. İyi bir log yönetimi sistemi aşağıdaki avantajları sunar:

  1. Hata Ayıklama ve Sorun Giderme: Sistemde meydana gelen hataları hızlı bir şekilde tespit edip çözüm üretebilirsiniz.
  2. Güvenlik İzleme: Yetkisiz erişim girişimleri, saldırı belirtileri ve diğer güvenlik olaylarını loglar sayesinde tespit edebilirsiniz.
  3. Performans Optimizasyonu: Sistem kaynaklarının kullanımını izleyerek performans darboğazlarını belirleyebilir ve iyileştirmeler yapabilirsiniz.
  4. Uyumluluk ve Denetim: Birçok sektörde, logların belirli bir süre saklanması yasal bir zorunluluktur. İyi bir log yönetimi sistemi bu gereksinimleri karşılar.
  5. Veri Analitiği: Log verilerini analiz ederek sistemlerinizin gelecekteki davranışlarını tahmin edebilir ve proaktif iyileştirmeler yapabilirsiniz.

Linux Log Yönetimi Temelleri

Linux sistemlerinde loglar genellikle /var/log dizininde saklanır. Bu dizinde sistemin farklı bileşenleri tarafından oluşturulan çeşitli log dosyaları bulunur. Örneğin:

  • /var/log/syslog veya /var/log/messages: Sistem genelinde meydana gelen olayları kaydeder.
  • /var/log/auth.log veya /var/log/secure: Kimlik doğrulama ve yetkilendirme olaylarını kaydeder.
  • /var/log/kern.log: Çekirdek olaylarını kaydeder.
  • /var/log/nginx/ veya /var/log/apache2/: Web sunucusu loglarını kaydeder.

Ancak, bu geleneksel log dosyaları yönetimi zorlaştırabilir. Özellikle büyük ölçekli sistemlerde, logların merkezi bir yerde toplanması ve analiz edilmesi gerekir. İşte burada journalctl, rsyslog ve Grafana devreye giriyor.


1. journalctl: Systemd ile Gelen Güçlü Log Yönetimi

Linux sistemlerinde Systemd, sistem ve servis yönetimi için standart bir araçtır. journalctl, Systemd tarafından yönetilen sistemlerde logları okumak, filtrelemek ve analiz etmek için kullanılan bir komuttur. journalctl kullanmanın avantajları şunlardır:

  • Merkezi Log Deposu: Tüm sistem logları tek bir yerde toplanır.
  • Zengin Filtreleme Seçenekleri: Logları tarih, servis, öncelik (priority) ve diğer kriterlere göre filtreleyebilirsiniz.
  • Gerçek Zamanlı İzleme: Logları gerçek zamanlı olarak izleyebilirsiniz.
  • JSON ve Diğer Formatlarda Dışa Aktarma: Logları farklı formatlarda dışa aktararak analiz araçlarında kullanabilirsiniz.

Temel journalctl Komutları

Aşağıda, journalctl kullanımına dair temel komutlar bulunmaktadır:

# Tüm logları görüntüle
journalctl

# Son 100 log satırını görüntüle
journalctl -n 100

# Belirli bir servisin loglarını görüntüle
journalctl -u nginx.service

# Belirli bir tarih aralığındaki logları görüntüle
journalctl --since "2024-01-01" --until "2024-01-02"

# Kritik (emergency) ve hata (error) seviyesindeki logları görüntüle
journalctl -p err

# Gerçek zamanlı log izleme
journalctl -f

# JSON formatında logları dışa aktarma
journalctl -o json > logs.json

journalctl ile Log Analizi

journalctl, logları analiz etmek için birçok seçenek sunar. Örneğin, belirli bir servisin hata sayısını bulmak için aşağıdaki komutu kullanabilirsiniz:

journalctl -u nginx.service --no-pager | grep "error" | wc -l

Bu komut, nginx.service için hata içeren log satırlarının sayısını verir. Benzer şekilde, logları tarih ve saat bilgisine göre gruplayabilirsiniz:

journalctl --since "2024-01-01" --until "2024-01-08" | awk '{print $1, $2}' | sort | uniq -c

Bu komut, belirli bir tarih aralığındaki logları saat bazında gruplayarak hangi saatlerde en fazla log üretildiğini gösterir.


2. rsyslog: Geleneksel ve Güvenilir Log Yönetimi

rsyslog, Linux sistemlerinde uzun yıllardır kullanılan bir log yönetim aracıdır. Geleneksel syslog protokolünü destekler ve merkezi log toplama için ideal bir çözümdür. rsyslog’un avantajları şunlardır:

  • Esneklik: Farklı log formatlarını ve protokollerini destekler.
  • Güvenilirlik: Logların kaybolmasını önlemek için yerel disk ve uzak sunuculara yedekleme yapabilir.
  • Filtreleme ve Yönlendirme: Logları farklı kriterlere göre filtreleyerek farklı hedeflere yönlendirebilirsiniz.
  • Performans: Yüksek performanslı log işleme için optimize edilmiştir.

rsyslog Kurulumu ve Yapılandırılması

rsyslog genellikle varsayılan olarak sistemlerde yüklü gelir. Kurulumunu kontrol etmek için aşağıdaki komutu kullanabilirsiniz:

sudo apt update && sudo apt install rsyslog  # Debian/Ubuntu
sudo yum install rsyslog                     # RHEL/CentOS

rsyslog’un yapılandırma dosyaları /etc/rsyslog.conf ve /etc/rsyslog.d/ dizininde bulunur. Temel yapılandırma dosyasını düzenlemek için:

sudo nano /etc/rsyslog.conf

Aşağıda, rsyslog’un temel yapılandırmasına dair bir örnek bulunmaktadır:

# Tüm logları yerel olarak /var/log/syslog dosyasına kaydet
*.* /var/log/syslog

# Auth loglarını /var/log/auth.log dosyasına kaydet
auth.* /var/log/auth.log

# Kritik logları /var/log/critical.log dosyasına kaydet
*.=crit /var/log/critical.log

# Uzak bir sunucuya log gönder (örneğin, log.example.com:514)
*.* @log.example.com:514

rsyslog ile Merkezi Log Toplama

Merkezi log toplama için, logları bir sunucuya yönlendirebilirsiniz. Örneğin, birden fazla sunucudan logları merkezi bir log sunucusuna göndermek için aşağıdaki adımları izleyebilirsiniz:

  1. Merkezi Log Sunucusu Kurulumu:

    sudo apt install rsyslog
    sudo nano /etc/rsyslog.conf

    Merkezi log sunucusunda /etc/rsyslog.conf dosyasını aşağıdaki gibi düzenleyin:

    # Modülü yükle
    module(load="imtcp")
    input(type="imtcp" port="514")
    
    # Tüm gelen logları /var/log/remote/ dizinine kaydet
    $template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
    *.* ?RemoteLogs
  2. İstemci Sunucularında Yapılandırma:

    sudo nano /etc/rsyslog.conf

    İstemci sunucularda /etc/rsyslog.conf dosyasını aşağıdaki gibi düzenleyin:

    # Tüm logları merkezi log sunucusuna gönder
    *.* @log.example.com:514
  3. rsyslog’u Yeniden Başlatın:

    sudo systemctl restart rsyslog

Artık, tüm istemci sunuculardan gelen loglar merkezi log sunucusunda /var/log/remote/ dizininde saklanacaktır.


3. Grafana ile Log Analitiği ve Görselleştirme

Logları toplamak ve yönetmek önemli bir adımdır, ancak log verilerini analiz etmek ve görselleştirmek de aynı derecede önemlidir. Grafana, log verilerini görselleştirmek ve analiz etmek için kullanılan popüler bir araçtır. Grafana ile log verilerini nasıl entegre edeceğinizi ve analiz edeceğinizi öğrenelim.

Grafana Kurulumu

Grafana’yı kurmak için aşağıdaki adımları izleyebilirsiniz:

# Grafana deposunu ekleyin
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"

# Grafana'yı kurun
sudo apt-get update
sudo apt-get install grafana

# Grafana'yı başlatın
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

Grafana’ya erişmek için tarayıcınızda http://localhost:3000 adresini ziyaret edin. Varsayılan kullanıcı adı ve şifresi admin/admin şeklindedir.

Grafana ile Log Verilerini Görselleştirme

Grafana, log verilerini görselleştirmek için çeşitli eklentiler ve veri kaynakları sunar. Örneğin, Loki adlı bir log toplama aracını Grafana ile entegre edebilirsiniz. Loki, log verilerini toplama ve sorgulama için optimize edilmiş bir araçtır.

Loki Kurulumu

Loki’yi kurmak için aşağıdaki adımları izleyebilirsiniz:

# Loki deposunu ekleyin
wget https://github.com/grafana/loki/releases/download/v2.9.4/loki-linux-amd64.zip
unzip loki-linux-amd64.zip
sudo mv loki-linux-amd64 /usr/local/bin/loki

# Loki yapılandırma dosyasını oluşturun
sudo mkdir -p /etc/loki
sudo nano /etc/loki/loki-config.yaml

Aşağıda, basit bir Loki yapılandırma dosyası örneği bulunmaktadır:

auth_enabled: false

server:
  http_listen_port: 3100

common:
  storage:
    filesystem:
      chunks_directory: /tmp/loki/chunks
      rules_directory: /tmp/loki/rules
  replication_factor: 1
  ring:
    instance_addr: 127.0.0.1
    kvstore:
      store: inmemory

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

ruler:
  alertmanager_url: http://localhost:9093

Loki’yi başlatmak için:

loki -config.file=/etc/loki/loki-config.yaml

Grafana’da Loki Veri Kaynağını Ekleme

  1. Grafana’ya giriş yapın.
  2. Sol menüden Configuration > Data Sources seçeneğine tıklayın.
  3. Add data source butonuna tıklayın ve Loki seçeneğini seçin.
  4. Aşağıdaki bilgileri girin:
    • Name: Loki
    • URL: http://localhost:3100
  5. Save & Test butonuna tıklayın.

Grafana’da Log Dashboard’ı Oluşturma

  1. Sol menüden Create > Dashboard seçeneğine tıklayın.

  2. Add new panel butonuna tıklayın.

  3. Query bölümünde, aşağıdaki sorguları kullanarak log verilerini görselleştirebilirsiniz:

    # Tüm logları görüntüle
    {job="varlogs"}
    
    # Belirli bir servisin loglarını görüntüle
    {job="varlogs", filename="/var/log/nginx/error.log"}
    
    # Kritik logları görüntüle
    {job="varlogs"} |= `crit`
  4. Grafana panelini kaydedin ve log verilerinizi görselleştirin.


Uygulama Örneği: Gerçek Dünya Senaryosu

Diyelim ki, bir web sunucusunda yoğun trafik nedeniyle performans sorunları yaşıyorsunuz. Log yönetimi sisteminiz sayesinde sorunun kaynağını hızlı bir şekilde tespit edebilirsiniz. İşte adım adım nasıl yapabileceğiniz:

  1. journalctl ile Kritik Logları Kontrol Edin:

    journalctl -p err -u nginx.service
  2. rsyslog ile Merkezi Log Sunucusundan Logları İnceleyin:

    sudo tail -f /var/log/remote/web-server.example.com/nginx-error.log
  3. Grafana ile Log Verilerini Analiz Edin:

    • Grafana’da bir dashboard oluşturun.
    • LogQL sorguları kullanarak yoğun trafik saatlerinde meydana gelen hataları ve performans darboğazlarını belirleyin.
    • Örneğin, aşağıdaki sorguları kullanabilirsiniz:
      # Belirli bir tarih aralığındaki hata sayısını görüntüle
      sum by (level) (count_over_time({job="varlogs", level=~"error|crit"} [1h]))
      
      # Belirli bir IP adresinden gelen istekleri görüntüle
      {job="varlogs", filename="/var/log/nginx/access.log"} |~ `192.168.1.100`
  4. Sorunu Çözün:

    • Log analizi sonucunda, yoğun trafik nedeniyle veri tabanı sorgularının yavaşladığını tespit ettiniz.
    • Veri tabanı sorgularını optimize ederek ve önbellekleme (caching) kullanarak performansı artırdınız.

En İyi Uygulamalar ve İpuçları

Log yönetimi sisteminizi kurarken ve yönetirken aşağıdaki en iyi uygulamaları takip edin:

  1. Log Rotasyonu ve Arşivleme:

    • Log dosyalarının boyutunu kontrol altında tutmak için log rotasyonunu yapılandırın. Örneğin, /etc/logrotate.conf dosyasını düzenleyerek log dosyalarının ne sıklıkla sıkıştırılacağını ve arşivleneceğini belirleyin.
    /var/log/syslog {
        weekly
        rotate 4
        compress
        delaycompress
        missingok
        notifempty
        create 0640 syslog adm
    }
  2. Log Güvenliği:

    • Log dosyalarını yetkisiz erişimlere karşı koruyun. Örneğin, log dosyalarının sahipliğini ve izinlerini düzenleyin:
    sudo chown root:adm /var/log/syslog
    sudo chmod 640 /var/log/syslog
  3. Log Verilerini Dışa Aktarma:

    • Kritik log verilerini düzenli olarak yedekleyin ve güvenli bir şekilde dışa aktarın. Örneğin, AWS S3 veya başka bir bulut depolama hizmetine logları aktarabilirsiniz.
  4. Log Analitiği için Makine Öğrenmesi:

    • Log verilerini analiz etmek için makine öğrenmesi tekniklerini kullanabilirsiniz. Örneğin, anormal davranışları tespit etmek için izinsiz giriş girişimlerini belirleyebilirsiniz.
  5. Uyarı ve Bildirimler:

    • Kritik log olayları için e-posta, Slack veya diğer bildirim kanallarına uyarılar gönderin. Örneğin, Grafana Alerting özelliğini kullanarak belirli koşullar altında uyarılar oluşturabilirsiniz.

Sonuç

Linux sistemlerinde log yönetimi, sistemlerinizin sağlığını, güvenliğini ve performansını izlemek için kritik bir rol oynar. journalctl, rsyslog ve Grafana gibi araçları kullanarak log yönetimini merkezi, güvenilir ve analiz edilebilir hale getirebilirsiniz. Bu rehberde öğrendiğiniz teknikleri uygulayarak sistemlerinizi daha verimli bir şekilde yönetebilir ve olası sorunları proaktif olarak çözebilirsiniz.

Unutmayın, iyi bir log yönetimi sistemi sadece hata ayıklama için değil, aynı zamanda sistemlerinizin gelecekteki performansını ve güvenliğini artırmak için de önemlidir. Log yönetimine yatırım yaparak, teknik altyapınızı daha sağlam ve güvenilir hale getirebilirsiniz.

Eğer log yönetimi konusunda daha fazla öğrenmek istiyorsanız, aşağıdaki kaynaklara göz atabilirsiniz:

Başarılar ve mutlu log yönetimi! 🚀


Bu yazı Mistral ile otomatik oluşturulmuştur.