Linux’ta sistem günlüklerini kontrol etmek için Journalctl komutu
Linux’ta sistem günlüklerini kontrol etmek
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.
Ö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.