Autor del tema #1
journalctl ile servis günlüklerini dışa aktarma

Bir Linux sistemi üzerinde çalışırken servislerin davranışlarını incelemek için günlük verilerini almak çoğu zaman gereklidir. Özellikle hata ayıklama veya performans üzerinde zaman serisi analizleri yapmak istediğinizde günlükları farklı formatlarda dışa aktarmak işinizi kolaylaştırır. Aşağıda journalctl ile günlükleri nasıl filtreleyip nasıl farklı formatlarda dışa aktarabileceğinizi adım adım ele alıyorum.

İçerik yoğunluğu ve yaklaşım
  • Journal sistemince toplanan günlüklar, zaman damgası, birim adı (unit), öncelik seviyesi ve mesaj içeriğini içerir. Bu metinleri dışa aktarırken hedefinize göre filtrelemek, zaman aralığına göre sınırlamak ve çıktı formatını belirlemek en kritik adımlardır.
  • Genelde karşılaşılan kullanım senaryoları: belli bir servisin son 100 satırını almak, belirli bir zaman aralığındaki kayıtları çekmek, yalnızca hata seviyesindeki girdileri çıkarmak, veya CSV/JSON gibi makine okunabilir formatlarda dışa aktarmaktır.


Pratik yönergeler ve örnekler
  • Son 100 satırı bir servisten almak:

CÓDIGO
1journalctl -u servisismi -n 100

Burada -u birimi belirtir, -n ise son kaç satırdır.

  • Belirli bir zaman aralığında kayıtları filtrelemek:

CÓDIGO
1journalctl -u servisismi --since "2024-11-01 00:00:00" --until "2024-11-02 00:00:00"

Zaman formatı temel olarak ISO benzeri dizilimi kabul eder; ihtiyaca göre relative zaman da kullanabilirsiniz (ör. --since "2 days ago").

  • Hata veya uyarı seviyesinde kaydı çekmek:

CÓDIGO
1journalctl -u servisismi -p err..alert

-p parametresiyle facility seviyesi aralığı belirlenir. err..alert aralığı kritik ile uyarı arasını kapsar.

  • Çıktıyı JSON veya YAML gibi makineler için okunabilir formatlarda almak:

CÓDIGO
1journalctl -u servisismi -o json-pretty > service.log.json

veya
CÓDIGO
1journalctl -u servisismi -o json > service.log.jsonl

-o formatı çıktı formatını belirler: short, json, cat, export, json-pretty, jsonl vb.

  • Çıktıyı CSV’ye dönüştürmek için basit bir yaklaşım:

CÓDIGO
1journalctl -u servisismi --since "2024-11-01" --until "2024-11-02" -o json | jq -r '[.__REALTIME_TIMESTAMP, .MESSAGE] | @csv' > service.csv

Bu örnekte jq ile JSON satırlarını CSV satırlarına dönüştürüyoruz; timestamp değerlerini okunabilir zaman damgasına çevirmek için ek adımlar gerekebilir.

  • Ardışık günlükleri bir dosyada toplemek ve sıkıştırmak:

CÓDIGO
1journalctl -u servisismi > /var/log/servisismi.log && gzip /var/log/servisismi.log

Süreçleri otomatikleştirmek için zamanlanmış görevler (cron veya systemd timer) kullanışlıdır.

Güvenlik ve performans notları
  • Günlük dosyalarını dışa aktarırken yetki sorunu yaşamamak için yeterli izinlere sahip kullanıcıyla çalışın; çoğu durumda root veya sudo gereklidir.
  • Çok büyük log dosyaları için filtreleme ve zaman aralığı sınırı eklemek performansı önemli ölçüde iyileştirir.
  • Hassas bilgiler içerebilecek mesajlar için çıktı üzerinde filtreleme veya redaksiyon düşünün.


Kapanış
Bu tekniklerle journalctl üzerinden servis günlüklerini ihtiyacınıza uygun formata ve kapsamda dışa aktarabilirsiniz. Belirli bir servisi veya hedef formatı ile ilgili karşılaştığınız özel durumlar varsa paylaşın; gerekli filtreleri veya komut kombinasyonlarını birlikte inceleyelim.

Debes haber iniciado sesión para responder.

Usuarios que están viendo este tema (Total: 4, Miembros: 4, Invitados: 0)
Total: 4 (miembros: 4, invitados: 0)
0 citas seleccionadas