Cara mengatur server logging pusat dengan rsyslog di linux

Cara mengatur server logging pusat dengan rsyslog di linux

Log adalah komponen penting dari perangkat lunak atau sistem operasi apa pun. Log biasanya merekam tindakan pengguna, acara sistem, aktivitas jaringan dan banyak lagi, tergantung pada apa yang dimaksudkan. Salah satu sistem logging yang paling banyak digunakan pada sistem Linux adalah rsyslog.

Rsyslog adalah sistem pemrosesan log yang kuat, aman, dan berkinerja tinggi yang menerima data dari berbagai jenis sumber (sistem/aplikasi) dan mengeluarkannya menjadi beberapa format.

Itu telah berevolusi dari reguler Syslog Daemon ke sistem logging tingkat perusahaan yang berfitur lengkap. Ini dirancang dalam model klien/server, oleh karena itu dapat dikonfigurasi sebagai klien dan/atau sebagai server logging pusat untuk server, perangkat jaringan, dan aplikasi jarak jauh lain.

Lingkungan pengujian

Untuk tujuan panduan ini, kami akan menggunakan host berikut:

  • Server: 192.168.241.140
  • Klien: 172.31.21.58

Cara menginstal dan mengonfigurasi server rsyslog

Sebagian besar distribusi Linux datang dengan rsyslog Paket yang diinstal sebelumnya. Jika tidak diinstal, Anda dapat menginstalnya menggunakan alat Linux Package Manager Anda seperti yang ditunjukkan.

$ sudo yum update && yum install rsyslog #centos 7 $ sudo apt update && apt install rsyslog #ubuntu 16.04, 18.04 

Sekali rsyslog diinstal, Anda perlu memulai layanan untuk saat ini, memungkinkannya untuk memulai secara otomatis saat boot dan periksa statusnya dengan perintah Systemctl.

$ sudo systemctl start rsyslog $ sudo systemctl aktifkan rsyslog $ sudo systemctl status rsyslog 

File konfigurasi rsyslog utama terletak di /etc/rsyslog.conf, yang memuat modul, mendefinisikan arahan global, berisi aturan untuk memproses pesan log dan juga mencakup semua file konfigurasi di /etc/rsyslog.D/ Untuk berbagai aplikasi/layanan.

$ sudo vim /etc /rsyslog.conf 

Secara default, rsyslog menggunakan Imjournal Dan Imusock modul untuk mengimpor pesan log terstruktur dari Jurnal Systemd dan untuk menerima pesan syslog dari aplikasi yang berjalan pada sistem lokal melalui soket UNIX, masing -masing.

Modul rsyslog untuk penebangan

Untuk mengonfigurasi rsyslog sebagai server jaringan/logging pusat, Anda perlu mengatur protokol (entah UDP atau TCP atau keduanya) akan digunakan untuk penerimaan syslog jarak jauh serta port yang didengarkannya.

Jika Anda ingin menggunakan a UDP koneksi, yang lebih cepat tetapi tidak dapat diandalkan, mencari dan membatalkan komentar di bawah ini (ganti 514 Dengan port yang ingin Anda dengarkan, ini harus cocok dengan alamat port yang klien kirim pesan, kami akan melihat ini lebih banyak saat mengkonfigurasi klien rsyslog).

$ Modload imudp $ udpserverrun 514 

Menggunakan TCP Koneksi (yang lebih lambat tetapi lebih dapat diandalkan), cari dan tidak mengkomentasikan baris di bawah ini.

$ Modload imtcp $ inputtcpserverrun 514 

Dalam hal ini, kami ingin menggunakan koneksi UDP dan TCP secara bersamaan.

Konfigurasikan server logging rsyslog

Selanjutnya, Anda perlu mendefinisikan aturan Untuk memproses log jarak jauh dalam format berikut.

fasilitas.Severity_Level Destination (tempat menyimpan log) 

Di mana:

  • fasilitas: adalah jenis proses pembuatan proses/aplikasi, mereka termasuk auth, cron, daemon, kernel, local0… local7. Menggunakan * berarti semua fasilitas.
  • Severity_level: adalah jenis pesan log: emerg-0, peringatan-1, crit-2, err-3, warn-4, note-5, info-6, debug-7. Menggunakan * berarti semua tingkat keparahan dan tidak ada yang menyiratkan tidak ada tingkat keparahan.
  • tujuan: Apakah file lokal atau server rsyslog jarak jauh (ditentukan dalam bentuk IP: port).

Kami akan menggunakan yang berikut aturan untuk mengumpulkan log dari host jarak jauh, menggunakan Remotelogs templat. Perhatikan bahwa aturan ini harus datang sebelum aturan apa pun untuk memproses pesan lokal, seperti yang ditunjukkan pada tangkapan layar.

$ Template Remotelogs, "/var/log/%hostname%/%ProgramName%.catatan" *.* ?Remotelogs & ~ 
Tentukan aturan untuk rsyslog-logging

Melihat hal di atas aturan, Aturan pertama adalah “$ Template Remotelogs,”/var/log/%hostname%/%ProgramName%.catatan"".

Petunjuknya $ template memberi tahu RSyslog Daemon untuk mengumpulkan dan menulis semua pesan jarak jauh yang diterima untuk log yang berbeda di bawah /var/log, berdasarkan nama host (Nama mesin klien) dan fasilitas klien jarak jauh (program/aplikasi) yang menghasilkan pesan sebagaimana didefinisikan oleh pengaturan yang ada dalam templat Remotelogs.

Baris kedua “*.* ?Remotelogs ” berarti merekam pesan dari semua fasilitas di semua tingkat keparahan menggunakan Remotelogs Konfigurasi Template.

Baris terakhir "& ~" menginstruksikan rsyslog untuk berhenti memproses pesan setelah ditulis ke file. Jika Anda tidak memasukkan "& ~", Pesan sebaliknya akan ditulis ke file lokal.

Ada banyak templat lain yang dapat Anda gunakan, untuk informasi lebih lanjut, lihat halaman Rsyslog Configuration Man (Man Rsyslog.conf) atau merujuk ke dokumentasi online rsyslog.

Itu dengan mengkonfigurasi server rsyslog. Simpan dan tutup file konfigurasi. Untuk menerapkan perubahan terbaru, restart daemon rsyslog dengan perintah berikut.

$ sudo systemctl restart rsyslog 

Sekarang verifikasi soket jaringan rsyslog. Menggunakan Perintah SS (atau netstat dengan bendera yang sama) Perintah dan pipa output ke grep untuk memfilter koneksi rsyslogd.

$ sudo ss -tulnp | grep "rsyslog" 
Periksa status jaringan rsyslog

Selanjutnya Centos 7, kalau sudah Selinux Diaktifkan, jalankan perintah berikut untuk memungkinkan lalu lintas rsyslog berdasarkan jenis soket jaringan.

$ sudo semanage -a -t syslogd_port_t -p udp 514 $ sudo semanage -a -t syslogd_port_t -p tcp 514 

Jika sistem memiliki firewall diaktifkan, Anda perlu membuka port 514 untuk mengizinkan keduanya UDP/TCP Koneksi ke server rsyslog, dengan berjalan.

------------- Di Centos ------------- $ sudo firewall-cmd --permanent --add-port = 514/udp $ sudo firewall-cmd --permanent --add-port = 514/tcp $ sudo firewall-cmd --eload ------------- Di Ubuntu ------------- $ sudo ufw izinkan 514/udp $ sudo ufw izinkan 514/tcp $ sudo ufw reload 

Cara mengkonfigurasi klien rsyslog untuk mengirim log ke server rsyslog

Sekarang di sistem klien, periksa apakah layanan rsyslog berjalan atau tidak dengan perintah berikut.

$ sudo systemctl status rsyslog 

Jika tidak diinstal, instal dan mulai layanan seperti yang ditunjukkan sebelumnya.

$ sudo yum update && yum install rsyslog #centos 7 $ sudo apt update && apt install rsyslog #ubuntu 16.04, 18.04 $ sudo systemctl mulai rsyslog $ sudo systemctl aktifkan rsyslog $ sudo systemctl status rsyslog 

Setelah layanan rsyslog naik dan berjalan, buka file konfigurasi utama di mana Anda akan melakukan perubahan pada konfigurasi default.

$ sudo vim /etc /rsyslog.conf 

Untuk memaksa daemon rsyslog untuk bertindak sebagai klien log dan meneruskan semua pesan log yang dihasilkan secara lokal ke server rsyslog jarak jauh, tambahkan aturan penerusan ini, di akhir file seperti yang ditunjukkan pada tangkapan layar berikut.

*. * @@ 192.168.100.10: 514 
Konfigurasikan klien rsyslog

Aturan di atas akan mengirim pesan dari semua fasilitas dan di semua tingkat keparahan. Untuk mengirim pesan dari fasilitas tertentu misalnya auth, Gunakan aturan berikut.

auth. * @@ 192.168.100.10: 514 

Simpan perubahan dan tutup file konfigurasi. Untuk menerapkan pengaturan di atas, restart daemon rsyslog.

$ sudo systemctl restart rsyslog 

Cara memantau penebangan jarak jauh di server rsyslog

Langkah terakhir adalah memverifikasi apakah rsyslog benar -benar menerima dan mencatat pesan dari klien, di bawah /var/log, dalam bentuknya Nama host/ProgramName.catatan.

Jalankan perintah LS ke daftar panjang direktori log induk dan periksa apakah ada direktori yang dipanggil IP-172.31.21.58 (Atau apa pun nama host mesin klien Anda).

 $ ls -l/var/log/ 
Periksa logging klien rsyslog

Jika direktori ada, periksa file log di dalamnya, dengan menjalankan.

$ sudo ls -l/var/log/ip-172-31-21-58/ 
Periksa log klien rsyslog
Ringkasan

Rsyslog adalah sistem pemrosesan log kinerja tinggi, yang dirancang dalam arsitektur klien/server. Kami harap Anda dapat menginstal dan mengonfigurasi Rsyslog Sebagai server logging pusat/jaringan dan sebagai klien seperti yang ditunjukkan dalam panduan ini.

Anda mungkin juga ingin merujuk ke halaman manual rsyslog yang relevan untuk bantuan lebih lanjut. Jangan ragu untuk memberi kami umpan balik atau mengajukan pertanyaan.