GNU/Linux >> Belajar Linux >  >> Linux

Panduan Pemula untuk Syslogs di Linux

Selama beberapa dekade, logging Linux telah dikelola oleh daemon syslogd.

Syslogd akan mengumpulkan pesan log yang diproses sistem dan aplikasi yang dikirim ke perangkat semu /dev/log. Kemudian akan mengarahkan pesan ke file log teks biasa yang sesuai di direktori /var/log/.

Syslogd akan tahu ke mana harus mengirim pesan karena masing-masing menyertakan header yang berisi bidang metadata (termasuk stempel waktu, serta asal dan prioritas pesan).

Setelah sistemd yang tak kenal lelah, raksasa yang menaklukkan dunia, logging Linux sekarang juga ditangani oleh journald. Saya katakan juga karena syslogd belum kemana-mana, dan Anda masih dapat menemukan sebagian besar file log tradisionalnya di /var/log/. Tetapi Anda perlu menyadari bahwa ada sheriff baru di kota yang (baris perintah) namanya journalctl.

Tapi artikel ini bukan tentang journald. Fokus di sini adalah pada systemd jadi mari kita gali lebih dalam.

Masuk dengan syslogd

Semua log yang dihasilkan oleh peristiwa pada sistem syslogd ditambahkan ke file /var/log/syslog. Namun, tergantung pada karakteristik pengenalnya, mereka mungkin juga dikirim ke satu atau beberapa file lain di direktori yang sama.

Dengan syslogd, cara pesan didistribusikan ditentukan oleh isi 50-default.conf file yang berada di /etc/rsyslog.d/ direktori.

Contoh ini dari 50-default.conf menunjukkan bagaimana pesan log yang ditandai sebagai terkait cron akan ditulis ke file cron.log. Dalam hal ini, tanda bintang (*) memberi tahu syslogd untuk mengirim entri dengan tingkat prioritas apa pun (sebagai lawan dari satu tingkat seperti emerg atau err):

cron.*     /var/log/cron.log

Bekerja dengan file log syslogd tidak memerlukan alat khusus seperti journalctl. Tetapi jika Anda ingin mahir dalam hal ini, Anda harus mengetahui jenis informasi apa yang disimpan di setiap file log standar.

Tabel di bawah ini mencantumkan file log syslogd yang paling umum dan
tujuan mereka.

Nama file Tujuan
auth.log Autentikasi sistem dan peristiwa keamanan
boot.log Catatan peristiwa terkait boot
dmesg Kejadian buffer ring-kernel yang terkait dengan driver perangkat
dpkg.log Acara pengelolaan paket perangkat lunak
kern.log Kejadian kernel Linux
syslog Koleksi semua log
wtmp Melacak sesi pengguna (diakses melalui siapa dan perintah terakhir)

Selain itu, aplikasi individual terkadang akan menulis ke file log mereka sendiri. Anda juga akan sering melihat seluruh direktori seperti /var/log/Apache2/ atau /var/log/mysql/ dibuat untuk menerima data aplikasi.

Pengalihan log juga dapat dikontrol melalui salah satu dari delapan tingkat prioritas, selain simbol * (untuk semua tingkat prioritas) yang Anda lihat sebelumnya.

Level Deskripsi
debug Bermanfaat untuk debugging
info Informasi
pemberitahuan Kondisi normal
peringatkan Kondisi yang memerlukan peringatan
salah Kondisi kesalahan
kritik Kondisi kritis
peringatan Diperlukan tindakan segera
muncul Sistem tidak dapat digunakan

Mengelola file log dengan sysglogd

Secara default, syslogd menangani rotasi, kompresi, dan penghapusan log di belakang layar tanpa bantuan apa pun dari Anda. Tetapi Anda harus tahu bagaimana melakukannya jika Anda memiliki log yang memerlukan perlakuan khusus.

Perlakuan khusus seperti apa yang dibutuhkan oleh log sederhana? Nah, misalkan perusahaan Anda harus mematuhi aturan pelaporan transaksi yang terkait dengan peraturan atau standar industri seperti Sarbanes-Oxley atau PCI-DSS. Jika catatan infrastruktur TI Anda harus tetap dapat diakses untuk jangka waktu yang lebih lama, maka Anda pasti menginginkannya
untuk mengetahui cara menemukan jalan Anda melalui file-file kunci.

Untuk melihat sistem logrotate beraksi, buat daftar beberapa isi direktori /var/log/. File auth.log, misalnya, muncul dalam tiga format berbeda:

  • auth.log - Versi yang saat ini aktif, dengan pesan autentikasi baru yang sedang ditulis.
  • auth.log.1 - File terbaru yang telah dirotasi keluar dari layanan. Ini dipertahankan dalam format yang tidak terkompresi untuk mempermudah memanggilnya kembali dengan cepat jika diperlukan.
  • auth.log.2.gz - Koleksi lama (seperti yang Anda lihat dari ekstensi file .gz dalam daftar berikut) yang telah dikompres untuk menghemat ruang.

Setelah tujuh hari, ketika tanggal rotasi berikutnya tiba, auth.log.2.gz akan diganti namanya menjadi auth.log.3.gz, auth.log.1 akan dikompresi dan diganti namanya menjadi auth.log.2.gz, auth.log akan menjadi auth.log.1, dan file baru akan dibuat dan diberi nama auth.log.

Siklus rotasi log default dikendalikan dalam file /etc/logrotate.conf. Nilai yang diilustrasikan dalam daftar ini merotasi file setelah satu minggu aktif dan menghapus file lama setelah empat minggu.

# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# packages drop log rotation information into this directory
include /etc/logrotate.

Direktori /etc/logrotate.d/ juga berisi file konfigurasi yang disesuaikan untuk mengelola rotasi log dari masing-masing layanan atau aplikasi. Daftar isi direktori itu, Anda melihat file konfigurasi ini:

$ ls /etc/logrotate.d/
apache2 apt dpkg mysql-server
rsyslog
samba
unattended-upgrade

Anda dapat melihat konten mereka untuk melihat jenis konfigurasi yang mereka miliki pada rotasi log.

Banyak admin memilih untuk mengalihkan entri log ke server log jarak jauh yang dibuat khusus di mana data dapat menerima semua perhatian khusus yang layak. Ini dapat membebaskan server aplikasi untuk tugas-tugas langsung mereka dan mengkonsolidasikan data log di satu lokasi pusat yang mudah diakses.

Cara membaca file syslog

Anda tahu bahwa Anda memiliki hal-hal yang lebih baik untuk dilakukan dengan waktu Anda daripada membaca jutaan baris entri log.

Menggunakan cat harus dihindari sepenuhnya di sini. Ini hanya akan membuang ribuan baris di layar Anda.

Saya sarankan menggunakan grep untuk memfilter teks melalui file.

Menggunakan perintah tail -f memungkinkan Anda membaca file log saat ini secara real time. Anda dapat menggabungkannya dengan grep untuk memfilter teks yang diinginkan.

Dalam beberapa kasus, Anda mungkin perlu mengakses log lama yang dikompresi. Anda selalu dapat mengekstrak file terlebih dahulu dan kemudian menggunakan grep, less dan perintah lain untuk membaca kontennya, namun, ada opsi yang lebih baik. Ada perintah z seperti zcat, zless dll yang memungkinkan Anda mengerjakan file terkompresi tanpa mengekstraknya secara eksplisit.

Contoh praktis analisis log

Berikut adalah contoh nyata yang akan mencari melalui file auth.log untuk bukti upaya login yang gagal. Mencari kata gagal akan
kembalikan baris apa pun yang berisi kegagalan otentikasi frasa.

Memeriksa ini sesekali dapat membantu Anda menemukan upaya untuk menyusup ke akun dengan menebak kata sandi yang benar. Siapa pun dapat mengacaukan sandi sekali atau dua kali, tetapi terlalu banyak upaya yang gagal akan membuat Anda curiga:

$ cat /var/log/auth.log | grep 'Authentication failure'
Sep 6 09:22:21 workstation su[21153]: pam_authenticate: Authentication failure

Jika Anda adalah tipe admin yang tidak pernah membuat kesalahan, maka pencarian ini mungkin akan kosong. Anda dapat menjamin diri Anda sendiri setidaknya satu hasil dengan membuat entri log secara manual menggunakan program yang disebut logger. Cobalah melakukan sesuatu seperti ini:

logger "Authentication failure"

Anda juga dapat membuat kesalahan awal dengan masuk ke akun pengguna dan memasukkan kata sandi yang salah.

Seperti yang Anda tahu, grep melakukan pekerjaan untuk Anda, tetapi semua yang dapat Anda lihat dari hasilnya adalah bahwa ada kegagalan otentikasi. Bukankah berguna untuk mengetahui akun siapa yang terlibat? Anda dapat memperluas hasil yang dikembalikan grep dengan menyuruhnya memasukkan baris segera sebelum dan sesudah pertandingan.

Contoh ini mencetak kecocokan bersama dengan garis di sekitarnya. Ini memberitahu Anda bahwa seseorang yang menggunakan akun david mencoba gagal menggunakan su (ganti pengguna) untuk masuk ke akun studio:

$ cat /var/log/auth.log | grep -C1 failure
Sep 6 09:22:19 workstation su[21153]: pam_unix(su:auth): authentication
failure; logname= uid=1000 euid=0 tty=/dev/pts/4 ruser=david rhost=
user=studio
Sep 6 09:22:21 workstation su[21153]: pam_authenticate:
Authentication failure
Sep 6 09:22:21 workstation su[21153]: FAILED su for studio by david

Apa selanjutnya?

Mengetahui dasar-dasar adalah satu hal dan menerapkan pengetahuan adalah hal yang berbeda. Namun, pengetahuan tentang dasar-dasar membantu dalam berbagai situasi.

Sekarang setelah Anda mengetahui esensi syslog di Linux, Anda mungkin memiliki waktu yang sedikit lebih baik saat menangani log.

Artikel ini adalah kutipan dari buku Linux in Action oleh David Clinton. Ini diterbitkan oleh Manning Publication dan Anda bisa mendapatkan diskon 30% di semua buku Manning menggunakan kode nlitsfoss22 saat checkout.

Linux dalam Buku Aksi

Selamat belajar Linux.


Linux
  1. Panduan pemula untuk melongo

  2. Panduan Lengkap Pemula untuk LVM di Linux

  3. Cara Mengatasi Masalah Performa di Linux – Panduan Pemula

  1. Dasar-dasar Linux:Panduan pemula untuk mengedit teks dengan vim

  2. Panduan pemula untuk firewalld di Linux

  3. File log Linux

  1. Panduan pemula untuk izin Linux

  2. Cara Menggunakan Perintah Temukan dan Temukan Di Linux:Panduan Pemula

  3. Layanan OS Linux 'syslog'