Cara membuat server log terpusat dengan rsyslog di centos/rhel 7

Cara membuat server log terpusat dengan rsyslog di centos/rhel 7

Agar Administrator Sistem dapat mengidentifikasi atau memecahkan masalah masalah pada a Centos 7 atau RHEL 7 sistem server, ia harus mengetahui dan melihat peristiwa yang terjadi pada sistem dalam periode waktu tertentu dari file log yang disimpan dalam sistem di dalam /var/log direktori.

Server syslog pada mesin Linux dapat bertindak sebagai titik pemantauan pusat melalui jaringan di mana semua server, perangkat jaringan, router, sakelar dan sebagian besar layanan internal mereka yang menghasilkan log, baik terkait dengan masalah internal tertentu atau hanya pesan informatif yang dapat mengirim log mereka.

Pada suatu Centos/rhel 7 sistem, Rsyslog Daemon adalah server log utama yang diinstal sebelumnya, diikuti oleh Systemd Journal Daemon (Journald).

Rsyslog server dalam build sebagai layanan arsitektur klien/server dan dapat mencapai kedua peran secara simultan. Ini dapat berjalan sebagai server dan mengumpulkan semua log yang dikirimkan oleh perangkat lain di jaringan atau dapat dijalankan sebagai klien dengan mengirim semua acara sistem internal yang dicatat ke server Syslog titik akhir jarak jauh.

Ketika rsyslog dikonfigurasi sebagai klien, log dapat disimpan secara lokal dalam file pada sistem file lokal atau dapat mengirim jarak jauh daripada menulisnya dalam file yang disimpan di mesin atau menulis file log secara lokal dan mengirimnya ke server syslog jarak jauh di waktu yang sama.

Syslog Server mengoperasikan pesan log apa pun menggunakan skema berikut:

Jenis (fasilitas).tujuan prioritas (keparahan) (ke mana harus mengirim log) 

A. Itu fasilitas atau ketik data diwakili oleh proses sistem internal yang menghasilkan pesan. Dalam proses internal Linux (fasilitas) yang menghasilkan log distandarisasi sebagai berikut:

  • auth = pesan yang dihasilkan oleh proses otentikasi (login).
  • cron= pesan yang dihasilkan oleh proses terjadwal (crontab).
  • Daemon = pesan yang dihasilkan oleh daemon (layanan internal).
  • inti = pesan yang dihasilkan oleh kernel linux itu sendiri.
  • surat = pesan yang dihasilkan oleh server email.
  • Syslog = pesan yang dihasilkan oleh daemon rsyslog itu sendiri.
  • LPR = pesan yang dihasilkan oleh printer lokal atau server cetak.
  • local0 - local7 = Pesan khusus yang ditentukan oleh administrator (Local7 biasanya ditetapkan untuk Cisco atau Windows).

B. Itu Prioritas (keparahan) Level juga distandarisasi. Setiap prioritas ditugaskan dengan singkatan standar dan angka seperti yang dijelaskan di bawah ini. Prioritas ke -7 adalah tingkat yang lebih tinggi dari semuanya.

  • muncul = Darurat - 0
  • peringatan = Peringatan - 1
  • berbuat salah = Kesalahan - 3
  • memperingatkan = Peringatan - 4
  • melihat = Pemberitahuan - 5
  • info = Informasi - 6
  • debug = Debugging - 7

Kata kunci rsyslog khusus:

  • * = Semua fasilitas atau prioritas
  • tidak ada = Fasilitas tidak memiliki prioritas yang diberikan misalnya: surat.tidak ada

C. Bagian ketiga untuk skema syslog diwakili oleh tujuan pengarahan. Rsyslog Daemon dapat mengirim pesan log untuk ditulis dalam file pada sistem file lokal (kebanyakan dalam file di dalam /var/log/ direktori) atau disalurkan ke proses lokal lain atau untuk dikirim ke konsol pengguna lokal (ke stdout), atau mengirim pesan ke server syslog jarak jauh melalui protokol TCP/UDP, atau bahkan membuang pesan ke /dev/null.

Untuk mengonfigurasi Centos/rhel 7 Sebagai server log pusat, pertama -tama kita perlu memeriksa dan memastikan bahwa /var partisi di mana semua file log dicatat cukup besar (beberapa minimum GB) agar dapat menyimpan semua file log yang akan dikirim oleh perangkat lain. Ini adalah keputusan yang baik untuk menggunakan drive terpisah (LVM, RAID) untuk memasang /var/log/ direktori.

Persyaratan

  1. Centos 7.3 Prosedur Instalasi
  2. RHEL 7.3 Prosedur Instalasi

Cara mengkonfigurasi rsyslog di server centos/rhel 7

1. Secara default, Rsyslog Layanan diinstal secara otomatis dan harus berjalan masuk Centos/rhel 7. Untuk memeriksa apakah daemon dimulai dalam sistem, keluarkan perintah berikut dengan hak istimewa root.

# Systemctl Status Rsyslog.melayani 
Periksa layanan rsyslog

Jika layanan tidak berjalan secara default, jalankan perintah di bawah ini untuk memulai daemon rsyslog.

# systemctl mulai rsyslog.melayani 

2. Jika paket rsyslog tidak diinstal pada sistem yang ingin Anda gunakan sebagai server logging terpusat, keluarkan perintah berikut untuk menginstal paket rsyslog.

# yum instal rsyslog 

3. Langkah pertama yang perlu kita lakukan pada sistem untuk mengonfigurasi daemon rsyslog sebagai server log terpusat, sehingga dapat menerima pesan log untuk klien eksternal, adalah untuk membuka dan mengedit, menggunakan editor teks favorit Anda, file konfigurasi utama dari /etc/rsyslog.conf, seperti yang disajikan dalam kutipan di bawah ini.

# vi /etc /rsyslog.conf 

Dalam file konfigurasi utama rsyslog, pencarian dan uncomment baris berikut (hapus tagar # Masuk di garis awal) untuk memberikan penerimaan transportasi UDP ke server rsyslog melalui 514 pelabuhan. UDP adalah protokol standar yang digunakan untuk transmisi log oleh rsyslog.

$ Modload imudp $ udpserverrun 514 
Konfigurasikan server rsyslog

4. Protokol UDP tidak memiliki overhead TCP, yang membuatnya lebih cepat untuk mentransmisikan data daripada protokol TCP. Di sisi lain, protokol UDP tidak memastikan keandalan data yang ditransmisikan.

Namun, jika Anda perlu menggunakan protokol TCP untuk penerimaan log, Anda harus mencari dan membatalkan komentar dari baris -baris berikut dari /etc/rsyslog.conf File Untuk mengonfigurasi daemon rsyslog untuk mengikat dan mendengarkan soket TCP di port 514. Soket mendengarkan TCP dan UDP untuk penerimaan dapat dikonfigurasi pada server rsyslog secara bersamaan.

$ Modload imtcp $ inputtcpserverrun 514 

5. Pada langkah berikutnya, jangan tutup file, buat templat baru yang akan digunakan untuk menerima pesan jarak jauh. Template ini akan menginstruksikan server rsyslog lokal tempat menyimpan pesan yang diterima oleh klien jaringan syslog. Templat harus ditambahkan sebelum awal Arahan Global blok seperti yang diilustrasikan dalam kutipan di bawah ini.

$ Template Remotelogs, "/var/log/%hostname%/%ProgramName%.catatan"  . ?Remotelogs & ~ 
Buat template rsyslog

Di atas $ Template Remotelogs Directive menginstruksikan daemon rsyslog untuk mengumpulkan dan menulis semua pesan log yang diterima ke file yang berbeda, berdasarkan nama mesin klien dan fasilitas klien jarak jauh (aplikasi) yang menghasilkan pesan berdasarkan properti yang ditentukan yang ada dalam konfigurasi templat: %Nama host% Dan %NAMA PROGRAM%.

Semua file log ini akan ditulis ke sistem file lokal ke file khusus yang dinamai nama host mesin klien dan disimpan di/var/log/direktori.

Itu & ~ Redirect Rule menginstruksikan server rsyslog lokal untuk berhenti memproses pesan log yang diterima lebih lanjut dan buang pesan (tidak menulisnya ke file log internal).

Itu Remotelogs Nama adalah nama sewenang -wenang yang diberikan untuk Petunjuk Templat ini. Anda dapat menggunakan nama apa pun yang dapat Anda temukan paling cocok untuk template Anda.

Untuk menulis semua pesan yang diterima dari klien dalam satu file log yang dinamai setelah alamat IP klien jarak jauh, tanpa memfilter fasilitas yang menghasilkan pesan, gunakan kutipan di bawah ini.

$ template fromip, "/var/log/%fromhost-ip%.catatan"  . ?Fromip & ~ 

Contoh lain dari templat di mana semua pesan dengan bendera fasilitas auth akan dicatat ke templat bernama "Tmplauth“.

$ template tmplAuth, "/var/log/%hostname%/%programname%.log "authpriv.* ?Tmplauth 

Di bawah ini adalah kutipan dari definisi template dari server RSyslog 7:

template (name = "tmplmsg" type = "string" string = "/var/log/remote/msg/%hostname%/%programname ::: secpath-replace%.catatan" ) 

Kutipan template di atas juga dapat ditulis sebagai:

template (name = "tmplmsg" type = "list") constant (value = "/var/log/remote/msg/") properti (name = "hostname") constant (value = "/") properti (name = = name = "ProgramName" securePath = "ganti") konstan (value = ".catatan")  

Untuk menulis templat rsyslog yang kompleks, baca manual file konfigurasi rsyslog dengan menerbitkan Man Rsyslog.conf Perintah atau Konsultasikan Rsyslog Dokumentasi Online.

6. Setelah Anda mengedit file konfigurasi rsyslog dengan pengaturan Anda sendiri seperti yang dijelaskan di atas, restart daemon rsyslog untuk menerapkan perubahan dengan mengeluarkan perintah berikut:

# layanan rsyslog restart 

7. Sekarang, server rsyslog harus dikonfigurasi untuk bertindak sebagai server log terpusat dan merekam pesan dari klien syslog. Untuk memverifikasi soket jaringan rsyslog, jalankan perintah netstat dengan hak istimewa root dan gunakan grep untuk memfilter string rsyslog.

# netstat -tulpn | grep rsyslog 
Verifikasi soket jaringan rsyslog

8. Jika Anda telah diaktifkan selinux Centos/rhel 7, Keluarkan perintah berikut untuk mengonfigurasi selinux untuk memungkinkan lalu lintas rsyslog tergantung pada jenis soket jaringan.

# Sarganage -a -t syslogd_port_t -p udp 514 # semanage -a -t syslogd_port_t -p tcp 514 

9. Jika firewall diaktifkan dan aktif, jalankan perintah di bawah ini untuk menambahkan aturan yang diperlukan untuk membuka port rsyslog di firewalld.

# firewall-cmd --permanent --add-port = 514/tcp # firewall-cmd --permanent --add-port = 514/udp # firewall-cmd -reload 

Itu saja! RSyslog sekarang dikonfigurasi dalam mode server dan dapat memusatkan log dari klien jarak jauh. Di artikel berikutnya, kita akan melihat cara mengkonfigurasi klien rsyslog di server CentOS/RHEL 7.

Menggunakan server rsyslog sebagai titik pemantauan pusat untuk pesan log jarak jauh Anda dapat memeriksa file log dan mengamati status kesehatan klien atau debug masalah klien lebih mudah ketika sistem macet atau berada di bawah semacam serangan.