Kelola Pesan Log di bawah SystemD Menggunakan JournalCTL [Panduan Komprehensif]

Kelola Pesan Log di bawah SystemD Menggunakan JournalCTL [Panduan Komprehensif]

Systemd adalah sistem mutakhir dan manajer layanan untuk sistem Linux: Penggantian daemon init yang dimaksudkan untuk memulai proses secara paralel pada boot sistem. Sekarang didukung dalam sejumlah distribusi arus utama saat ini termasuk Fedora, Debian, Ubuntu, OpenSUSE, Arch, RHEL, Centos, dll.

Sebelumnya, kami menjelaskan kisah di balik 'init' dan 'systemd'; Di mana kami membahas apa dua daemon itu, mengapa 'init'Secara teknis perlu diganti dengan'Systemd'serta fitur utama SystemD.

Salah satu keuntungan utama SystemD dibandingkan sistem init umum lainnya adalah, dukungan untuk manajemen sistem dan proses pencatatan yang terpusat menggunakan jurnal. Di artikel ini, kami akan belajar cara mengelola dan melihat pesan log di bawah SystemD menggunakan Journalctl Perintah di Linux.

Penting: Sebelum bergerak lebih jauh dalam panduan ini, Anda mungkin ingin mempelajari cara mengelola layanan dan unit 'SystemD' menggunakan perintah 'Systemctl', dan juga membuat dan menjalankan unit layanan baru di SystemD menggunakan skrip shell di Linux. Namun, jika Anda baik -baik saja dengan semua hal di atas, lanjutkan membaca.

Mengkonfigurasi Journald untuk mengumpulkan pesan log di bawah SystemD

Journald adalah daemon yang mengumpulkan dan menulis entri jurnal dari seluruh sistem; Ini pada dasarnya adalah pesan boot, pesan dari kernel dan dari syslog atau berbagai aplikasi dan menyimpan semua pesan di lokasi pusat - file jurnal.

Anda dapat mengontrol perilaku Journald melalui file konfigurasi default: /etc/systemd/jurnald.conf yang dihasilkan pada waktu kompilasi. File ini berisi opsi yang nilainya Anda dapat Anda ubah untuk memenuhi persyaratan lingkungan setempat Anda.

Di bawah ini adalah sampel dari seperti apa file itu, dilihat menggunakan perintah CAT.

$ cat/etc/systemd/jurnald.conf 
File Konfigurasi Jurnal
# Lihat Journald.conf (5) untuk detailnya. [Journal] #Storage = Auto #Compress = Ya #Seal = Ya #SplitMode = UID #SyncInterValSec = 5m #RateLimItInterVal = 30S #RATeLIMITBURST = 1000 #SystemMaxuse = #SystemKeepFree = #SystemMaxFileSize = #SystemMaxFiles = 100 #runtimeMaxuse = #runtime = #RuntimeMaxFileSize = #runTimeMaxFiles = 100 #maxRetentionsec = #maxFilesec = 1Month #forwardToSyslog = Ya #ForwardTokmsg = Tidak #ForwardToconsole = Tidak #ForwardToWall = Ya #ttypath =/dev/konsol #MAXLEVELSOLE = DEBUG #MAXLEVERS = TTYPATH =/DEV/CONSOLE #MAXLEVELSOLE = DEBLVEUG #MAXLEVERSYSY Maxlevelconsole = info #maxlevelwall = emerg 

Perhatikan bahwa berbagai paket menginstal dan menggunakan ekstrak konfigurasi di /usr/lib/systemd/*.conf.D/ dan jalankan konfigurasi waktu dapat ditemukan di /run/systemd/jurnald.conf.D/*.conf yang mungkin belum tentu Anda gunakan.

Aktifkan penyimpanan data jurnal di disk

Sejumlah distribusi Linux termasuk Ubuntu dan turunannya seperti Linux Mint tidak mengaktifkan penyimpanan pesan boot yang persisten di disk secara default.

Dimungkinkan untuk mengaktifkan ini dengan mengatur “Penyimpanan"Opsi untuk"gigih“Seperti yang ditunjukkan di bawah ini. Ini akan membuat /var/log/jurnal direktori dan semua file jurnal akan disimpan di bawahnya.

$ sudo vi/etc/systemd/jurnald.conf atau $ sudo nano/etc/systemd/jurnald.conf 
[Jurnal] penyimpanan = persisten 

Untuk pengaturan tambahan, temukan arti semua opsi yang seharusnya dikonfigurasi di bawah "[Jurnal]" bagian dengan mengetik.

$ man Journald.conf 

Mengatur waktu sistem yang benar menggunakan perintah timedatectl

Untuk manajemen log yang andal di bawah SystemD menggunakan layanan Journald, pastikan bahwa pengaturan waktu termasuk zona waktu benar pada sistem.

Untuk melihat pengaturan tanggal dan waktu saat ini di sistem Anda, ketik.

$ timeDatectl atau $ timedatectl status waktu setempat: Kamis 2017-06-15 13:29:09 MAKAN Waktu Universal: Kamis 2017-06-15 10:29:09 Waktu RTC UTC: Kamis 2017-06-15 10:29:09 Zona Waktu: Afrika/Kampala (Eat, +0300) Waktu Jaringan Pada: Ya NTP Sinkronisasi: Ya RTC di TZ Lokal: Tidak 

Untuk mengatur zona waktu yang benar dan mungkin waktu sistem, gunakan perintah di bawah ini.

$ sudo timedatectl set-timezone africa/Kampala $ sudo timedatectl set-time "13:50:00" 

Melihat pesan log menggunakan perintah jurnalctl

Journalctl adalah utilitas yang digunakan untuk melihat konten SystemD Journal (yang ditulis oleh Journald Service).

Untuk menampilkan semua log yang dikumpulkan tanpa penyaringan, ketik.

$ jurnalctl 
Lihat pesan log
-- Log dimulai pada Rabu 2017-06-14 21:56:43 Makan, berakhir di THU 2017-06-15 12:28:19 Makan 14 Juni 21:56:43 Tecmint Systemd-Journald [336]: Jurnal Runtime (/Run /Log/Jurnal 14 Jun 21:56:43 Tecmint Kernel: Menginisialisasi CGroup Subsys CPUSET 14 Juni 21:56:43 Tecmint Kernel: Menginisialisasi CGroup Subsys CPU 14 Jun 21:56:43 Tecmint Kernel: Inisialisasi CGROUP Subsys CPUACCT 14 Juni 21: 56:43 Kernel Tecmint: Linux Versi 4.4.0-21-Generic ([Email Dilindungi]) 14 Jun 21:56:43 Tecmint Kernel: Command Line: Boot_Image =/Boot/VMlinuz-4.4.0-21- 14 Jun 21:56:43 Tecmint Kernel: Kernel Didukung CPU: 14 Jun 21:56:43 Tecmint Kernel: Intel Asli Intel 14 Jun 21:56:43 Tecmint Kernel: AMD Authenticamd 14 Jun 21:56:43 Tecmint Kernel: Centaur Centaurhauls 14 Jun 21:56:43 Tecmint Kernel: x86/fpu: xstate_offset [2]: 576, xstate_sizes [2] 14 Jun 21:56:43 TecMint Kernel: x86/fpu: fitur XSave pendukung 0x01: 'x87: x86/fpu: fitur XSave Support 0x01:' x87: x86/fpu: fitur XSave 0x01: 'x86:' x86/fpu: xsave pendukung 0x01: ' Flo 14 Jun 21:56:43 Tecmint Kernel: X86/FPU: Fitur XSAVE Mendukung 0x02: 'SSE Reg Jun 14 21:56:43 Tecmint Kernel: X86/FPU: Fitur XSAVE Mendukung 0x04:' AVX Reg Jun 14 21:56 : 43 tecmint kernel: x86/fpu: diaktifkan fitur xstate 0x7, konteks Si 14 Jun 21:56:43 Tecmint Kernel: x86/fpu: menggunakan sakelar konteks fpu 'eager' FPU. 14 Jun 21:56:43 Tecmint Kernel: E820: BIOS-Dipadatkan Ram Fisik: 14 Jun 21:56:43 Tecmint Kernel: BIOS-E820: [MEM 0x0000000000000000-0x000000.000 Jun 21:56:43 Tecmint Kernel: Bios-- E820: [MEM 0x0000000000090000-0x00000000000 14 Jun 21:56:43 Kernel Tecmint: BIOS-E820: [MEM 0x00000000100000-0x0000001FF 14 JUNI 21:56:43 TECMINT Kernel: BIOS-E8201201:100000-HET2002222 : 43 Tecmint Kernel: BIOS-E820: [MEM 0x0000000020200000-0x00000000400 

Lihat pesan log berdasarkan sepatu bot

Anda dapat menampilkan daftar nomor boot (relatif terhadap boot saat ini), ID mereka, dan cap waktu dari pesan pertama dan terakhir yang sesuai dengan boot dengan --Daftar-Boots pilihan.

$ Journalctl--list-Boots -1 9FB590B48E1242F58C2579DEFDBBDDC9 THU 2017-06-15 16:43:36 EAT-THU 2017-06-15 16343434343434343622 15 1 

Untuk melihat entri jurnal dari boot saat ini (nomor 0), gunakan -B Beralih seperti ini (sama seperti output sampel di atas).

$ journalctl -b 

dan untuk melihat jurnal dari boot sebelumnya, gunakan -1 penunjuk relatif dengan -B opsi seperti di bawah ini.

$ journalctl -b -1 

Atau, gunakan ID boot seperti ini.

$ jurnalctl -b 9fb590b48e1242f58c2579defdbbddc9 

Memfilter pesan log berdasarkan waktu

Untuk menggunakan waktu dalam format waktu universal terkoordinasi (UTC), tambahkan --UTC opsi sebagai berikut.

$ Journalctl --UTC 

Untuk melihat semua entri sejak tanggal dan waktu tertentu, e.G. 15 Juni 2017 jam 8:15 pagi, ketik perintah ini.

$ Journalctl --Since "2017-06-15 08:15:00" $ Journalctl --Since Today $ Journalctl-Sedang kemarin 

Melihat pesan log terbaru

Untuk melihat pesan log terbaru (10 secara default), gunakan -N Bendera seperti yang ditunjukkan di bawah ini.

$ journalctl -n $ journalctl -n 20 

Melihat pesan log yang dihasilkan oleh kernel

Untuk melihat hanya pesan kernel, mirip dengan output perintah DMESG, Anda dapat menggunakan -k bendera.

$ jurnalctl -k $ journalctl -k -b $ journalctl -k -b 9fb590b48e1242f58c2579defdbbddc9 

Melihat pesan log yang dihasilkan oleh unit

Untuk dapat melihat semua entri jurnal untuk unit tertentu, gunakan -u beralih sebagai berikut.

$ journalctl -u apache2.melayani 

Untuk nol ke boot saat ini, ketik perintah ini.

$ journalctl -b -u apache2.melayani 

Untuk menampilkan log dari boot sebelumnya, gunakan ini.

$ journalctl -b -1 -u Apache2.melayani 

Di bawah ini adalah beberapa perintah berguna lainnya:

$ journalctl -u apache2.Layanan $ journalctl -u Apache2.Layanan --SeCe Today $ journalctl -u Apache2.Layanan -U Nagios.Layanan --SECE Yesterday 

Melihat pesan log yang dihasilkan oleh proses

Untuk melihat log yang dihasilkan oleh proses tertentu, tentukan PID seperti ini.

$ journalctl _pid = 19487 $ journalctl _pid = 19487 --SeCe Today $ journalctl _pid = 19487 -STINGHER YINTANG 

Melihat pesan log yang dihasilkan oleh ID pengguna atau grup

Untuk melihat log yang dihasilkan oleh pengguna atau grup tertentu, tentukan ID pengguna atau grup seperti ini.

$ journalctl _uid = 1000 $ journalctl _uid = 1000 --SeCe Today $ journalctl _uid = 1000 -B -1 --Since hari ini 

Melihat log yang dihasilkan oleh file

Untuk menampilkan semua log yang dihasilkan oleh file (mungkin yang dapat dieksekusi), seperti D-Bus Executable atau Bash Executable, cukup ketik.

$ journalctl/usr/bin/dbus-daemon $ journalctl/usr/bin/bash 

Melihat pesan log berdasarkan prioritas

Anda juga dapat memfilter output berdasarkan prioritas pesan atau rentang prioritas menggunakan -P bendera. Nilai -nilai yang mungkin adalah: 0 - Emerg, 1 - Peringatan, 2 - Crit, 3 - Err, 4 - Peringatan, 5 - Pemberitahuan, 6 - Info, 7 - Debug):

$ journalctl -p err 

Untuk menentukan rentang, gunakan format di bawah ini (muncul untuk peringatan).

$ journalctl -p 1… 4 atau $ journalctl -p muncul… peringatan 

Lihat pesan log secara real-time

Anda dapat menonton log saat ditulis dengan -F opsi (mirip dengan ekor -f Kegunaan).

$ journalctl -f 

Menangani format tampilan jurnal

Jika Anda ingin mengontrol pemformatan output entri jurnal, tambahkan -Hai Bendera dan gunakan opsi-opsi ini: CAT, Ekspor, JSON, JSON-PRILTY, JSON-SSE, SINGKAT, SINGKAT, SHORT-MONOTONIC, SHORT-PRECISE DAN VERBOSE (Periksa Makna Opsi di Halaman Man:

Itu kucing Opsi menunjukkan pesan aktual dari setiap entri jurnal tanpa metadata (cap waktu dan sebagainya).

$ journalctl -b -u apache2.layanan -o kucing 

Mengelola jurnal pada suatu sistem

Untuk memeriksa file jurnal untuk konsistensi internal, gunakan --memeriksa pilihan. Jika semuanya baik -baik saja, output harus menunjukkan umpan.

$ journalctl --verify pass:/run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/sistem.Jurnal 491F68: Data yang Tidak Digunakan (entri_offset == 0) Pass:/Run/Log/Journal/2A5D5F96EF9147C0B35535562B32D0FF/[Email Dilindungi] 9866C3D4D.Jurnal Pass:/Run/Log/Journal/2A5D5F96EF9147C0B35535562B32D0FF/[Email Dilindungi] 5D8945A9E.Jurnal Pass:/Run/Log/Journal/2A5D5F96EF9147C0B35535562B32D0FF/[Email Dilindungi] 1BECAB02F.Jurnal Pass:/Run/Log/Journal/2A5D5F96EF9147C0B35535562B32D0FF/[Email Dilindungi] 01cfcedff.jurnal 

Menghapus file jurnal lama

Anda juga dapat menampilkan penggunaan disk saat ini dari semua file jurnal dengan --Disk-Penggunaan pilihan. Ini menunjukkan jumlah penggunaan disk dari semua file jurnal yang diarsipkan dan aktif:

$ journalctl--disk-penggunaan 

Untuk menghapus file jurnal lama (diarsipkan) menjalankan perintah di bawah ini:

$ sudo journalctl --vacuum-size = 50m file #delete sampai ruang disk yang mereka gunakan jatuh di bawah ukuran yang ditentukan $ sudo journalctl --vacuum-time = 1 tahun file #delet $ sudo journalctl --vacuum-files = 4 file #delete sehingga tidak lebih dari jumlah file jurnal terpisah yang ditentukan tetap di lokasi penyimpanan 

File jurnal berputar

Terakhir, Anda dapat menginstruksikan Journald untuk memutar file jurnal dengan --memutar pilihan. Perhatikan bahwa arahan ini tidak kembali sampai operasi rotasi selesai:

$ sudo journalctl -rotate 

Untuk panduan dan opsi penggunaan mendalam, lihat halaman Journalctl Man sebagai berikut.

$ man journalctl 

Lihatlah beberapa artikel yang berguna.

  1. Mengelola Proses dan Layanan Startup Sistem (Sysvinit, SystemD dan Upstart)
  2. Petiti - Alat Analisis Log Sumber Terbuka untuk Sysadmin Linux
  3. Cara Mengatur dan Mengelola Rotasi Log Menggunakan Logrotate Di Linux
  4. LNAV - Tonton dan analisis log Apache dari terminal Linux

Itu saja untuk saat ini. Gunakan umpan balik dari bawah untuk mengajukan pertanyaan atau menambahkan pemikiran tentang topik ini.