Meneruskan Log Apache ke Server Log Terpusat dengan Rsyslog

Memusatkan log dari berbagai server web Apache Anda ke satu lokasi terpusat sangat penting untuk kemudahan pemantauan, analisis keamanan, dan pemecahan masalah yang cepat. Dengan semua log terkumpul di satu tempat, Anda tidak perlu lagi login ke setiap server secara terpisah hanya untuk melihat apa yang terjadi. Ini menghemat waktu dan menyederhanakan pengelolaan infrastruktur web Anda. Salah satu cara paling efektif untuk melakukan ini adalah dengan menggunakan Rsyslog, sebuah utilitas sistem logging yang kuat dan fleksibel.

Kenapa Perlu Memusatkan Log Apache?

Dalam lingkungan yang memiliki banyak server web, mengelola file log di setiap server bisa sangat merepotkan. Log Apache (access.log dan error.log) berisi informasi berharga tentang permintaan ke server, kesalahan, dan aktivitas pengunjung. Dengan menggabungkannya ke satu server log pusat, Anda bisa:

  • Memonitor lalu lintas dan performa semua situs web dari satu dashboard.
  • Melakukan analisis keamanan terpusat untuk mendeteksi pola serangan atau anomali.
  • Mempercepat proses debug dan mencari akar masalah ketika terjadi kendala.
  • Memastikan kepatuhan peraturan dengan menyimpan log di lokasi yang aman dan terpusat.

Langkah Konfigurasi Rsyslog di Server Log Pusat

Pertama, siapkan server log pusat Anda. Di server ini, Anda perlu mengonfigurasi Rsyslog untuk mendengarkan koneksi dari server-server web lain. Buka file konfigurasi utama Rsyslog, biasanya terletak di /etc/rsyslog.conf atau file terpisah di direktori /etc/rsyslog.d/.

Aktifkan modul penerima (receiver module) untuk TCP dan/atau UDP, tergantung protokol yang ingin Anda gunakan untuk mengirim log. TCP lebih handal karena memastikan pengiriman data, sementara UDP lebih cepat tetapi bisa kehilangan paket. Untuk keandalan, TCP sering disukai.

Cari baris seperti ini (mungkin dikomentari dengan #):

#module(load="imudp")
#input(type="imudp" port="514")

#module(load="imtcp")
#input(type="imtcp" port="514")

Hilangkan tanda # di depan baris yang sesuai untuk mengaktifkan modul TCP dan port standar 514.

Selanjutnya, tentukan bagaimana log yang masuk dari server web akan disimpan. Anda bisa mengarahkannya ke file terpisah berdasarkan nama host pengirim. Tambahkan aturan di file konfigurasi Anda, misalnya:

$template ApacheLogs,"/var/log/%HOSTNAME%/apache_logs.log"
if $programname == 'apache' then ?ApacheLogs
& stop

Ini akan menyimpan semua log yang ditandai dengan nama program apache ke dalam file /var/log/nama_host_pengirim/apache_logs.log. Pastikan direktori /var/log/%HOSTNAME% ada atau buat skrip untuk membuatnya secara otomatis. Jangan lupa restart layanan rsyslog setelah perubahan konfigurasi. Pastikan juga firewall di server log pusat mengizinkan koneksi masuk di port 514.

Mengatur Rsyslog Client di Server Web

BACA JUGA:  Xnec2c – Simulasi Antena NEC2 dengan Tampilan Grafis

Di setiap server web yang menjalankan Apache, Anda perlu mengonfigurasi Rsyslog agar mengirim log ke server log pusat. Edit file konfigurasi Rsyslog client, biasanya /etc/rsyslog.conf atau file di /etc/rsyslog.d/.

Tambahkan baris di akhir file untuk mengarahkan semua log dari fasilitas local.* (tempat log Apache akan diarahkan) ke server log pusat Anda. Ganti alamat_ip_server_log_pusat dengan IP atau hostname server log Anda.

local.* @alamat_ip_server_log_pusat:514  # Untuk UDP
local.* @@alamat_ip_server_log_pusat:514 # Untuk TCP

Gunakan satu @ untuk UDP atau dua @@ untuk TCP. Jika Anda menggunakan TCP, pastikan port 514 terbuka dari server web ke server log pusat. Restart layanan rsyslog di server web.

Menyiapkan Format Log Apache untuk Dikirim

Agar log Apache bisa ditangkap oleh Rsyslog client dan dikirim dengan identifikasi yang jelas (seperti nama program apache), Anda perlu sedikit mengubah konfigurasi Apache. Edit file konfigurasi virtual host Apache Anda (biasanya di /etc/apache2/sites-available/ atau /etc/httpd/conf.d/) atau file konfigurasi utama Apache.

Ubah arahan ErrorLog dan CustomLog untuk mengarahkannya ke syslog. Rsyslog client dapat membaca dari named pipe.

Contoh konfigurasi Apache:

# Aktifkan modul mod_syslog jika belum aktif
# LoadModule syslog_module modules/mod_syslog.so # Jika diperlukan

ErrorLog syslog:local6
CustomLog "|/usr/bin/logger -t apache -p local6.info" combined

Di sini, kita mengarahkan ErrorLog ke fasilitas syslog local6. Untuk CustomLog (access log), kita menggunakan utilitas logger untuk mengirim output log standar ke syslog dengan tag apache dan prioritas local6.info. Pastikan fasilitas dan prioritas (local6.info) sesuai dengan apa yang Anda konfigurasi di Rsyslog client jika Anda ingin memfilter log ini secara spesifik. Setelah mengubah konfigurasi Apache, restart layanan Apache.

Verifikasi dan Pengujian

Setelah semua konfigurasi selesai di kedua sisi (server log dan server web), saatnya melakukan pengujian. Muat ulang situs web Anda beberapa kali atau buat beberapa permintaan ke server web Anda. Kemudian, periksa file log di server log pusat Anda (/var/log/nama_host_pengirim/apache_logs.log sesuai contoh konfigurasi server). Anda seharusnya melihat baris-baris log Apache dari server web Anda muncul di sana. Jika tidak muncul, periksa kembali konfigurasi Rsyslog di kedua server, status layanan Rsyslog, dan aturan firewall.

BACA JUGA:  Mengelola Aturan Daerah yang Tumpang Tindih

Sumber: https://kifarunix.com/forward-apache-logs-to-central-log-server-with-rsyslog/