GNU/Linux >> Belajar Linux >  >> Linux

Cara:Mengelola Log Sistem dengan Journalctl

Pengantar

Di beberapa distribusi Linux yang lebih baru, "init.d" atau "rsyslogd" telah digantikan oleh program yang disebut JournalCTL. Sebelumnya, log biasanya ditemukan di lokasi tertentu untuk setiap file log yang terpisah, daripada mudah ditemukan, dikelola, dan dimanipulasi. Systemd membuat file log ini lebih mudah diakses dengan memusatkannya, mencatat semua kernel dan proses pengguna dalam satu "jurnal." Journalctl adalah versi terbaru dari ini, yang membuatnya lebih mudah untuk mengelola file-file ini.

Dalam panduan ini, kami akan menjelaskan dasar-dasar journalctl serta ikhtisar singkat tentang penggunaan yang disarankan untuk program ini.

Prasyarat

Harus memiliki distribusi Linux dengan journalctl sebagai program manajemen log sistem, misalnya, CentOS 7.  Jika Anda tidak memiliki server, pertimbangkan server pribadi virtual SSD super cepat dari Atlantic.Net.

Cara Mengelola Log Sistem dengan Journalctl

Mengatur Waktu Sistem

Sebelum memulai dengan hal lain, sangat disarankan untuk mengatur waktu sistem. Karena systemd mencatat sebagai jurnal biner, Anda dapat mencatat catatan Anda dalam waktu UTC atau lokal (server). Secara default, systemd akan menampilkan hasil dalam waktu setempat. Untuk menghindari kebingungan di kemudian hari, kami akan memeriksa untuk memastikan bahwa waktu diatur dengan benar. Systemd memiliki program bawaan yang disebut "timedatectl" untuk tujuan ini.

Pertama, periksa untuk memastikan zona waktu Anda tersedia di opsi zona:

timedatectl list-timezones

Ini menunjukkan semua zona waktu yang tersedia di server Anda. Setelah menemukan yang cocok dengan lokasi Anda (atau lokasi server Anda), atur:

sudo timedatectl set-timezone (zone)

Kemudian kami akan memeriksa untuk memastikan ini diterapkan dengan benar:

timedatectl status

Baris pertama akan menampilkan waktu yang tepat.

Kontrol Akses

usermod -a -G adm username

Ganti "nama pengguna" dengan nama pengguna. Pengguna ini akan menerima akses journalctl yang sama dengan pengguna root. Namun, kontrol ini hanya berfungsi jika penyimpanan persisten diaktifkan.

Tampilan log dasar

Ada beberapa perintah yang dapat dikeluarkan pada saat ini. Perintah dasar akan menampilkan output dari semua entri umum, menampilkan entri terlama terlebih dahulu:

journalctl

Meskipun ini akan memberi Anda semua file log, ini akan memberi Anda semua file log. Ini berarti Anda akan memiliki ratusan atau ribuan, atau lebih, baris log yang ditampilkan jika diberi kesempatan. Ini mirip dengan apa yang akan Anda lihat jika Anda mencari di “/var/log/messages/” di versi sebelumnya.

Sesi booting saat ini

Kami juga memiliki perintah yang akan menampilkan log yang hanya terjadi pada boot saat ini.

journalctl -b

Ini berarti bahwa informasi apa pun dari sesi boot sebelumnya tidak akan ditampilkan.

Sesi boot sebelumnya

Jika Anda perlu meninjau log untuk sesi boot sebelumnya, ada opsi untuk itu juga. Beberapa versi mengaktifkan pencatatan sesi boot sebelumnya secara default. Untuk memastikan bahwa milik Anda diatur untuk mencatat ini, kami sarankan untuk mengaktifkan fitur ini. Ini dapat dilakukan dengan membuat direktori

sudo mkdir -p /var/log/journal

atau dengan mengedit file konfigurasi jurnal secara langsung

sudo nano /etc/systemd/journald.conf

Dalam file, di bawah [Journal], atur opsi "Storage=" ke "persistent" sehingga persisten logging diaktifkan. Simpan dan keluar dari file ini dan pengaturan akan berlaku di masa mendatang.
Setelah ini disimpan, untuk melihat opsi yang tersedia bagi file boot untuk ditinjau,

journalctl --list-boots

Anda akan melihat baris untuk setiap sesi boot yang tersedia. ID offset adalah kolom pertama sedangkan ID boot adalah kolom kedua. Anda dapat menggunakan ID offset atau ID boot untuk mengeluarkan perintah:

journalctl -b (offset/boot ID)

Kerangka waktu tertentu

Sebagai gantinya, Anda mungkin ingin meninjau file log dengan kerangka waktu tertentu, yang mungkin mencakup beberapa sesi boot atau membatasinya ke jendela waktu tertentu dalam satu sesi boot. Batasan –sejak dan –sampai dapat ditempatkan yang hanya akan menampilkan peristiwa setelah dan sebelum log tertentu.
Untuk semua nilai waktu, format berikut harus digunakan:

YYYY-MM-DD HH:MM:SS

Jika Anda ingin melihat peristiwa yang telah terjadi sejak pukul 10:00 pada tanggal 5 Juli 2015, kita dapat melakukannya dengan perintah berikut:

journalctl --since “2015-07-05 10:00:00”

Harap diingat bahwa ini akan didasarkan pada waktu server atau UTC, tergantung pada apa yang Anda tetapkan dalam preferensi Anda sebelumnya dalam tutorial ini.
Jika tanggal dihilangkan, jurnal akan mengasumsikan tanggal hari ini. Jika waktu dihilangkan, tengah malam (00:00:00) akan diasumsikan. Anda juga tidak harus menyertakan bidang detik, dalam hal ini akan diasumsikan “00” detik.

Ada juga perintah ramah, seperti

journalctl --since yesterday

dan

journalctl --since 02:00 --until “3 hours ago”

Opsi Pemfilteran

Menurut Satuan

Fungsi paling berguna yang tersedia adalah pemfilteran unit. Pemfilteran -u memberikan opsi untuk hanya melihat "unit" tertentu yang memungkinkan Anda melihat hal-hal yang terjadi hanya dengan mengacu pada program atau sistem tertentu. Seperti biasa, Anda dapat menambahkan filter untuk kerangka waktu dengan ini.

journalctl -u nginx.service

atau

journalctl -u nginx.service --since yesterday

Berdasarkan Proses, Pengguna, atau ID Grup

Jika Anda telah meninjau informasi yang cukup untuk mengambil PID dari proses yang Anda cari, Anda dapat memfilternya sebagai gantinya. Ini dijalankan dengan _PID

journalctl _PID=4345

Menurut Lokasi

Pemfilteran berdasarkan lokasi jalur juga tersedia. Jika Anda memilih jalur yang dapat dieksekusi, journalctl akan menampilkan semua entri yang terkait dengan yang dapat dieksekusi itu. Jika, misalnya, Anda mencari log yang melibatkan bash,

journalctl /usr/bin/bash

Metode ini biasanya mencakup informasi yang lebih rinci tentang proses dan proses anak, jika tersedia. Namun, terkadang ini bukan pilihan.

Pesan Kernel

Pesan kernel biasanya terletak di keluaran dmesg, namun kita dapat menggunakan journalctl untuk mengambilnya juga. Ini akan dilakukan dengan filter -k atau -dmesg.

journalctl -k

Ini akan menampilkan pesan kernel yang telah terjadi selama sesi boot saat ini. Sekali lagi, ini selalu dapat dimodifikasi dengan opsi yang disebutkan sebelumnya. Jika Anda ingin meninjau pesan kernel dari sesi boot sebelumnya,

journalctl -k -b -1

Prioritas

Prioritas sering kali merupakan metode yang disukai untuk meninjau log. Journalctl dapat digunakan untuk menampilkan pesan hanya di atas tingkat prioritas tertentu. Berikut ini adalah tingkat prioritas:

0:muncul

1:waspada

2:kritik

3:salah

4:peringatan

5:pemberitahuan

6:info

7:debug

Anda dapat menggunakan nama tingkat prioritas atau nomor yang sesuai. Jika Anda hanya ingin melihat log prioritas peringatan atau lebih tinggi, Anda dapat mengeluarkan perintah

journalctl -p warning -b

atau

journalctl -p 4 -b

Bidang yang Ditentukan

Untuk melihat daftar jurnal yang muncul dalam bidang tertentu, gunakan pengubah -F

journal -F fieldname

di mana "nama bidang" diganti dengan bidang yang Anda cari. Anda juga memiliki opsi untuk hanya menampilkan entri log yang sesuai dengan kondisi tertentu

journalctl fieldname=value

Memotong atau Memperluas keluaran

Journalctl dapat dimodifikasi untuk mengecilkan atau memperluas tampilan data keluaran. Secara default, journalctl akan menampilkan seluruh entri, mengharuskan Anda untuk menggulir ke kanan dengan tombol panah. Kita dapat memotong output ini sebagai gantinya, yang akan menampilkan elipsis untuk informasi yang dihapus dengan opsi –tidak lengkap.

journalctl --no-full

Atau Anda dapat memberi tahu journalctl untuk menampilkan semua informasi, terlepas dari itu mengingat karakter tidak dapat dicetak. Ini dilakukan dengan pengubah -a.

journalctl -a

Ubah ke Output Standar

journalctl --no-pager

Format Keluaran

Jika Anda menggunakan editor teks pada entri jurnal, seperti yang telah kita bahas di atas, jurnal dapat dilihat dalam format lain sesuai kebutuhan. Ini dapat dilakukan dengan pengubah -o dan penentu format.

Misalnya, Anda dapat membaca jurnal di JSON dengan mengetik

journalctl -b -u nginx -o json

Anda dapat menggunakan yang berikut ini untuk opsi tampilan:

kucing — Menampilkan bidang pesan itu sendiri

ekspor — Format biner untuk mentransfer atau mencadangkan

json — JSON standar, satu entri per baris

json-cantik — Format JSON tetapi lebih mudah dibaca

json-sso — Format JSON dibungkus untuk membuat acara tambahan yang dikirim server kompatibel

pendek — Keluaran syslog default

short-iso — Output default yang menunjukkan cap waktu jam dinding ISO 8601

pendek-monoton — Output default dengan stempel waktu monoton

tepat pendek — Output default dengan stempel waktu mikrodetik

verbose — Menampilkan semua bidang jurnal untuk entri itu, termasuk yang disembunyikan

Pemantauan Proses Aktif

Journalctl meniru administrator mana yang menggunakan ekor untuk pemantauan. Ini dibangun ke journalctl yang memungkinkan akses ke fitur-fitur ini tanpa harus menyalurkan alat tambahan.

Menampilkan Log Terbaru

Opsi -n dapat digunakan untuk menampilkan sejumlah catatan tertentu. Tidak menyertakan nomor modifikasi akan menampilkan sepuluh (10) hasil, secara default.

journalctl -n

Sebagai gantinya, Anda dapat menentukan berapa banyak entri yang ingin Anda lihat

journalctl -n 20

Mengikuti Log

Pengubah -f dapat digunakan untuk mengikuti log yang sedang ditulis.

journalctl -f

Pemeliharaan Jurnal

Ada beberapa perintah yang dapat digunakan untuk membersihkan beberapa log lama demi ruang hard drive Anda.

Pertama, Anda dapat mengetahui seberapa banyak ruang yang digunakan oleh jurnal dengan menggunakan pengubah –disk-usage.

journalctl --disk-usage

Ada dua cara berbeda untuk membersihkannya. Yang pertama adalah mengecilkan jurnal berdasarkan ukurannya. Tindakan ini akan menghapus entri dari yang terlama ke yang terbaru hingga ruang disk yang diinginkan tercapai.

sudo journalctl --vacuum-size-2G

Cara alternatif untuk mengecilkan jurnal adalah ke tanggal tertentu. Opsi –vacuum-time menghapus entri apa pun hingga tanggal tertentu.

Untuk menyimpan entri hanya dari tahun lalu, Anda dapat mengetik

sudo journalctl --vacuum-time-1years

Membatasi Ukuran Jurnal

Anda memiliki kemampuan untuk membatasi jumlah ruang yang dapat digunakan jurnal.

nano /etc/systemd/journald.conf

Perubahan ini dapat dilakukan dengan salah satu modifikasi bidang berikut

SystemMaxUse= Ruang disk maksimum

SystemKeepFree= Jumlah ruang yang harus tetap tersedia

SystemMaxFileSize= Seberapa besar file jurnal individu sebelum dirotasi

RuntimeMaxUse= Ruang disk maksimum yang dapat digunakan dalam penyimpanan volatil  (/run filesystem)

RuntimeKeepFree= Jumlah ruang yang harus tetap tersedia untuk orang lain dalam penyimpanan volatil (/run filesystem)

RuntimeMaxFilesize= Seberapa besar ukuran file jurnal individu dalam penyimpanan volatil (di dalam /run filesystem) sebelum dirotasi

Terima kasih telah mengikuti cara ini. Harap periksa kembali di sini untuk pembaruan lebih lanjut, dan untuk mempertimbangkan server hosting VPS yang memimpin pasar dari Atlantic.Net.


Linux
  1. Bagaimana Cara Menghapus Journalctl?

  2. Cara Menggunakan journalctl untuk Menganalisis Log di Linux

  3. Cara mendapatkan statistik sistem dengan node.js

  1. Cara menggunakan Ansible untuk mengatur pemantauan sistem dengan Prometheus

  2. Cara memantau log otentikasi sistem di Ubuntu

  3. Bagaimana cara membuat Partisi Sistem EFI?

  1. Cara dual boot Kali Linux dan Windows 10

  2. Cara Memantau Sistem Linux dengan Perintah Sekilas

  3. Cara Dual Boot Linux Mint 20 dengan Windows 10