blog posts

Linux’ta sistem günlüklerini kontrol etmek için Journalctl komutu

Sistem raporları yöneticiler ve geliştiriciler için önemli ve hayati bir kaynaktır. Çünkü bu raporları analiz ederek sistem performansını izlemek, hataları gidermek ve olayları anlamak için gerekli bilgileri alabilirler. Linux’taki Journalctl komutunun devreye girdiği yer burasıdır.

Journalctl komutu, sistem raporlarını aramak ve görüntülemek için kullanılan systemd aracının komut satırı programlarından biridir. Aslında bu komut, systemd tarafından toplanan tüm logları ikili formatta toplar ve Linux  kullanıcılarına raporları sorgulamak ve daha iyi yorumlamak için gerekli seçenekleri sunar.

Eğer bir Linux yöneticisi olarak sistem raporlarını daha kolay ve net bir şekilde analiz etmek istiyorsanız ve bu raporları ve bilgileri daha iyi anlamak istiyorsanız, Journalctl aracını sistem araçlarınıza mutlaka eklemenizi öneririz.

Ayrıca Linux sanal sunucusu satın alarak ideal performans ve güvenlik düzeyine ulaşabilseniz de, Journalctl aracını kullanarak sistem loglarını kontrol etmenizi, sunucu durumunu analiz etmenizi, olayları hızlı ve zamanında izlemenizi çok daha kolay hale getirebilir ve sağlayabilirsiniz .

Bu yazımızda, geçerli ve eksiksiz bir eğitimle bu önemli adımı atabilmeniz için Linux’ta günlükctl komutunun nasıl kullanılacağı, görevler, uygulamalar ve nasıl kullanılacağı hakkında gerekli tüm bilgileri size sunmayı amaçlıyoruz. O halde başlayalım:

İçindekiler

Linux’ta Journalctl komutunu tanıma

Journalctl komutunu incelemeden önce, öncelikle systemd ve Journald’i tanımalıyız çünkü bu komut, systemd ve Journald tarafından toplanan günlük raporlarıyla etkileşimde bulunmak için kullanılır.

Systemd, süreç ve hizmet yönetimi, sistem olay izleme, günlük yönetimi vb. ile ilgili görevleri gerçekleştirmek için bir dizi Linux hizmetini ve arka plan programını başlatan, Linux dağıtımlarındaki varsayılan süreç yönetimi sistemidir.

Journald arka plan programı , raporların ve sistem günlüklerinin kaydedilmesiyle ilgilenir ve çekirdekten, initrd’den, systemd hizmetlerinden ve diğer kaynaklardan gelen mesajları alır ve toplar. Bu raporlar belli bir yapı ve indeks altında saklanmaktadır ancak bu rapor veya dergi adı verilen gruptaki verilerin ikili formatta olması nedeniyle bu verilerin doğru ve net bir şekilde alınması, formatlanması ve analiz edilmesi için bir araca ihtiyaç duyulmaktadır. Journalctl adınız var.

Journalctl ve çeşitli seçeneklerini kullanarak raporları okuyabilir, gerçek zamanlı olarak izleyebilir, raporları zamana, hizmete ve diğer parametrelere göre filtreleyebilirsiniz. Endişelenmenize gerek yok çünkü bu makalede size Journalctl komutu hakkında gerekli tüm bilgileri (sözdiziminden uygulama örneklerine kadar) sağlıyoruz, böylece bu aracı mümkün olan en iyi şekilde kullanabilirsiniz.

Journalctl raporlama komutu sözdizimi

Journalctl komutunun temel sözdizimi aşağıdaki gibidir:

journalctl [options] [matches]

Ancak bu komutun, diğer Linux komutlarının çoğu gibi, her biri belirli amaçlar için kullanılan farklı seçenekleri vardır. Journalctl komutunun ana ve en çok kullanılan seçeneklerini tanıyalım:

b : Belirli bir önyüklemeyle ilgili mesajları görüntüle

c : Dergi raporlarını imleçle belirtilen yerden görüntülemeye başlayın

r : çıktıyı tersten görüntüler (daha yeni raporları listenin başına yerleştirir)

n : çıktıda görüntülenecek son raporların sayısını belirleyin

k : Çekirdek mesajlarını görüntüle

u : istenilen modele göre belirli bir ünite veya sistem ünitesi veya ünitelerle ilgili mesajları görüntüler

şu tarihten bu yana : raporların görüntülenmesi için zaman aralığının belirlenmesi

p : raporları öncelik düzeyine göre filtreleme

o : Çıktı biçimini özelleştirin

  • cat – raporların metin alanını görüntüle
  • kısa – raporları varsayılan sistem günlüğü stiliyle görüntüleyin
  • ayrıntılı – tüm rapor alanlarını tam olarak görüntüle
  • dışa aktarma – günlük raporlarının ikili biçimde serileştirilmesi (yedekleme ve ağ aktarımı için uygundur)
  • json – okunabilirliği artırmak için verileri json formatında yapılandırmak
  • json-pretty – Daha fazla okunabilirlik için json verilerini birden çok satırda biçimlendirin

Artık Journalctl komutunun sözdizimine ve yaygın olarak kullanılan bazı seçeneklerine aşina olduğunuza göre, pratik olarak ilerlemenin zamanı geldi ve kurulum eğitiminden sonra, gerçek dünyada nasıl kullanılacağını öğrenmek için bu komutun pratik örneklerine gidin. :

Journalctl’i farklı Linux dağıtımlarına nasıl kurabilirim?

Journalctl aracı varsayılan olarak systemd ile birlikte kurulsa da ayrı olarak kurulmasına gerek yoktur. Ancak systemd içermeyen bir dağıtım kullanıyorsanız Journalctl’yi kullanmak için systemd aracının otomatik olarak yanına kurulacağı şekilde systemd’yi yüklemelisiniz:

Journalctl komutunu Ubuntu/Debian’a kurmak

sudo apt-get install systemd

Journalctl’yi Fedora’ya yükleyin

sudo apt-get install systemd

Journalctl’yi Centos/RHEL’e yükleme

sudo yum install systemd

Artık Journalctl’i Linux sisteminize kurduğunuzdan emin olduğunuza göre, bu komutun uygulama örneklerini kontrol etmenin zamanı geldi.

* Bazı raporlara ve olaylara erişmek için root erişimine ihtiyacınız olduğunu lütfen unutmayın; bunun için aşağıdaki komutları sudo ile çalıştırmanız daha iyi olur.

Journalctl komutunun Linux’taki uygulama örnekleri

Bu örnekleri inceleyerek Journalctl komutuyla nasıl çalışılacağını öğrenebilirsiniz .

Tüm raporları görüntüle

Raporlama günlüğündeki tüm verileri almak istiyorsanız ve bu verilerin biçimini veya yapısını değiştirmeniz gerekmiyorsa, herhangi bir özel seçenek olmadan Journalctl komutunu çalıştırmanız yeterlidir:

journalctl

 

Bu komut, raporları görüntülemek için less biçimini kullanır. Bu sayede tüm raporlar aynı anda görüntülenmez ve less komutunda tanımlanan tuşları kullanarak bu raporları kontrol edebilirsiniz.

Bu anahtarlardan bazılarını tanıyalım:

Ok tuşları -> çizgiler üzerinde hareket etme

boşluk tuşu -> ekranın altına git

b -> sayfanın en üstüne git

g -> İlk satıra git

G -> Son satıra git

100g -> 100. riski almak

string/ -> Geçerli imleç konumundan belirli bir metin dizesini arayın

n/N -> Sonraki veya önceki aramaya git

q -> Raporlardan çık

İstediğiniz raporların bu formatta görüntülenmesini istemiyorsanız sayfasız seçeneğini kullanabilirsiniz:

journalctl --no-pager

Bu seçeneğin kullanılması tüm raporların aynı anda ve doğrudan ekranda görünmesini sağlayacaktır.

Elbette, muhtemelen bu komut milyonlarca raporla birlikte geldiğinden, gerçekten ihtiyacınız olan raporları görmek için belirli seçenekleri uygulamak daha iyidir.

Raporları tersten görüntüleme (yeniden eskiye)

Güncel sistem raporları sizin için çok önemliyse ve en son raporlara ulaşmak için aşağı inmek istemiyorsanız r seçeneğini kullanabilirsiniz:

journalctl -r

Linux’ta Journalctl kullanarak günlük sayısını sınırlama

Rapor sayısını filtrelemek istiyorsanız ekran satırlarının sayısını belirlemek için n seçeneğini kullanabilirsiniz:

journalctl -n 2

Raporları anahtar kelimelere göre filtreleme

systemd raporları çeşitli kaynak ve hizmetlerden toplanır, eğer bu raporlar arasında yalnızca belirli bir anahtar kelimeyi içeren raporlara ihtiyacınız varsa, o anahtar kelimeyle ilgili raporları görüntülemek için grep komutunu Journalctl komutuyla birleştirebilirsiniz:

journalctl | grep Centaur

Raporları gerçek zamanlı olarak görüntüleyin

sudo journalctl –f

Önceki önyükleme oturumları hakkındaki bilgileri görüntüle

journalctl --list-boots

Bu komutun çıktısını kullanarak, belirli bir önyüklemeyle ilgili raporları görüntülemek için kullanılan b seçeneğini kullanabilirsiniz. Bunun için komuta istediğiniz önyükleme numarasını eklemeniz yeterlidir:

journalctl -b -1

Geçerli önyükleme günlüklerini de görmek istiyorsanız, komuta b seçeneğini koymanız yeterlidir:

journalctl -b

Raporları görüntülemek için zaman aralığını belirtin

Bunun için sadece beri ve bitiş seçeneklerini kullanın.

  Apache web sunucusunun Ubuntu ve Debian Linux’a nasıl kurulacağını öğrenmek için tıklayın

Örneğin, Eylül 2023’ten sonraki raporları görmek istiyorsanız aşağıdaki komutu çalıştırmanız yeterlidir:

journalctl --since="2023-09-01 12:17:16"

Veya bu filtreyi daha net bir şekilde belirtebilirsiniz:

Dünkü raporlar

journalctl --since "yesterday"

20 dakika önce raporlar

journalctl --since "20 min ago"

2 saat önce raporlar

journalctl --since "2 hour ago"

Gördüğünüz gibi, beri seçeneği zaman sınırını başlatmaktır. Bu zaman aralığını sona erdirmek için belirli bir tarih, gün veya saat belirtmek istiyorsanız şu tarihe kadar kullanmalısınız:

Örneğin, 12 Ekim 2023’e kadar olan raporları görüntülemek için aşağıdaki komutu kullanabilirsiniz:

journalctl --until "2023-10-12 12:00:00"

Raporların başlangıç ​​ve bitiş tarihini belirlemek için bu iki seçeneği tek komuta dahil etmeniz gerekir:

journalctl --since "2023-10-12 00:00:00" --until "2023-10-15 12:00:00"

Çıktıyı json formatında görüntüle

Bu format, birçok programdaki ayrıştırma işlemleri için kullanışlıdır ve raporlarınızı json formatında görmek istiyorsanız aşağıdaki komutu çalıştırmanız yeterlidir:

journalctl -o json

Veya bir raporla ilgili tüm json öğelerinin daha düzenli bir etki yaratmak için ayrı satırlarda görüntülenmesini istiyorsanız json-pretty seçeneğini kullanabilirsiniz:

journalctl -o json-pretty

Raporları birime göre görüntüleme

Belirli bir birim veya hizmete ilişkin raporları görüntülemek için u seçeneğini kullanabilirsiniz:

journalctl -u nginx.service

Veya aklınızda birden fazla hizmet varsa hepsini tek bir komuta dahil edebilirsiniz:

journalctl -u nginx.service -u mysql.service

Journalctl aracılığıyla raporları öncelik düzeyine göre filtreleyin

Systemd, belirli parametrelere göre raporları yüksek öncelikten düşük önceliğe doğru aşağıdaki sırayla önceliklendirir:

0- Acil ve acil durum mesajları ( ortaya )

1- Uyarı mesajları (uyarı )

2- Kritik mesajlar ( kritik )

3- Hata mesajları ( hata )

4- Uyarı mesajları

5- Önemli mesajlar ( not )

6- Bilgilendirici mesajlar ( bilgi )

7- Hata ayıklama mesajları

Bu öncelik düzeyinin logların görüntülenmesine dahil edilmesini istiyorsanız, Journalctl komutunda p seçeneğini kullanmalısınız. Örneğin, uyarı önem düzeyine sahip tüm raporları görüntülemek için aşağıdaki komutu kullanabilirsiniz:

journalctl -p warning

Birden fazla seviye seçmek için yukarıdaki komutu aşağıdaki gibi değiştirebilirsiniz:

journalctl -p info -p err

Raporları UTC’ye göre görüntüle

Varsayılan olarak sistem raporları sistemin yerel saatine göre görüntülenir. Artık sisteminiz UTC dışında bir zamana ayarlanmışsa aşağıdaki komutu çalıştırarak UTC’ye dayalı bu raporları görebilirsiniz:

journalctl --utc

Raporları UID, GID ve PID’ye göre filtreleyin

Bazı hizmetler başka alt süreçler veya çatal adı verilen başka süreçler oluşturur; bu nedenle, bir sorunun hatalarını ayıklamak veya başka bir nedenden ötürü belirli bir sürecin günlüklerini kontrol etmek istiyorsanız, onun PID’sini komuta eklemelisiniz:

journalctl _PID=1234

Diğer zamanlarda, belirli bir kullanıcı veya grup tarafından kaydedilen tüm günlükleri görüntülemek isteyebilirsiniz; bu durumda UID veya GID filtrelerini de kullanmalısınız. Örneğin, web sunucunuz user_1 kullanıcısı tarafından çalıştırılıyorsa, aşağıdaki komutu kullanarak kullanıcı kimliğini bulabilirsiniz:

id -u www-data

Daha sonra bunu Journalctl komutuna ekleyin:

journalctl _UID=33 --since today

Eğer systemd’de raporlanan kullanıcıları ve grupları bilmiyorsanız, tüm kullanıcıları veya grupları görüntülemek için F seçeneğini kullanabilirsiniz:

journalctl -F _GID

journalctl -F _UID

Belirli bir rotayla ilgili raporları görüntüleyin

Yürütülebilir bir dosyanın yolunu, onunla ilgili tüm girdileri ve raporları görmek için Journalctl komutuna dahil etmek istiyorsanız, o dosyanın yolunu komuta eklemelisiniz. Örneğin bash yürütülebilir dosyasını içeren tüm raporlara erişmek için aşağıdaki komutu kullanabilirsiniz:

journalctl /usr/bin/bash

Raporların tükettiği alan miktarı hakkında bilgi

Geçerli derginin kullandığı alan miktarını disk kullanımı seçeneğini veya işaretini kullanarak öğrenebilirsiniz:

journalctl --disk-usage

Şimdi bu alanın bir kısmını boşaltmak istiyorsanız vakum boyutu seçeneğini kullanmalısınız. Aslında bu seçenek, bunun için iki yöntem kullanan eski girişleri siler.

1) İstenilen miktarda alanı boşaltır:

 journalctl --vacuum-size=1G

2) belirli bir zamana ait oluşturulan girişleri silin (örneğin, bir yıl önceki girişler):

 journalctl --vacuum-time=1years

Raporlardan uyarıların ve ilgisiz bilgi mesajlarının kaldırılması

Yalnızca ana mesajları görmek istiyorsanız ve gereksiz uyarılara ihtiyacınız yoksa,jurnalctl komutuna q ve sessiz seçeneğini eklemeniz yeterlidir:

journalctl --quiet

* Çıktıyı beğeninize göre özelleştirmek için bu seçenekleri Journalctl komutunda birleştirmeyi deneyin.

Diğer seçenekler hakkında bilgi edinmek için aşağıdaki komutu kullanabilirsiniz:

journalctl --help

son söz

Linux’taki Journalctl komutu, sistemin çeşitli kaynak ve hizmetlerinden toplanan raporları kontrol edip analiz edebileceğiniz syslog komutunun en iyi alternatiflerinden biridir. Bu yazımızda, bu komutu etkili bir şekilde kullanabilmeniz için raporların çıktısını filtrelemek veya özelleştirmek için gerekli tüm seçenekleri size sunmaya çalıştık. Journalctl komutunun gelişmiş özelliklerini kullanarak, Linux sisteminizin veya sunucunuzun tüm sorunlarını mümkün olan en kısa sürede tanımlayıp çözeceğinizi umuyoruz.