Urus Mesej Log di bawah Systemd menggunakan JournalCtl [Panduan Komprehensif]

Urus Mesej Log di bawah Systemd menggunakan JournalCtl [Panduan Komprehensif]

Sistemd adalah sistem canggih dan pengurus perkhidmatan untuk sistem linux: penggantian daemon init bertujuan untuk memulakan proses selari di boot sistem. Ia kini disokong dalam beberapa pengedaran arus perdana semasa termasuk Fedora, Debian, Ubuntu, OpenSuse, Arch, Rhel, Centos, dll.

Terdahulu, kami menjelaskan cerita di sebalik 'init' dan 'systemd'; Di mana kita membincangkan apa yang kedua -dua daemon itu, mengapa 'di dalamnya'secara teknikal diperlukan untuk digantikan dengan'sistemd'Serta ciri utama Systemd.

Salah satu kelebihan utama sistem atas sistem init yang biasa adalah, sokongan untuk pengurusan terpusat sistem dan proses pembalakan menggunakan jurnal. Dalam artikel ini, kita akan belajar bagaimana untuk mengurus dan melihat mesej log di bawah sistem yang menggunakan Journalctl Perintah di Linux.

Penting: Sebelum bergerak lebih jauh dalam panduan ini, anda mungkin ingin belajar bagaimana menguruskan perkhidmatan dan unit 'Systemd' menggunakan perintah 'SystemCtl', dan juga membuat dan menjalankan unit perkhidmatan baru dalam SystemD menggunakan skrip shell di Linux. Namun, jika anda baik -baik saja dengan semua perkara di atas, teruskan membaca.

Mengkonfigurasi jurnal untuk mengumpul mesej log di bawah sistemd

jurnal adalah daemon yang mengumpulkan dan menulis entri jurnal dari seluruh sistem; Ini pada dasarnya adalah mesej boot, mesej dari kernel dan dari syslog atau pelbagai aplikasi dan ia menyimpan semua mesej di lokasi pusat - fail jurnal.

Anda boleh mengawal tingkah laku jurnal melalui fail konfigurasi lalai: /etc/systemd/jurnal.Conf yang dihasilkan pada masa penyusunan. Fail ini mengandungi pilihan yang nilai -nilainya mungkin berubah menjadi keperluan persekitaran tempatan anda.

Berikut adalah contoh seperti yang kelihatan seperti fail, dilihat menggunakan perintah kucing.

$ kucing/etc/systemd/jurnal.Conf 
Fail konfigurasi jurnal
# Lihat Journald.Conf (5) Untuk maklumat lanjut. [Jurnal] #penyimpanan = auto #compress = ya #meterai = ya #splitmode = uid #syncIntervalsec = 5m #ratelimitinterval = 30s #ratelimitburst = 1000 #SystemMaxuse = #SystemKeepFree = #SystemMaxFileSize = #SystemMaxFiles = 100 #Runtimaxuse = 100 #RuntimemaxFileSize = #runtimemaxFiles = 100 #maxRetentionsec = #maxFilesec = 1month #forwardTosySlog = yes #forwardTokmsg = no #forwardToConsole = no #forwardToWall = yes #ttypath =/dev/console #maxLevels = debug #maks. MaxLevelConsole = info #maxLevelWall = muncul 

Perhatikan bahawa pelbagai pakej memasang dan menggunakan ekstrak konfigurasi di /usr/lib/systemd/*.Conf.d/ dan menjalankan konfigurasi masa boleh didapati di /Run/Systemd/Journald.Conf.d/*.Conf yang tidak semestinya anda gunakan.

Dayakan penyimpanan data jurnal pada cakera

Sebilangan pengagihan Linux termasuk Ubuntu dan derivatif seperti Linux Mint tidak membolehkan penyimpanan mesej boot yang berterusan pada cakera secara lalai.

Adalah mungkin untuk membolehkan ini dengan menetapkan "Penyimpanan"Pilihan untuk"berterusan" seperti yang ditunjukkan di bawah. Ini akan mencipta /var/log/jurnal direktori dan semua fail jurnal akan disimpan di bawahnya.

$ sudo vi/etc/systemd/jurnal.conf atau $ sudo nano/etc/systemd/jurnal.Conf 
[Jurnal] Penyimpanan = berterusan 

Untuk tetapan tambahan, cari makna semua pilihan yang sepatutnya dikonfigurasikan di bawah "[Jurnal]" seksyen dengan menaip.

$ man Journald.Conf 

Menetapkan masa sistem yang betul menggunakan arahan timedatectl

Untuk pengurusan log yang boleh dipercayai di bawah Systemd menggunakan perkhidmatan jurnal, pastikan tetapan masa termasuk zon waktu betul pada sistem.

Untuk melihat tetapan tarikh dan masa semasa pada sistem anda, taipkan.

$ timedatectl atau $ timedatectl Status Tempoh Masa Tempatan: Thu 2017-06-15 13:29:09 Makan Waktu Universal: Thu 2017-06-15 10:29:09 UTC RTC Masa: Thu 2017-06-15 10:29:09 Zon Waktu: Afrika/Kampala (EAT, +0300) Masa Rangkaian di: Ya NTP Disegerakkan: Ya RTC di TZ Tempatan: Tidak 

Untuk menetapkan zon waktu yang betul dan mungkin masa sistem, gunakan arahan di bawah.

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

Melihat Mesej Log Menggunakan Perintah JournalCtl

Journalctl adalah utiliti yang digunakan untuk melihat kandungan Jurnal Systemd (yang ditulis oleh Journald Service).

Untuk menunjukkan semua balak yang dikumpulkan tanpa penapisan, taipkan.

$ Journalctl 
Lihat mesej log
-- Log bermula pada Rabu 2017-06-14 21:56:43 Makan, berakhir di Thu 2017-06-15 12:28:19 Makan 14 Jun 21:56:43 Tecmint Systemd-Journald [336]: Jurnal Runtime (/Run /log/jurnal Jun 14 21:56:43 TECMINT Kernel: Inisialisasi cgroup subsys cpuset Jun 14 21:56:43 tecmint kernel: inisialisasi cgroup subsys cpu Jun 14 21:56:43 tecmint kernel: inisiasi cgroup subsy cpuacct cpuacct cpuacct cpuacct cpuacct 56:43 Tecmint Kernel: Linux Versi 4.4.0-21-GENERIC ([E-mel dilindungi]) 14 Jun 21:56:43 TECMINT kernel: baris arahan: boot_image =/boot/vmlinuz-4.4.0-21- 14 Jun 21:56:43 Tecmint Kernel: Kernel disokong CPU: 14 Jun 21:56:43 TECMINT Kernel: Intel Genuineintel 14 Jun Kernel: Centaur Centaurhauls 14 Jun 21:56:43 TECMINT Kernel: x86/FPU: xstate_offset [2]: 576, xstate_sizes [2] Jun 14 21:56:43 Tecmint kernel: x86/ Flo Jun 14 21:56:43 Tecmint Kernel: x86/FPU: Menyokong Ciri XSAVE 0x02: 'SSE Reg Jun 14 21:56:43 Tecmint Kernel: X86/FPU: Menyokong Ciri XSAVE 0x04:' AVX Reg Jun 14 21:56 : 43 tecmint kernel: x86/fpu: enabled xstate ciri -ciri 0x7, konteks Si Jun 14 21:56:43 tecmint kernel: x86/fpu: menggunakan suis konteks 'bersemangat'. 14 Jun 21:56:43 TECMINT Kernel: E820: Peta Ram Fizikal yang disediakan Bios: 14 Jun 21:56:43 Tecmint Kernel: Bios-E820: [Mem 0x000000000000000000-0x0000000000 E820: [Mem 0x000000000000090000-0x000000000000 Jun 14 21:56:43 Tecmint Kernel: Bios-E820: [Mem 0x000000000000100000-0x00000000001ff 14 Jun 14 21:56:43 : 43 TECMINT Kernel: BIOS-E820: [MEM 0x0000000020200000-0x0000000000400 

Lihat mesej log berdasarkan but

Anda boleh memaparkan senarai nombor boot (berbanding dengan boot semasa), ID mereka, dan cap waktu mesej pertama dan terakhir yang sepadan dengan boot dengan --Senarai-boot pilihan.

$ Journalctl-list-boots -1 9FB590B48E1242F58C2579DEFDBBDDC9 THU 2017-06-15 16:43:36 EAT-THU 2017-06-15 1 0 464AE35C6E264A0879999996-THRE0- EAT0- EAST- EAT0- EAST- EAT0- EAST- EAST- EAT0- EAST- EAT0- EAST- EAT0- EAST- EAT0- EAST- EAT0- EAST- EAT0- EAST- EAT0- EAST- EAT0- EAT01464799999999999996 15 1 

Untuk melihat penyertaan jurnal dari boot semasa (nombor 0), gunakan -b Tukar seperti ini (sama dengan output sampel di atas).

$ Journalctl -B 

Dan untuk melihat jurnal dari boot sebelumnya, gunakan -1 penunjuk relatif dengan -b Pilihan seperti di bawah.

$ Journalctl -b -1 

Sebagai alternatif, gunakan ID boot seperti ini.

$ Journalctl -B 9FB590B48E1242F58C2579DEFDBBDDC9 

Penapisan mesej log berdasarkan masa

Untuk menggunakan masa dalam format Universal Time (UTC) yang diselaraskan, tambahkan --UTC Pilihan seperti berikut.

$ Journalctl --Utc 

Untuk melihat semua penyertaan sejak tarikh dan masa tertentu, e.g. 15 Jun, 2017 jam 8:15 pagi, taipkan arahan ini.

$ Journalctl--Since "2017-06-15 08:15:00" $ Journalctl-Since Today $ Journalctl --Enty semalam 

Melihat mesej log terkini

Untuk melihat mesej log terkini (10 secara lalai), gunakan -n Bendera seperti yang ditunjukkan di bawah.

$ Journalctl -n $ Journalctl -n 20 

Melihat mesej log yang dihasilkan oleh kernel

Untuk melihat hanya mesej kernel, serupa dengan output arahan DMESG, anda boleh menggunakan -k bendera.

$ Journalctl -K $ Journalctl -K -B $ Journalctl -K -B 9FB590B48E1242F58C2579Defdbdddc9 

Melihat mesej log yang dihasilkan oleh unit

Untuk dapat melihat semua entri jurnal untuk unit tertentu, gunakan -u Tukar seperti berikut.

$ Journalctl -u Apache2.perkhidmatan 

Hingga sifar ke boot semasa, taipkan arahan ini.

$ Journalctl -b -u Apache2.perkhidmatan 

Untuk menunjukkan log dari boot sebelumnya, gunakan ini.

$ Journalctl -B -1 -U Apache2.perkhidmatan 

Berikut adalah beberapa arahan berguna lain:

$ Journalctl -u Apache2.Perkhidmatan $ Journalctl -u Apache2.Perkhidmatan -jadi hari ini $ Journalctl -u Apache2.Perkhidmatan -u Nagios.Perkhidmatan -semalam semalam 

Melihat mesej log yang dihasilkan oleh proses

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

$ Journalctl _pid = 19487 $ Journalctl _pid = 19487 -Since Today $ Journalctl _PID = 19487 - -SELAMAT SEMUA 

Melihat mesej log yang dihasilkan oleh pengguna atau id kumpulan

Untuk melihat log yang dihasilkan oleh pengguna atau kumpulan tertentu, tentukan pengguna atau id kumpulan seperti ini.

$ Journalctl _uid = 1000 $ Journalctl _uid = 1000 --End Today $ Journalctl _uid = 1000 -b -1 --di hari ini 

Melihat log yang dihasilkan oleh fail

Untuk menunjukkan semua balak yang dihasilkan oleh fail (mungkin boleh dilaksanakan), seperti D-Bus Executable atau Bash Executable, hanya taipkan.

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

Melihat mesej log dengan keutamaan

Anda juga boleh menapis output berdasarkan keutamaan mesej atau julat keutamaan menggunakan -p bendera. Nilai yang mungkin adalah: 0 - muncul, 1 - Alert, 2 - Crit, 3 - Err, 4 - Amaran, 5 - Notis, 6 - Info, 7 - Debug):

$ jurnalctl -p err 

Untuk menentukan julat, gunakan format di bawah (muncul untuk memberi amaran).

$ Journalctl -p 1 ... 4 atau $ Journalctl -p muncul ... Amaran 

Lihat mesej log dalam masa nyata

Anda boleh praktikal menonton balak kerana mereka ditulis dengan -f pilihan (serupa dengan ekor -f fungsi).

$ Journalctl -f 

Mengendalikan pemformatan paparan jurnal

Sekiranya anda ingin mengawal pemformatan output penyertaan jurnal, tambahkan -o Bendera dan gunakan pilihan ini: Cat, Eksport, JSON, JSON-PRETTY, JSON-SSE, Pendek, Pendek-ISO, pendek monotonik, pendek dan verbose (periksa makna pilihan dalam halaman lelaki:

The kucing Pilihan menunjukkan mesej sebenar setiap entri jurnal tanpa sebarang metadata (timestamp dan sebagainya).

$ Journalctl -b -u Apache2.Perkhidmatan -O kucing 

Menguruskan jurnal pada sistem

Untuk memeriksa fail jurnal untuk konsistensi dalaman, gunakan --Sahkan pilihan. Sekiranya semuanya baik, output harus menunjukkan lulus.

$ JournalCtl --Verify Pass:/Run/Log/Journal/2a5d5f96ef9147c0b35535562b32d0ff/System.Jurnal 491F68: Data yang tidak digunakan (entry_offset == 0) Lulus:/lari/log/jurnal/2A5D5F96EF9147C0B35535562B32D0FF/[E -mel dilindungi] 9866C3D4D.Jurnal Pas:/lari/log/jurnal/2A5D5F96EF9147C0B35535562B32D0FF/[E -mel dilindungi] 5D8945A9E.Jurnal Pas:/lari/log/jurnal/2a5d5f96ef9147c0b35535562b32d0ff/[dilindungi e -mel] 1becab02f.Jurnal Pas:/lari/log/jurnal/2A5D5F96EF9147C0B35535562B32D0FF/[E -mel dilindungi] 01CFCEDFF.jurnal 

Memadam fail jurnal lama

Anda juga boleh memaparkan penggunaan cakera semasa semua fail jurnal dengan --penggunaan cakera pilihan. Ia menunjukkan jumlah penggunaan cakera semua fail jurnal yang diarkibkan dan aktif:

$ Journalctl-Disk-usage 

Untuk memadam fail jurnal lama (diarkibkan) menjalankan arahan di bawah:

$ sudo jurnalctl-vacuum-size = 50m #delete files sehingga ruang cakera yang mereka gunakan jatuh di bawah saiz yang ditentukan $ sudo jurnalctl --vacuum-time = 1years #delete files supaya semua fail jurnal tidak mengandungi data yang lebih tua daripada timespan yang ditentukan $ sudo Journalctl-vacuum-files = 4 #delete files sehingga tidak lebih daripada bilangan fail jurnal berasingan yang ditentukan tetap di lokasi penyimpanan 

Fail jurnal berputar

Terakhir tetapi tidak kurang, anda boleh mengarahkan jurnal untuk memutar fail jurnal dengan --berputar pilihan. Perhatikan bahawa arahan ini tidak kembali sehingga operasi putaran selesai:

$ sudo Journalctl -Rotate 

Untuk panduan dan pilihan penggunaan yang mendalam, lihat halaman JournalCtl Man seperti berikut.

$ man Journalctl 

Periksa beberapa artikel berguna.

  1. Menguruskan Proses dan Perkhidmatan Permulaan Sistem (SYSVINIT, SYSTEMD dan UPSTART)
  2. Petiti - Alat analisis log sumber terbuka untuk linux sysadmins
  3. Cara Menyiapkan dan Mengurus Putaran Log Menggunakan Logrotat di Linux
  4. LNAV - menonton dan menganalisis log Apache dari terminal Linux

Itu sahaja buat masa ini. Gunakan maklum balas dari bawah untuk mengemukakan sebarang pertanyaan atau tambahkan pemikiran anda mengenai topik ini.