lnav - Menonton dan Menganalisis Log Apache dari Terminal Linux


Kurang dari dua minggu yang lalu, serangan ransomware Wannacry membahayakan ribuan komputer, menyebabkan kerugian besar bagi perusahaan besar dan individu. Hal ini, bersama dengan kerentanan lain yang tersebar luas yang ditemukan dalam beberapa tahun terakhir (seperti bug Shellshock), menyoroti pentingnya menjaga sistem yang penting bagi Anda.

Meskipun kerentanan sering kali menargetkan satu sistem operasi atau komponen perangkat lunak tertentu, memeriksa lalu lintas yang masuk dan keluar dari jaringan Anda dapat sangat membantu melindungi aset yang menjadi tanggung jawab Anda.

Bacaan yang Disarankan: 4 Alat Pemantauan dan Manajemen Log Sumber Terbuka yang Baik untuk Linux

Saya yakin Anda sudah mengetahuinya, log sistem adalah tempat pertama kita harus mencari informasi ini. Untuk mempermudah tugas ini, dalam artikel ini kami akan menjelaskan cara menginstal dan menggunakan lnav, penampil file log tingkat lanjut. Dengan lnav, Anda akan dapat melihat beberapa jenis log secara bersamaan, menavigasi file menggunakan hotkey, dan menghasilkan ringkasan histogram akses dan kesalahan. Jadi teruslah membaca!

Menginstal dan Meluncurkan lnav di Linux

Untuk menginstal lnav, gunakan sistem manajemen paket distribusi Anda.

aptitude install lnav          [Debian and derivatives]
yum install epel-release lnav  [CentOS 7 and similar]

Setelah instalasi selesai, luncurkan lnav diikuti dengan jalur absolut ke direktori tempat log yang akan diperiksa berada. Karena biasanya berupa /var/log, mari kita lakukan:

lnav /var/log/httpd

untuk memeriksa log server web Apache di CentOS 7:

Mari kita periksa secara singkat keluaran yang ditunjukkan pada gambar sebelumnya:

  • Sudut kanan atas menunjukkan file yang sedang diperiksa (access_log-20170519 dan access_log). Saat Anda menggulir ke bawah atau ke atas, Anda akan melihat bahwa nama file dapat berubah seiring Anda berpindah dari satu file ke file lainnya.
  • 40x tanggapan HTTP (misalnya, Tidak Ditemukan atau Dilarang) ditampilkan dalam huruf tebal, sedangkan tanggapan 20x ditampilkan dalam teks biasa.
  • Alamat IP muncul dalam warna hijau tebal.

Tentu saja terlihat bagus, bukan? Tapi mari kita gali lebih dalam sekarang, dan kita akan melihat bahwa lnav memberikan lebih dari sekadar keluaran berwarna-warni.

Jika Anda penasaran mengapa log kesalahan tidak ditampilkan, Anda akan menemukan jawabannya nanti di artikel ini. Jadi teruslah membaca!

Memodifikasi Output dengan Opsi dan Tombol Pintas

Sebelum kita melangkah lebih jauh, mari kita buat daftar beberapa hotkey yang memungkinkan kita menelusuri output lnav dan tampilan yang tersedia dengan lebih mudah:

  • e atau E untuk melompat ke pesan kesalahan berikutnya/sebelumnya.
  • w atau W untuk melompat ke pesan peringatan berikutnya/sebelumnya.
  • b atau Backspace untuk berpindah ke halaman sebelumnya.
  • Ruang untuk pindah ke halaman berikutnya.
  • g atau G untuk berpindah ke atas/bawah tampilan saat ini.

Saat log diputar, file lama mungkin dikompresi (atau tidak) tergantung pada pengaturan yang ditentukan dalam file konfigurasi logrotate. Untuk memasukkan file terkompresi dalam output, luncurkan lnav sebagai berikut:

lnav -r /var/log/httpd

Jika Anda ingin melihat lebih dekat cara kerja lnav, Anda dapat meluncurkan program dengan opsi -d diikuti dengan nama file tempat informasi debug akan ditulis, seperti:

lnav /var/log/httpd -d lnav.txt

Dalam contoh ini, informasi debug yang dihasilkan saat lnav dimulai akan ditulis ke file bernama lnav.txt di dalam direktori kerja saat ini.

Beberapa baris pertama file itu ditunjukkan pada gambar berikut:

Teks yang disorot menunjukkan bahwa lnav memuat file format default dan, lebih khusus lagi, format access_log untuk mengurai log akses Apache. Selain itu, lnav memungkinkan untuk mengurai setiap jalur keluaran sehingga keluaran menjadi lebih mudah untuk divisualisasikan dan dipahami.

Bacaan yang Disarankan: GoAccess (Apache dan Nginx Waktu Nyata) Penganalisis Log Server Web

Untuk menggunakan fitur ini, luncurkan program dan pilih baris yang ingin Anda urai. Baris yang dipilih selalu berada di bagian atas jendela. Lalu tekan p dan Anda akan melihat hasil berikut:

Untuk kembali ke mode normal, tekan p lagi.

Sekarang, jika Anda ingin melihat ringkasan log berdasarkan tanggal dan waktu, tekan i. Misalnya, teks yang disorot menunjukkan bahwa pada hari Senin, 10 April, antara jam 10 dan 11 malam, ada 37 permintaan HTTP dengan 14 permintaan mengakibatkan kesalahan.

Setelah Anda mengidentifikasi potensi masalah berdasarkan histogram seperti gambar di atas, Anda dapat menekan i untuk keluar dari tampilan guna memeriksanya lebih detail menggunakan parser seperti yang dijelaskan sebelumnya. Atau Anda juga dapat menggunakan kemampuan SQL bawaan dengan mengetikkan titik koma dan menulis kueri standar. Misalnya, lakukan:

;.schema

untuk melihat tabel yang tersedia dalam skema database. Setelah mengidentifikasi tabel yang tepat (access_log dalam kasus kita), mari tekan q dan kemudian gunakan kueri berikut untuk mengembalikan semua informasi yang tersedia tentang permintaan yang berasal dari 195.154.230.31:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Perhatikan bahwa kami juga dapat memfilter hasilnya berdasarkan waktu_log. Intinya adalah, masukkan sedikit SQL dan tidak ada batasnya untuk apa yang dapat Anda lakukan dengan lnav.

Format Log Default Apache

Banyak format log dimuat secara default dengan lnav dan karenanya diuraikan tanpa campur tangan kami. Anda dapat melihat daftarnya di bagian Format Log di dokumentasi resmi.

Format default ditentukan dalam ~/.lnav/formats/default/default-formats.json.sample, dan format lainnya dapat ditambahkan ~/.lnav/formats menggunakan < ekstensi.json.

Namun, mengedit file-file ini memerlukan tingkat pemahaman tertentu dengan JSON (Javascript Object Notation) dan perpustakaan PCRE (Perl-Compatible Regular Expressions).

Jadi mengapa lnav tidak menampilkan file log kesalahan Apache? Alasannya adalah bahwa log tersebut tidak cocok dengan ekspresi reguler apa pun dalam format file yang ada, dan karenanya diperlakukan sebagai file teks biasa (artinya file tanpa format log tertentu).

Bacaan yang Disarankan: Cara Memantau Beban Server Web Apache dan Statistik Halaman

Seperti disebutkan sebelumnya, Anda dapat membuat format Anda sendiri setelah Anda setidaknya familiar dengan JSON dan PCRE. Ini bisa berguna, misalnya, jika Anda telah menentukan log Apache khusus.

Ringkasan

Meskipun kami menggunakan log akses Apache untuk mendemonstrasikan cara menggunakan lnav, perlu diingat bahwa ada beberapa jenis log lain yang dapat dilihat dan diurai menggunakan alat ini. Jika alat tidak mengenali log tertentu, Anda dapat membuat format tambahan dan menginstalnya mengikuti indikasi yang diberikan di sini.

Apakah Anda memiliki pertanyaan atau komentar tentang artikel ini? Seperti biasa, jangan ragu untuk memberi tahu kami menggunakan formulir di bawah. Kami menantikan kabar dari Anda!