Belge

Journalctl, Systemd Günlüklerini Görüntülemek ve Analiz Etmek İçin Nasıl Kullanılır

Bu kılavuz, Systemd’nin journalctl yardımcı programının temellerini ve çeşitli komutlarını açıklar. Linux’ta masaüstü ve sunucu günlüklerinde sorun giderme için bu komutları kullanabilirsiniz. Farklı örneklerle Systemd Günlüklerini görüntülemek ve analiz etmek için journalctl’yi bu şekilde kullanabilirsiniz.

giriş

Birçoğu Systemd’nin iyi olmadığını, sisteme ağır geldiğini ve her zaman tartışılan bir konu olduğunu söyler. Ancak, bir sistemi yönetmek ve sorun gidermek için iyi bir dizi yardımcı program sağladığını inkar edemezsiniz. GUI’si olmayan bozuk bir sistemle karşılaştığınızı hayal edin. Muhtemelen önyükleme ve GRUB’u da mahvettiniz. Bu tür senaryolarda veya genel olarak – CANLI bir sistemden önyükleme yapabilir, Linux bölümünüzü bağlayabilir ve sorunu öğrenmek için Systemd günlüklerini keşfedebilirsiniz.

Systemd’nin aşağıdaki gibi üç temel bileşeni vardır –

  • systemd: Linux işletim sistemleri için sistem ve servis yöneticisi.
  • systemctl: Sistem ve hizmet yöneticisinin durumunu iç gözlem ve kontrol etme komutu.
  • systemd-analyze: Sistem başlatma performans istatistiklerini sağlar ve diğer durum ve izleme bilgilerini sistemden ve hizmet yöneticisinden alır

Bu üçünün dışında, systemd’nin sunduğu journald, logind, networkd gibi ek hizmetler de vardır. Bu kılavuzda systemd’nin journald hizmetinden bahsedeceğiz.

journald – systemd günlük arka plan programı

Tasarım gereği systemd, işlemlerden, uygulamalardan vb. gelen tüm işletim sistemi günlüklerini teslim etmenin merkezi bir yolunu sağlar. Tüm bu günlük kaydı olayları, systemd’nin günlük ve arka plan programı tarafından işlenir. Journald daemon, Linux işletim sistemlerinin her yerinden tüm günlükleri toplar ve temaları dosyalarda ikili veri olarak depolar.

Olayların merkezi olarak günlüğe kaydedilmesinin avantajları, ikili veriler olarak sistem sorunları çoktur. Örneğin, sistem günlükleri metin olarak değil ikili olarak depolandığından – çeşitli ihtiyaçlar için metin, JSON nesneleri gibi birçok şekilde çevirebilirsiniz. Ayrıca, günlüklerin tarih/saat manipülasyonu yoluyla günlükler sırayla saklandığından, tek bir olayı izlemek çok kolaydır.

Journald’in topladığı günlük dosyalarının binlerce satır olduğunu ve her olay, her önyükleme için güncellendiğini unutmayın. Bu nedenle, uzun süredir çalışan bir Linux işletim sisteminiz varsa günlük günlüklerinin boyutu GB cinsinden olmalıdır. Günlükler binlerce olduğundan, sistem sorunları hakkında daha fazla bilgi edinmek için temel komutlarla filtrelemek daha iyidir.

Journald Yapılandırma Dosyası

Journald’nin yapılandırma dosyası aşağıdaki yolda bulunur. Günlüğe kaydetmenin nasıl gerçekleştiğine ilişkin çeşitli bayraklar içerir. Dosyaya bir göz atabilir ve gerekli değişiklikleri yapabilirsiniz. Ancak ne yaptığınızı bilmiyorsanız bu dosyayı değiştirmemenizi tavsiye ederiz.

/etc/systemd/journald.conf

Journald’in ikili günlük dosyalarını sakladığı yer

Journald, günlükleri ikili biçimde saklar. Bu yol altındaki bir dizinde saklanırlar.

/var/log/journal

Örneğin, aşağıdaki yolda bugüne kadarki tüm sistem günlüklerini içeren bir dizin vardır.

journalctl log file path
journalctl günlük dosyası yolu

Bu dosyaları açmak için cat komutunu veya nano veya vi’yi kullanmayın. Düzgün bir şekilde görüntülenemez .

Systemd Günlüklerini Görüntülemek ve Analiz Etmek için journalctl kullanın

Temel günlük komutu

Günlük arka plan programını kullanarak günlükleri görüntülemek için temel komut şudur:

journalctl
journalctl
journalctl

Bu size tüm uygulamalardan ve işlemlerden hatalar, uyarılar vb. dahil olmak üzere tüm günlük girişlerini verir. En eski günlük en üstte ve mevcut günlükler en altta olacak şekilde listeyi gösterir. Satır satır ilerlemek için ENTER tuşuna basmaya devam etmeniz gerekir. Kaydırmak için PAGE UP ve PAGE DOWN tuşlarını da kullanabilirsiniz. Bu görünümden çıkmak için q düğmesine basın.

Saat dilimleri için günlük girişleri nasıl görüntülenir?

Varsayılan olarak, journalctl geçerli sistem saat dilimindeki günlük zamanını gösterir. Ancak, aynı günlüğü farklı bir saat dilimine dönüştürmek için komutunuzda saat dilimini kolayca sağlayabilirsiniz. Örneğin, günlükleri UTC’de görüntülemek için aşağıdaki komutu kullanın.

journalctl --utc
journalctl --utc
journalctl –utc

Günlük günlüklerinde yalnızca hatalar, uyarılar vb. nasıl görüntülenir?

Bir sistemin ürettiği günlüklerin farklı öncelikleri vardır. Bazı günlükler göz ardı edilebilecek bir uyarı olabilir veya bazıları kritik hatalar olabilir. Uyarılara değil, yalnızca hatalara bakmak isteyebilirsiniz. Bu, aşağıdaki komutu kullanarak da mümkündür.

Acil sistem mesajlarını görüntülemek için şunu kullanın:

journalctl -p 0
journalctl -p 0
journalctl -p 0

Hata kodları

0: emergency
1: alerts
2: critical
3: errors
4: warning
5: notice
6: info
7: debug

Hata kodunu belirttiğinizde, o koddan ve üzeri tüm mesajları gösterir. Örneğin, aşağıdaki komutu belirtirseniz, önceliği 2, 1 ve 0 olan tüm mesajları gösterir.

journalctl -p 2

Belirli bir önyükleme için günlük nasıl görüntülenir?

Journalctl komutunu çalıştırdığınızda, çalıştırmakta olduğunuz geçerli oturumdaki geçerli önyüklemeden gelen bilgileri gösterir. Ancak geçmiş başlatmalarla ilgili bilgileri de görüntülemek mümkündür.

Günlükler her yeniden başlatmada güncellenmeye devam eder. Journald, günlükleri farklı önyüklemelerde takip eder. Önyükleme günlüklerini görüntülemek için aşağıdaki komutu kullanın.

journalctl --list-boots
journalctl list-boots
journalctl list-boots
  • İlk sayı, söz konusu önyüklemeyi analiz etmek için bir sonraki komutta kullanabileceğiniz benzersiz günlük önyükleme parça numarasını gösterir.
  • İkinci sayı, komutlarda da belirtebileceğiniz önyükleme kimliğidir.
  • Sonraki iki tarih, saat kombinasyonu, ilgili dosyada saklanan günlüklerin süresidir. Belirli bir tarih ve saatten bir günlük veya hata bulmak istiyorsanız bu çok kullanışlıdır.

Belirli bir önyükleme numarasını görüntülemek için, aşağıdaki gibi ilk numarayı veya önyükleme kimliğini görüntüleyin.

journalctl -b -45
journalctl -b 8bab42c7e82440f886a3f041a7c95b98
journalctl -b 45
journalctl -b 45

Ekranınızdaki systemd hata mesajlarının açıklamasını ekleyebilen -x anahtarını da kullanabilirsiniz. Bu, belirli durumlarda bir cankurtarandır.

journalctl -xb -p 3
journalctl -xb
journalctl -xb

Belirli bir zaman, tarih süresi için günlükleri nasıl görüntüleyebilirsiniz?

Journalctl, saat ve tarih manipülasyonu için komutun kendisinde “ingilizce” benzeri bir argüman sağlayacak kadar güçlüdür.

–since anahtarını “dün”, “bugün”, “yarın” veya “şimdi” kombinasyonlarıyla kullanabilirsiniz.

Aşağıdaki farklı komut örneklerinden bazıları. Bunları ihtiyacınıza göre değiştirebilirsiniz. Aşağıdaki komutlardaki tarih, saat formatı “YYYY-AA-GG SS:DD:SS” şeklindedir.

journalctl --since "2020-12-04 06:00:00"
journalctl --since "2020-12-03" --until "2020-12-05 03:00:00"
journalctl --since yesterday
journalctl --since 09:00 --until "1 hour ago"
journalctl --since 09:00 --until
journalctl –since 09:00 –until

Yukarıdakileri hata seviyesi anahtarlarıyla da birleştirebilirsiniz.

Çekirdeğe özgü günlükleri nasıl görebilirim?

Linux Çekirdeği mesajları, günlüklerinden çıkarılabilir. Geçerli önyüklemeden Çekirdek mesajlarını görüntülemek için yalnızca aşağıdaki komutu kullanın.

journalctl -k

Bir hizmet için günlükleri nasıl görebilirim, PID

Belirli günlükleri bir systemd hizmet biriminden yalnızca günlüklerden filtreleyebilirsiniz. Örneğin, NetworkManager hizmetinden günlükleri bulmak için aşağıdaki komutu kullanın.

journalctl -u NetworkManager.service
journalctl NetworkManager service
journalctl NetworkManager service

Servis ismini bilmiyorsanız aşağıdaki komutu kullanarak sisteminizdeki systemd servislerini listeleyebilirsiniz.

systemctl list-units --type=service

Bir kullanıcı, grup için günlükler nasıl görüntülenir?

Sunucu günlüklerini analiz ediyorsanız, bu komut birden çok kullanıcının oturum açtığı durumlarda yardımcı olur. İlk önce kullanıcı adından aşağıdaki komutu kullanarak kullanıcı kimliği hakkında bilgi edinebilirsiniz. Örneğin, “hata ayıklama noktası” kullanıcısının kimliğini öğrenmek için –

id -u debugpoint

Ardından, kullanıcı tarafından oluşturulan günlükleri görüntülemek için bu kimliği _UID anahtarıyla kullanın.

journalctl _UID=1000 --since today
journalctl _UID
journalctl _UID

Benzer şekilde, kullanıcı grupları için aynı şeyi bulmak için _GID anahtarını kullanın.

Bir yürütülebilir dosya için günlükler nasıl görüntülenir?

Belirli bir programın veya yürütülebilir dosyanın günlüklerini de bulabilirsiniz. Örneğin gnome-shell mesajlarını öğrenmek istiyorsanız aşağıdaki komutu çalıştırabilirsiniz.

journalctl /usr/bin/gnome-shell --since today
journalctl gnome-shell
journalctl gnome-shell

Kapanış notları

Umarız bu kılavuz, Linux masaüstünüzde veya sunucu sorunlarını gidermede analiz sistem günlüklerini görüntülemek için journalctl kullanmanıza yardımcı olur. Komutları nasıl kullanacağınızı biliyorsanız, sistem günlüğü yönetimi son derece güçlüdür, hata ayıklama süresi boyunca hayatınızı biraz kolaylaştırır.

Yazının orijinalini buradan okuyabilirsiniz.