Cara Mengatur Klien Rsyslog untuk Mengirim Log ke Server Rsyslog di CentOS 7


Manajemen log adalah salah satu komponen terpenting dalam infrastruktur jaringan. Pesan log secara konstan dihasilkan oleh berbagai perangkat lunak sistem, seperti utilitas, aplikasi, daemon, layanan yang terkait dengan jaringan, kernel, perangkat fisik, dan sebagainya.

File log terbukti berguna dalam memecahkan masalah sistem Linux, memantau sistem dan meninjau kekuatan dan masalah keamanan sistem.

Rsyslog adalah program logging Sumber Terbuka, yang merupakan mekanisme logging paling populer di sejumlah besar distribusi Linux. Ini juga merupakan layanan logging default di CentOS 7 atau RHEL 7.

Daemon Rsyslog di CentOS dapat dikonfigurasi untuk dijalankan sebagai server untuk mengumpulkan pesan log dari beberapa perangkat jaringan. Perangkat ini bertindak sebagai klien dan dikonfigurasi untuk mengirimkan log mereka ke server rsyslog.

Namun, layanan Rsyslog juga dapat dikonfigurasi dan dimulai dalam mode klien. Pengaturan ini menginstruksikan daemon rsyslog untuk meneruskan pesan log ke server Rsyslog jarak jauh menggunakan protokol transport TCP atau UDP. Layanan Rsyslog juga dapat dikonfigurasi untuk dijalankan sebagai klien dan server dalam waktu yang bersamaan.

Dalam tutorial ini kami akan menjelaskan cara menyiapkan daemon Rsyslog CentOS/RHEL 7 untuk mengirim pesan log ke server Rsyslog jarak jauh. Pengaturan ini memastikan bahwa ruang disk mesin Anda dapat disimpan untuk menyimpan data lainnya.

Tempat di mana hampir semua file log ditulis secara default di CentOS adalah jalur sistem /var. Disarankan juga untuk selalu membuat partisi terpisah untuk direktori /var, yang dapat dikembangkan secara dinamis, agar tidak menghabiskan partisi /(root).

Klien Rsyslog selalu mengirimkan pesan log dalam bentuk teks biasa, jika tidak ditentukan sebaliknya. Anda tidak boleh menyiapkan klien Rsyslog untuk mengirimkan pesan log melalui Internet atau jaringan yang tidak berada di bawah kendali penuh Anda.

Persyaratan

  1. Prosedur Instalasi CentOS 7.3
  2. RHEL 7.3 Prosedur Instalasi
  3. Konfigurasikan Server Rsyslog di CentOS/RHEL 7

Langkah 1: Verifikasi Instalasi Rsyslog

1. Secara default, daemon Rsyslog sudah terinstal dan berjalan di sistem CentOS 7. Untuk memverifikasi apakah layanan rsyslog ada di sistem, jalankan perintah berikut.

rpm -q | grep rsyslog
rsyslogd -v

2. Jika paket Rsyslog tidak diinstal di CentOS, jalankan perintah di bawah ini untuk menginstal layanan.

yum install rsyslog

Langkah 2: Konfigurasikan Layanan Rsyslog sebagai Klien

3. Untuk menerapkan daemon Rsyslog yang diinstal pada sistem CentOS 7 untuk bertindak sebagai klien log dan merutekan semua pesan log yang dihasilkan secara lokal ke server Rsyslog jarak jauh, modifikasi file konfigurasi rsyslog sebagai berikut:

Pertama buka file konfigurasi utama untuk diedit.

vi /etc/rsyslog.conf

Kemudian, tambahkan baris di bawah ini di akhir file seperti yang diilustrasikan dalam kutipan di bawah ini.

*. *  @192.168.10.254:514

Pada baris di atas pastikan Anda mengganti alamat IP FQDN server rsyslog jarak jauh dengan sesuai. Baris di atas memerintahkan daemon Rsyslog untuk mengirim semua pesan log, terlepas dari fasilitas atau tingkat keparahannya, ke host dengan IP 192.168.10.254 melalui port 514/UDP.

4. Jika server log jarak jauh dikonfigurasi untuk mendengarkan hanya pada koneksi TCP atau Anda ingin menggunakan protokol jaringan transport yang andal, seperti TCP, tambahkan karakter @ lain di depannya dari host jarak jauh seperti yang ditunjukkan pada contoh di bawah ini:

*. *  @@logs.domain.lan:514

Rsyslog Linux juga memungkinkan memiliki beberapa karakter khusus, seperti = atau !, yang dapat diawali dengan tingkat prioritas untuk menunjukkan “hanya prioritas ini ” untuk tanda sama dengan dan “bukan prioritas ini atau lebih tinggi dari ini ”.

Beberapa contoh kualifikasi tingkat prioritas Rsyslog di CentOS 7:

  • kern.info=log kernel dengan prioritas info dan lebih tinggi.
  • kern.=info=hanya pesan kernel dengan prioritas info.
  • kern.info;kern.!err=hanya pesan kernel dengan prioritas info, pemberitahuan, dan peringatan.
  • kern.debug;kern.!=warning=semua prioritas kernel kecuali peringatan.
  • kern.*=semua pesan prioritas kernel.
  • kern.none=jangan mencatat pesan fasilitas kernel apa pun yang terkait, apa pun prioritasnya.

Misalnya, dengan asumsi Anda hanya ingin mengirim pesan fasilitas tertentu ke server log jarak jauh, seperti semua pesan email terkait terlepas dari tingkat prioritasnya, tambahkan baris di bawah ini ke file konfigurasi rsyslog:

mail.* @192.168.10.254:514 

5. Terakhir, untuk menerapkan konfigurasi baru, layanan Rsyslog perlu di-restart agar daemon dapat mengambil perubahan, dengan menjalankan perintah di bawah ini:

systemctl restart rsyslog.service

6. Jika karena alasan tertentu daemon Rsyslog tidak diaktifkan selama waktu boot, jalankan perintah di bawah ini untuk mengaktifkan layanan di seluruh sistem:

systemctl enable rsyslog.service

Langkah 3: Kirim Log Apache dan Nginx ke Server Log Jarak Jauh

7. Server HTTP Apache dapat dikonfigurasi untuk mengirim pesan log ke server syslog jarak jauh dengan menambahkan baris berikut ke file konfigurasi utamanya seperti yang diilustrasikan dalam contoh di bawah.

vi /etc/httpd/conf/httpd.conf

Pada file conf utama Apache tambahkan baris di bawah ini.

CustomLog "| /bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-access.log | /usr/bin/logger -thttpd -plocal1.notice'" combined

Baris ini akan memaksa daemon HTTP untuk menulis pesan log secara internal ke file log sistem file, namun juga memproses pesan lebih jauh melalui utilitas pipa ke logger, yang akan mengirimkannya ke server syslog yang jauh, dengan menandainya sebagai berasal dari local1 fasilitas.

8. Jika Anda juga ingin mengarahkan pesan log kesalahan Apache ke server syslog jarak jauh, tambahkan aturan baru seperti yang disajikan pada contoh di atas, namun pastikan untuk mengganti nama file log httpd dan tingkat keparahan file log agar sesuai dengan prioritas kesalahan, seperti yang ditunjukkan dalam contoh berikut:

ErrorLog "|/bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-error.log | /usr/bin/logger -thttpd -plocal1.err'"

9. Setelah Anda menambahkan baris di atas, Anda perlu memulai ulang daemon Apache untuk menerapkan perubahan, dengan mengeluarkan perintah berikut:

systemctl restart httpd.service                 

10. Pada versi 1.7.1, server web Nginx memiliki kemampuan bawaan untuk langsung mencatat pesannya ke server syslog jarak jauh, dengan menambahkan baris berikut: kode ke file konfigurasi nginx.

error_log syslog:server=192.168.1.10:514,facility=local7,tag=nginx,severity=error;
access_log syslog:server=192.168.10.254:514,facility=local7,tag=nginx,severity=info main;

Untuk server IPv6, gunakan format sintaksis berikut untuk menyertakan alamat IPv6.

access_log syslog:server=[7101:dc7::9]:514,facility=local7,tag=nginx,severity=info;

11. Di server Rsyslog jarak jauh Anda perlu melakukan perubahan berikut pada file konfigurasi rsyslog, untuk menerima log yang dikirim oleh server web Apache.

local1.* @Apache_IP_address:514

Itu saja! Anda telah berhasil mengonfigurasi daemon Rsyslog untuk berjalan dalam mode klien dan, juga, Anda telah menginstruksikan server Apache HTTP atau Nginx untuk meneruskan pesan lognya ke server syslog jarak jauh.

Jika sistem Anda mogok, Anda seharusnya dapat menyelidiki masalahnya dengan memeriksa konten file log yang disimpan di server syslog jarak jauh.