Mövzunu Açan
#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
Pratik yönergeler ve örnekler
Burada -u birimi belirtir, -n ise son kaç satırdır.
Zaman formatı temel olarak ISO benzeri dizilimi kabul eder; ihtiyaca göre relative zaman da kullanabilirsiniz (ör. --since "2 days ago").
-p parametresiyle facility seviyesi aralığı belirlenir. err..alert aralığı kritik ile uyarı arasını kapsar.
veya
-o formatı çıktı formatını belirler: short, json, cat, export, json-pretty, jsonl vb.
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.
Süreçleri otomatikleştirmek için zamanlanmış görevler (cron veya systemd timer) kullanışlıdır.
Güvenlik ve performans notları
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.
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:
KOD
1journalctl -u servisismi -n 100Burada -u birimi belirtir, -n ise son kaç satırdır.
- Belirli bir zaman aralığında kayıtları filtrelemek:
KOD
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:
KOD
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:
KOD
1journalctl -u servisismi -o json-pretty > service.log.jsonveya
KOD
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:
KOD
1journalctl -u servisismi --since "2024-11-01" --until "2024-11-02" -o json | jq -r '[.__REALTIME_TIMESTAMP, .MESSAGE] | @csv' > service.csvBu ö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:
KOD
1journalctl -u servisismi > /var/log/servisismi.log && gzip /var/log/servisismi.logSü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.
