Sebagai administrator sistem Linux, memeriksa file log adalah salah satu tugas paling umum yang mungkin harus Anda lakukan.
Log Linux sangat penting :mereka menyimpan informasi penting tentang beberapa kesalahan yang mungkin terjadi pada sistem Anda.
Mereka mungkin juga menyimpan informasi tentang siapa yang mencoba mengakses sistem Anda, apa yang dilakukan layanan tertentu, atau tentang kerusakan sistem yang terjadi sebelumnya.
Akibatnya, mengetahui cara menemukan , manipulasi dan mengurai file log jelas merupakan keterampilan yang harus Anda kuasai.
Dalam tutorial ini, kita akan mengungkap semua yang perlu diketahui tentang logging Linux.
Anda akan disajikan dengan cara logging diarsitektur pada sistem Linux dan bagaimana perangkat dan proses virtual yang berbeda berinteraksi bersama untuk mencatat entri.
Kami akan menggali lebih dalam protokol Syslog dan bagaimana transisi dari syslogd (pada sistem lama) ke journalctl yang didukung oleh systemd pada sistem terbaru.
Jenis Pencatatan Log Linux
Saat menangani logging Linux, ada beberapa dasar yang perlu Anda pahami sebelum mengetikkan perintah apa pun di terminal.
Di Linux, Anda memiliki dua jenis mekanisme pencatatan:
- Pencatatan log kernel :terkait dengan kesalahan, peringatan, atau entri informasi yang mungkin ditulis oleh kernel Anda;
- Pencatatan log pengguna :ditautkan ke ruang pengguna, entri log tersebut terkait dengan proses atau layanan yang mungkin berjalan di mesin host.
Dengan membagi logging menjadi dua kategori, kami pada dasarnya mengungkap bahwa memori itu sendiri dibagi menjadi dua kategori di Linux:ruang pengguna dan ruang kernel .
Pencatatan Kernel
Mari kita mulai terlebih dahulu dengan logging yang terkait dengan ruang kernel yang juga dikenal sebagai logging Kernel.
Pada ruang kernel, logging dilakukan melalui Kernel Ring Buffer.
Buffer ring kernel adalah buffer melingkar yang merupakan struktur data pertama yang menyimpan pesan log saat sistem melakukan booting.
Saat Anda memulai mesin Linux Anda, jika pesan log ditampilkan di layar, pesan tersebut disimpan di buffer ring kernel.
Logging Kernel dimulai sebelum login pengguna (dikelola oleh daemon syslog atau oleh rsyslog pada distribusi terbaru).
Buffer ring kernel, seperti halnya file log lainnya di sistem Anda, dapat diperiksa.
Untuk membuka log terkait Kernel di sistem Anda, Anda harus menggunakan "dmesg ” perintah.
Catatan :Anda perlu menjalankan perintah ini sebagai root atau memiliki hak istimewa untuk memeriksa buffer ring kernel.
$ dmesg
Seperti yang Anda lihat, dari boot sistem hingga saat Anda menjalankan perintah, kernel melacak semua tindakan, peringatan, atau kesalahan yang mungkin terjadi di ruang kernel.
Jika sistem Anda mengalami masalah dalam mendeteksi atau memasang disk, mungkin di sinilah Anda ingin memeriksa kesalahannya.
Seperti yang Anda lihat, perintah dmesg adalah antarmuka yang cukup bagus untuk melihat log kernel, tetapi bagaimana perintah dmesg mencetak kembali hasil tersebut kepada Anda?
Untuk mengungkap berbagai mekanisme yang digunakan, mari kita lihat proses dan perangkat mana yang menangani logging Kernel .
Internal Logging Kernel
Seperti yang mungkin Anda dengar sebelumnya, di Linux, semuanya adalah file.
Jika semuanya adalah file, itu juga berarti bahwa perangkat adalah file.
Di Linux, buffer ring kernel diwujudkan oleh file perangkat karakter di direktori /dev dan diberi nama kmsg.
$ ls -l /dev/ | grep kmsg
Jika kita menggambarkan hubungan antara perangkat kmsg dan buffer ring kernel, ini adalah bagaimana kita akan merepresentasikannya.
Seperti yang Anda lihat, perangkat kmsg adalah abstraksi digunakan untuk membaca dan menulis ke buffer ring kernel.
Pada dasarnya Anda dapat melihatnya sebagai titik masuk untuk proses ruang pengguna untuk menulis ke buffer ring kernel.
Namun, diagram yang ditunjukkan di atas tidak lengkap karena satu file khusus digunakan oleh kernel untuk membuang informasi log kernel ke sebuah file.
Jika kami meringkasnya, kami pada dasarnya akan menyatakan bahwa perangkat virtual kmsg bertindak sebagai titik masuk untuk buffer ring kernel saat output dari proses ini (baris log) dicetak ke file /proc/kmsg.
File ini dapat diuraikan hanya dengan satu proses tunggal yang sebagian besar waktu utilitas logging digunakan pada ruang pengguna. Pada beberapa distribusi, dapat berupa syslogd, tetapi pada distribusi yang lebih baru terintegrasi dengan rsyslog.
Utilitas rsyslog memiliki satu set modul tertanam yang akan mengarahkan log kernel ke file khusus pada sistem file.
Secara historis, log kernel diambil oleh klogd daemon pada sistem sebelumnya tetapi telah digantikan oleh rsyslog di sebagian besar distribusi.
Di satu sisi, Anda memiliki utilitas logging yang membaca dari buffer cincin tetapi Anda juga memiliki program ruang pengguna yang menulis ke buffer cincin :systemd (dengan systemd-journal yang terkenal) pada distribusi terbaru misalnya.
Sekarang setelah Anda mengetahui lebih banyak tentang logging Kernel, mari kita lihat bagaimana logging dilakukan di ruang pengguna.
Pencatatan sisi pengguna dengan Syslog
Masuk ke ruang pengguna sangat berbeda dengan masuk ke ruang kernel.
Di sisi pengguna, pencatatan didasarkan pada protokol Syslog .
Syslog digunakan sebagai standar untuk menghasilkan, meneruskan, dan mengumpulkan log yang dihasilkan pada instance Linux.
Syslog mendefinisikan tingkat keparahan serta tingkat fasilitas yang membantu pengguna memiliki pemahaman yang lebih baik tentang log yang dihasilkan di komputer mereka.
Log nantinya dapat dianalisis dan divisualisasikan pada server yang disebut sebagai server Syslog.
Singkatnya, protokol Syslog adalah protokol yang digunakan untuk mendefinisikan pesan log yang diformat, dikirim dan diterima pada sistem Unix.
Syslog dikenal untuk mendefinisikan format syslog yang mendefinisikan format yang perlu digunakan oleh aplikasi untuk mengirim log.
Format ini terkenal karena mendefinisikan dua istilah penting :fasilitas dan prioritas .
Penjelasan Fasilitas Syslog
Singkatnya, tingkat fasilitas digunakan untuk menentukan program atau bagian dari sistem yang menghasilkan log.
Pada sistem Linux Anda, banyak utilitas dan program yang berbeda mengirimkan log. Untuk menentukan proses mana yang mengirim log di tempat pertama, Syslog mendefinisikan nomor, nomor fasilitas, yang digunakan oleh program untuk mengirim log Syslog.
Ada lebih dari 23 fasilitas Syslog berbeda yang dijelaskan dalam tabel di bawah ini.
Kode Numerik | Kata Kunci | Nama fasilitas |
0 | keren | Pesan kernel |
1 | pengguna | Pesan tingkat pengguna |
2 | surat | Sistem surat |
3 | daemon | Daemon Sistem |
4 | aut | Pesan keamanan |
5 | syslog | Pesan syslogd |
6 | lpr | Subsistem printer baris |
7 | berita | Subsistem berita jaringan |
8 | uucp | Subsistem UUCP |
9 | cron | Daemon jam |
10 | authpriv | Pesan keamanan |
11 | ftp | Daemon FTP |
12 | ntp | Subsistem NTP |
13 | keamanan | Audit log keamanan |
14 | konsol | Peringatan log konsol |
15 | solaris-cron | Log penjadwalan |
16-23 | lokal0 ke lokal7 | Fasilitas yang digunakan secara lokal |
Sebagian besar fasilitas tersebut dicadangkan untuk proses sistem (seperti server email jika Anda memilikinya atau utilitas cron). Beberapa di antaranya (dari fasilitas nomor 16 hingga 23) dapat digunakan oleh klien Syslog khusus atau program pengguna untuk mengirim log.
Prioritas Syslog Dijelaskan
Tingkat keparahan Syslog digunakan untuk seberapa parah peristiwa log dan berkisar dari debug, pesan informasional hingga tingkat darurat.
Sama halnya dengan tingkat fasilitas Syslog, tingkat keparahan dibagi ke dalam kategori numerik mulai dari 0 hingga 7, 0 sebagai tingkat darurat paling kritis .
Sekali lagi, berikut adalah tabel untuk semua tingkat prioritas yang tersedia dengan Syslog.
Berikut adalah tingkat keparahan syslog yang dijelaskan dalam tabel:
Nilai | Keparahan | Kata Kunci |
0 | Darurat | emerg |
1 | Peringatan | alert |
2 | Kritis | crit |
3 | Kesalahan | err |
4 | Peringatan | alert |
5 | Pemberitahuan | notice |
6 | Informasi | info |
7 | Debug | debug |
Arsitektur Syslog
Syslog juga mendefinisikan beberapa istilah teknis yang digunakan untuk membangun arsitektur sistem logging :
- Pembuat :juga dikenal sebagai "klien Syslog", pencetus bertanggung jawab untuk mengirim pesan berformat Syslog melalui jaringan atau ke aplikasi yang benar;
- Relai :relai digunakan untuk meneruskan pesan melalui jaringan. Relai dapat mengubah pesan untuk memperkayanya misalnya (contoh terkenal termasuk Logstash atau fasih);
- Kolektor :juga dikenal sebagai “server Syslog”, pengumpul digunakan untuk menyimpan, memvisualisasikan, dan mengambil log dari beberapa aplikasi. Kolektor dapat menulis log ke berbagai macam keluaran yang berbeda:file lokal, database, atau cache.
Seperti yang Anda lihat, protokol Syslog mengikuti arsitektur client-server kita telah melihat di tutorial sebelumnya.
Satu klien Syslog membuat pesan dan mengirimkannya ke relai lokal atau jauh opsional yang dapat ditransfer lebih lanjut ke server Syslog.
Sekarang setelah Anda mengetahui bagaimana protokol Syslog diarsitektur, bagaimana dengan sistem Linux kita sendiri?
Apakah mengikuti arsitektur ini?
Arsitektur Lokal Lokal Linux
Masuk ke sistem Linux lokal mengikuti prinsip persis yang telah kami jelaskan sebelumnya.
Tanpa basa-basi lagi, berikut adalah arsitektur logging pada sistem Linux (pada distribusi terbaru)
Mengikuti arsitektur originator-relay-collector yang dijelaskan sebelumnya, dalam kasus sistem Linux lokal :
- Originator adalah aplikasi klien yang mungkin menyematkan pustaka syslog atau journal untuk mengirim log;
- Tidak ada relai yang diterapkan secara default secara lokal;
- Kolektor adalah rsyslog dan daemon journald mendengarkan pada soket yang telah ditentukan untuk log masuk.
Jadi di mana log disimpan setelah diterima oleh pengumpul?
Lokasi File Log Linux
Pada sistem Linux Anda, log disimpan di /var/log direktori.
Log di direktori /var/log dibagi menjadi fasilitas Syslog yang kita lihat sebelumnya diikuti dengan akhiran log :auth.log, daemon.log, kern.log atau dpkg.log.
Jika Anda memeriksa file auth.log, Anda akan disajikan dengan log yang terkait dengan otentikasi dan otorisasi pada sistem Linux Anda.
Demikian pula, file cron.log menampilkan informasi yang terkait dengan layanan cron di sistem Anda.
Namun, seperti yang Anda lihat dari diagram di atas, ada koeksistensi dua sistem logging yang berbeda di server Linux Anda:rsyslog dan systemd-journal.
Rsyslog dan systemd-journal koeksistensi
Secara historis, daemon bertanggung jawab untuk mengumpulkan log dari aplikasi Anda di Linux.
Pada banyak distribusi lama, tugas ini diberikan ke daemon bernama syslogd tetapi digantikan dalam distribusi terbaru oleh daemon rsyslog .
Ketika systemd menggantikan proses init yang ada pada distribusi terbaru, ia datang dengan caranya sendiri untuk mengambil dan menyimpan log :systemd-journal.
Sekarang, kedua sistem tersebut berdampingan tetapi koeksistensi mereka dianggap kompatibel dengan cara log dulu diarsitektur di masa lalu.
Perbedaan utama antara rsyslog dan systemd-journal adalah bahwa rsyslog akan menyimpan log ke dalam file log yang tersedia di /var/log sementara journald tidak menyimpan data kecuali jika dikonfigurasi untuk melakukannya.
Lokasi File Log Jurnal
Seperti yang Anda pahami dari bagian terakhir, systemd-journal utilitas juga melacak aktivitas logging di sistem Anda.
Beberapa aplikasi yang dikonfigurasi sebagai layanan (Server HTTP Apache misalnya) dapat berbicara langsung ke jurnal systemd.
Jurnal systemd menyimpan log secara terpusat adalah /run/log/journal direktori.
File log disimpan sebagai file biner oleh systemd, jadi Anda tidak akan dapat memeriksa file menggunakan perintah cat or less biasa.
Sebagai gantinya, Anda ingin menggunakan “journalctl ” perintah untuk memeriksa file log yang dibuat oleh systemd-journal.
$ journalctl
Ada banyak opsi berbeda yang dapat Anda gunakan dengan journalctl, tetapi sebagian besar waktu Anda ingin tetap menggunakan opsi “-r” dan “-u”.
Untuk melihat entri jurnal terbaru, gunakan “journalctl ” dengan “-r ” pilihan.
$ journalctl -r
Jika Anda ingin melihat log yang terkait dengan layanan tertentu , gunakan opsi “-u” dan tentukan nama layanannya.
$ journalctl -u <service>
Misalnya, untuk melihat log yang terkait dengan layanan SSH, jalankan perintah berikut
$ journalctl -u ssh
Sekarang setelah Anda melihat bagaimana Anda dapat membaca file konfigurasi, mari kita lihat bagaimana Anda dapat dengan mudah mengonfigurasi utilitas logging Anda.
Konfigurasi Pencatatan Log Linux
Seperti yang mungkin Anda pahami dari bagian sebelumnya, logging Linux didasarkan pada dua komponen penting:rsyslog dan systemd-journal.
Masing-masing dari utilitas tersebut memiliki file konfigurasinya sendiri dan kita akan melihat di bab berikut bagaimana mereka dapat dikonfigurasi.
Konfigurasi jurnal sistem
File konfigurasi untuk jurnal systemd terletak di /etc/systemd direktori.
$ sudo vi /etc/systemd/journald.conf
File bernama “journald.conf ” digunakan untuk mengonfigurasi daemon jurnal pada distribusi terbaru.
Salah satu opsi terpenting dalam konfigurasi jurnal adalah “Penyimpanan ” parameter.
Seperti sebelumnya, file jurnal tidak disimpan di sistem Anda dan akan hilang saat restart berikutnya.
Untuk membuat log jurnal Anda persisten, pastikan untuk mengubah parameter ini menjadi “persistent” dan memulai ulang daemon jurnal sistem Anda.
Untuk memulai ulang daemon jurnal, gunakan perintah “systemctl” dengan opsi “restart” dan tentukan nama layanannya.
$ sudo systemctl restart systemd-journald
Akibatnya, log jurnal akan disimpan ke dalam direktori /var/log/journal di sebelah file log rsyslog.
$ ls -l /var/log/journal
Jika Anda penasaran dengan konfigurasi systemd-journal, pastikan untuk membaca dokumentasi yang disediakan oleh FreeDesktop.
Konfigurasi Rsyslog
Di sisi lain, layanan rsyslog dapat dikonfigurasi melalui /etc/rsyslog.conf file konfigurasi.
$ sudo vi /etc/rsyslog.conf
Seperti yang ditentukan sebelumnya, rsyslog pada dasarnya adalah pengumpul Syslog tetapi konsep utama yang harus Anda pahami adalah bahwa Rsyslog bekerja dengan modul.
Arsitektur modularnya menyediakan plugin seperti cara asli untuk mentransfer log ke file, shell, database, atau soket.
Bekerja dengan rsyslog, ada dua bagian utama yang perlu Anda perhatikan:modul dan aturan .
Rsyslog Modul
Secara default, dua modul diaktifkan di sistem Anda:imuxsock (mendengarkan di soket syslog) dan imjournal (pada dasarnya meneruskan log jurnal ke rsyslog).
Catatan :imklog (bertanggung jawab untuk mengumpulkan log Kernel) mungkin juga diaktifkan.
Aturan Rsyslog
Aturan bagian rsyslog mungkin yang paling penting.
Di rsyslog, tetapi Anda dapat menemukan prinsip yang sama pada distribusi lama dengan systemd, bagian aturan menentukan log mana yang harus disimpan ke sistem file Anda tergantung pada fasilitas dan prioritasnya.
Sebagai contoh, mari kita ambil file konfigurasi rsyslog berikut.
Kolom pertama menjelaskan aturan yang diterapkan :di sisi kiri titik, Anda menentukan fasilitas dan di sisi kanan keparahan .
Simbol wildcard “*” berarti berfungsi untuk semua tingkat keparahan.
Akibatnya, jika Anda ingin mengubah konfigurasi logging Anda secara berurutan, katakan misalnya bahwa Anda hanya tertarik pada tingkat keparahan tertentu, ini adalah file yang akan Anda ubah.
Utilitas Pemantauan Log Linux
Di bagian sebelumnya, kita telah melihat bagaimana Anda dapat dengan mudah mengkonfigurasi utilitas logging Anda, tetapi utilitas apa yang dapat Anda gunakan untuk membaca log Linux Anda dengan mudah?
Cara termudah untuk membaca dan memantau log Linux Anda adalah dengan menggunakan perintah tail dengan opsi “-f” untuk diikuti.
$ tail -f <file>
Misalnya, untuk membaca log yang ditulis dalam file auth.log, Anda akan menjalankan perintah berikut.
$ tail -f /var/log/auth.log
Cara hebat lainnya untuk membaca log Linux adalah dengan menggunakan aplikasi grafis jika Anda menjalankan lingkungan desktop Linux.
“Log ” aplikasi adalah aplikasi grafis yang dirancang untuk membuat daftar aplikasi dan log sistem yang dapat disimpan dalam berbagai file log (baik di rsyslog atau journal).
Utilitas Pencatatan Log Linux
Sekarang setelah Anda melihat bagaimana logging dapat dikonfigurasi pada sistem Linux, mari kita lihat beberapa utilitas yang dapat Anda gunakan jika Anda ingin mencatat pesan.
Menggunakan pencatat data
Pencatat utilitas mungkin adalah salah satu klien log yang paling sederhana untuk digunakan.
Logger digunakan untuk mengirim pesan log ke log sistem dan dapat dieksekusi menggunakan sintaks berikut.
$ logger <options> <message>
Katakanlah misalnya Anda ingin mengirim pesan darurat dari fasilitas auth ke utilitas rsyslog Anda, Anda akan menjalankan perintah berikut.
$ logger -p auth.emerg "Somebody tried to connect to the system"
Sekarang jika Anda memeriksa file /var/log/auth.log, Anda akan dapat menemukan pesan yang baru saja Anda login ke server rsyslog.
$ tail -n 10 /var/log/auth.log | grep --color connect
Logger sangat berguna ketika digunakan dalam skrip Bash misalnya.
Tetapi bagaimana jika Anda ingin mencatat file menggunakan systemd-journal?
Menggunakan systemd-cat
Untuk mengirim pesan ke jurnal systemd, Anda harus menggunakan perintah “systemd-cat” dan menentukan perintah yang ingin Anda jalankan.
$ systemd-cat <command> <arguments>
Jika Anda ingin mengirim output dari perintah "ls -l" ke jurnal, Anda akan menulis perintah berikut
$ systemd-cat ls -l
Dimungkinkan juga untuk mengirim log "teks biasa" ke jurnal dengan menyalurkan perintah echo ke utilitas systemd-cat.
$ echo "This is a message to journald" | systemd-cat
Menggunakan dinding
Perintah wall tidak terkait langsung dengan utilitas logging tetapi bisa sangat berguna untuk administrasi sistem Linux.
Perintah dinding digunakan untuk mengirim pesan ke semua pengguna yang masuk.
$ wall -n <message>
Jika Anda misalnya menulis pesan ke semua pengguna yang masuk untuk memberi tahu mereka tentang reboot server berikutnya, Anda akan menjalankan perintah berikut.
$ wall -n "Server reboot in five minutes, close all important applications"
Kesimpulan
Dalam tutorial ini, Anda mempelajari lebih lanjut tentang pencatatan log Linux :bagaimana arsitekturnya dan bagaimana komponen logging yang berbeda (yaitu rsyslog dan jurnal ) berinteraksi bersama.
Anda mempelajari lebih lanjut tentang protokol Syslog dan bagaimana pengumpul dapat dikonfigurasi untuk mencatat peristiwa tertentu di sistem Anda.
Pencatatan log Linux adalah topik yang luas dan ada banyak topik lain untuk Anda jelajahi tentang subjek ini.
Tahukah Anda bahwa Anda dapat membangun sistem logging terpusat untuk memantau log di banyak mesin?
Jika Anda tertarik dengan logging terpusat, pastikan untuk membaca panduan kami!
Juga, jika Anda tertarik dengan administrasi sistem Linux, kami memiliki bagian lengkap yang didedikasikan untuk itu di situs web, jadi pastikan untuk memeriksanya!