GNU/Linux >> Belajar Linux >  >> Linux

Cara Membuat Konfigurasi Rsyslog Logging Terpusat

Log adalah bagian penting dari aplikasi dan infrastruktur server, tetapi menganalisisnya bisa merepotkan jika berantakan di mana-mana. Mengapa tidak membuat sistem logging terpusat? Rsyslog mungkin yang Anda cari!

Sistem logging terpusat memungkinkan Anda untuk mengumpulkan log dari beberapa server/aplikasi ke server log pusat. Dan dalam tutorial ini, Anda akan mempelajari cara mengatur logging terpusat menggunakan konfigurasi RSyslog di server Linux.

Bersiaplah dan langsung masuk!

Prasyarat

Tutorial ini akan menjadi demonstrasi langsung. Jika Anda ingin mengikuti, pastikan Anda memiliki yang berikut:

  • Dua atau lebih server Linux – Tutorial ini menggunakan tiga server Debian 11 bernama central-rsyslog , klien01 , dan klien02 .
  • Pengguna dengan hak sudo/root di semua server.

Memeriksa Layanan Rsyslog di Semua Server

Rsyslog adalah pemrosesan log berkinerja tinggi untuk distribusi Linux, diinstal secara default pada distribusi berbasis Debian dan berbasis RHEL.

Rsyslog adalah versi protokol Syslog yang andal dan diperluas dengan fitur modern tambahan. Fitur tambahan ini adalah beberapa input dan output, modular, dan kemampuan pemfilteran yang kaya.

Pada saat penulisan ini, versi terbaru dari RSyslog adalah v8.2112.0. Jadi, Anda akan memeriksa versi RSyslog yang terinstal di sistem Anda dan status layanan Rsyslog. Melakukannya memastikan bahwa Anda mendapatkan fitur terbaru dari RSyslog dan RSyslog berjalan tanpa masalah.

1. Buka terminal Anda, masuk ke semua server, dan jalankan sudo su perintah di bawah ini untuk mendapatkan hak akses root. Masukkan kata sandi untuk pengguna Anda saat diminta.

sudo su

2. Selanjutnya, jalankan rsyslogd perintah untuk memeriksa versi Rsyslog yang diinstal pada sistem Anda.

Pastikan Anda memiliki Rsyslog v8.xxx di sistem Anda karena beberapa konfigurasi hanya tersedia di Rsyslog v8.xxx.

# checking rsyslog version
rsyslogd -v

Seperti yang Anda lihat di bawah, sistem Debian 11 hadir dengan RSyslog v8.2102.0 default.

3. Terakhir, jalankan systemctl perintah di bawah ini untuk memverifikasi layanan Rsyslog. Pastikan layanan Rsyslog adalah active (running) .

# verify rsyslog service status
sudo systemctl status rsyslog

Seperti yang Anda lihat di bawah, layanan Rsyslog aktif (berjalan).

Mengonfigurasi Rsyslog untuk Logging Terpusat

Sekarang setelah Anda menjalankan Rsyslog versi terbaru, saatnya menyiapkan logging terpusat menggunakan konfigurasi Rsyslog di central-rsyslog server.

Untuk menyiapkan logging terpusat, Anda akan mengaktifkan modul input Rsyslog UDP imudp dan buat template Rsyslog untuk menerima pesan log dari server lain. imudp modul input menyediakan kemampuan untuk central-rsyslog server untuk menerima pesan Syslog melalui protokol UDP.

1. Edit file konfigurasi Rsyslog (/etc/rsyslog.conf ) menggunakan editor pilihan Anda dan aktifkan konfigurasi yang ditunjukkan gambar di bawah, lalu simpan perubahan dan keluar dari editor.

Sepanjang tutorial ini, batalkan komentar pada setiap konfigurasi untuk mengaktifkannya dengan menghapus tanda # di awal setiap baris.

Konfigurasi ini memungkinkan modul input imudp berjalan pada port UDP default 514.

2. Selanjutnya, buat template RSyslog baru (/etc/rsyslog.d/50-remote-logs.conf ) menggunakan editor pilihan Anda dan isi template dengan konfigurasi di bawah. Simpan perubahan dan keluar dari editor.

Template RSyslog di bawah ini mengaktifkan central-rsyslog server untuk menyimpan log dari server jarak jauh ke direktori /var/log/remotelogs/ .

# define template for remote loggin
# remote logs will be stored at /var/log/remotelogs directory
# each host will have specific directory based on the system %HOSTNAME%
# name of the log file is %PROGRAMNAME%.log such as sshd.log, su.log
# both %HOSTNAME% and %PROGRAMNAME% is the Rsyslog message properties
template (
    name="RemoteLogs"
    type="string"
    string="/var/log/remotelogs/%HOSTNAME%/%PROGRAMNAME%.log"
)

# gather all log messages from all facilities
# at all severity levels to the RemoteLogs template
*.* -?RemoteLogs

# stop the process once the file is written
stop

3. Jalankan perintah di bawah untuk membuat direktori log baru (/var/log/remotelogs/ ) yang dimiliki oleh root pengguna dengan adm kelompok. Melakukannya memungkinkan layanan Ryslog untuk menulis log ke /var/log/remotelogs direktori.

# create /var/log/remotelogs/ directory
mkdir -p /var/log/remotelogs/

# change the ownership to root:adm
sudo chown -R root:adm /var/log/remotelogs/

4. Sekarang, jalankan rsyslogd perintah di bawah ini untuk memverifikasi konfigurasi Rsyslog (/etc/rsyslog.conf dan /etc/rsyslog.d/50-remote-logs.conf ).

Pastikan untuk selalu memeriksa dan memverifikasi konfigurasi RSyslog setelah mengedit konfigurasi RSyslog untuk memastikan konfigurasi tidak ada kesalahan.

# verify /etc/rsyslog.conf
rsyslogd -N1 -f /etc/rsyslog.conf

# verify /etc/rsyslog.d/50-remote-logs.conf
rsyslogd -N1 -f /etc/rsyslog.d/50-remote-logs.conf

Jika tidak ada kesalahan, Anda akan mendapatkan output seperti di bawah ini.

5. Setelah memverifikasi konfigurasi, jalankan perintah di bawah ini ke restart rsyslog layanan dan menerapkan konfigurasi baru.

Layanan Rsyslog sudah berjalan dengan modul input imudp diaktifkan dan membuka port UDP default 514 untuk protokol Syslog. The central-rsyslog server sekarang siap menerima pesan log dari host lain.

# restart rsyslog
sudo systemctl restart rsyslog

6. Terakhir, jalankan ss perintah di bawah ini untuk memverifikasi port yang dibuka pada sistem Anda.

# check open ports
ss -plntu

Di bawah, Anda dapat melihat bahwa layanan Rsyslog dengan modul input imudp diaktifkan berjalan pada port UDP default 514.

Mengirim Log ke Server RSyslog Terpusat

Sekarang, Anda telah mengonfigurasi manajemen log terpusat dengan konfigurasi RSyslog di central-rsyslog server. Tapi bagaimana Anda tahu central-rsyslog server menerima log? Anda akan mengirim log dari jarak jauh ke server RSyslog terpusat (central-rsyslog ) dengan mengaktifkan dan mengonfigurasi modul keluaran RSyslog pada mesin klien.

Dalam demo ini, mesin klien (dengan hostname client01) menggunakan modul keluaran Rsyslog omfwd untuk mengirim log ke central-rsyslog server.

 omfwd module adalah modul built-in yang memproses pesan/log melalui template Rsyslog. Modul kemudian mentransfer pesan ke berbagai target melalui UDP dan TCP menggunakan objek tindakan Rsyslog.

1. Pindah ke klien01 mesin untuk menyiapkan dan mengirim log ke central-rsyslog server.

2. Buat konfigurasi Rsyslog baru (/etc/rsyslog.d/20-forward-logs.conf ) menggunakan editor pilihan Anda dan isi konfigurasi berikut.

Konfigurasi ini memformat pesan log menggunakan template SendRemote dan meneruskan pesan log melalui protokol UDP ke central-rsyslog target server (172.16.1.10). Pastikan untuk mengubah alamat IP dengan alamat IP server RSyslog pusat Anda.

Templat Rsyslog adalah konstruksi properti pesan Rsyslog yang menentukan format pesan log. Periksa dokumentasi template Rsyslog untuk melihat berbagai jenis template.

# process all log messages before sending
# with the SendRemote template
template(
    name="SendRemote"
    type="string"
    string="<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"
)

# forward log messages using omfwd module
# to the target server 172.16.1.10
# via UDP porotocol on port 514
# log messages is formatted using the SendRemote template
# setup queue for remote log
action(
    type="omfwd"
    Target="172.16.1.10"
    Port="514"
    Protocol="udp"
    template="SendRemote"

    queue.SpoolDirectory="/var/spool/rsyslog"
    queue.FileName="remote"
    queue.MaxDiskSpace="1g"
    queue.SaveOnShutdown="on"
    queue.Type="LinkedList"
    ResendLastMSGOnReconnect="on"
)

# stop process after the file is written
stop

3. Selanjutnya, jalankan rsyslogd di bawah ini perintah untuk memverifikasi konfigurasi Rsyslog dan memastikan tidak ada kesalahan.

# verify rsyslog configuration
rsyslogd -N1 -f /etc/rsyslog.d/20-remote-logs.conf

4. Jalankan systemctl perintah di bawah ini untuk memulai ulang layanan Rsyslog dan menerapkan konfigurasi baru.

# restart rsyslog on client01 machine
sudo systemctl restart rsyslog

5. Sekarang, kembali ke central-rsyslog server untuk memverifikasi log dari klien01 mesin.

Jalankan perintah di bawah ini untuk menavigasi ke direktori /var/log/remotelogs dan daftar file dan direktori di dalam direktori itu untuk memverifikasi client01 direktori ada.

# navigate to /var/log/remotelogs directory
cd /var/log/remotelogs/
# checking available directories
ls -lah

Di bawah ini, Anda dapat melihat direktori client01 ada di /var/log/remotelogs direktori.

6. Jalankan setiap perintah di bawah ini untuk beralih ke client01 direktori dan daftar (ls -lah ) file log di dalam direktori.

# navigate to client01 directory
cd client01/
# checking files inside client01 directory
ls -lah

Sistem logging terpusat membantu administrator menganalisis data log dari ratusan server dalam satu mesin.

Pilih salah satu log yang ingin Anda lihat dan analisis.

7. Terakhir, jalankan cat perintah di bawah ini untuk melihat konten log target Anda. Ganti logfile dengan nama file log, tetapi demo ini mengembalikan konten sshd.log mengajukan.

cat logfile

Di bawah, Anda dapat melihat log dari klien01 mesin disimpan di sshd.log file di server RSyslog (central-rsyslog ).

Sejauh ini, Anda telah melihat bahwa sistem logging terpusat membuat file log lebih aman karena setiap kali aplikasi/server dihentikan, Anda masih memiliki file log di server pusat.

Mengirim Log Program Tertentu ke Server Rsyslog

Anda baru saja mengirim semua log aplikasi dari klien01 mesin ke server RSyslog pusat (central-rsyslog ). Tetapi bagaimana jika Anda hanya membutuhkan log aplikasi tertentu, seperti ssh atau su ? Terapkan struktur kontrol rainerscript Rsyslog pada objek tindakan Rsyslog.

Demo ini menggunakan client02 mesin untuk mengirim sshd log hanya ke server Rsyslog (central-rsyslog ).

1. Pindah ke klien02 mesin untuk menyiapkan dan mengirim log ke central-rsyslog server.

2. Buat konfigurasi Rsyslog baru (/etc/rsyslog.d/50-sshd.conf ) menggunakan editor pilihan Anda dan isi konfigurasi berikut.

Konfigurasi di bawah ini hanya meneruskan log untuk aplikasi (nama program) bernama sshd ke server Rsyslog (172.16.1.10). Pesan log juga diformat oleh template SendRemote.

# create new Rsyslog tempate for formatted logs
template(
    name="SendRemote"
    type="string"
    string="<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"
)

# implementation of if conditional on rsyslog
# to send specific logs for programname sshd
# stop the process after sending logs
if $programname == "sshd" then {
        action(type="omfwd" target="172.16.1.10" port="514" protocol="udp" template="SendRemote")
        stop
}

3. Selanjutnya, jalankan rsyslogd perintah di bawah ini untuk memverifikasi konfigurasi Rsyslog dan memastikan tidak ada kesalahan.

# verify rsyslog configuration
rsyslogd -N1 -f /etc/rsyslog.d/50-sshd.conf

4. Jalankan perintah di bawah ini untuk memulai ulang layanan Rsyslog, menerapkan konfigurasi baru, dan keluar dari client02 server untuk membuat sshd new baru catatan.

Saat ini, server central-rsyslog hanya menerima log sshd, bukan semua log sistem.

# restart rsyslog service
sudo systemctl restart rsyslog

5. Sekarang, kembali ke central-rsyslog server untuk memverifikasi log dari client02 mesin.

Jalankan perintah di bawah ini untuk membuat daftar (ls -lah) file log yang tersedia di direktori /var/log/remotelogs/.

# navigate to /var/log/remotelogs/
cd /var/log/remotelogs/
# verify log directory for client02
ls -lah

Seperti yang Anda lihat di bawah, ada direktori baru bernama client02 yang menyimpan pesan log dari client02 mesin.

6. Jalankan perintah di bawah ini untuk menavigasi ke client02 direktori dan verifikasi file log yang tersedia di direktori tersebut.

cd client02/
ls -lah

Anda akan melihat file log sshd.log untuk nama program sshd. Selain itu, jalankan perintah cat untuk menampilkan konten file log sshd.log.

Di bawah ini, Anda hanya dapat melihat satu file log yang tersedia, file sshd.log, karena Anda menggunakan konfigurasi /etc/rsyslog.d/50-sshd.conf.

7. Terakhir, jalankan cat perintah di bawah ini untuk melihat dan menganalisis sshd.log mengajukan.

cat sshd.log

Mengirim Log yang Dikonversi Pesan Syslog ke Server Rsyslog

Sejauh ini, Anda telah melihat cara mengirim log ke server Rsyslog Anda, dan itu cukup bagus. Tapi mungkin Anda lebih suka log Anda dalam format pesan Syslog agar lebih mudah dibaca dan dianalisis. Jika demikian, gunakan RSys imfile modul input akan berhasil.

imfile modul input memungkinkan Anda untuk mengonversi pesan teks/log apa pun ke dalam format pesan Syslog. Dan dalam demo ini, Anda akan mengirim log server web Apache2 dari client01 mesin ke server Rsyslog (central-rsyslog ).

Menggabungkan modul input Rsyslog (imfile ) dengan modul keluaran (omfwd ) memungkinkan Anda mengirim log konversi pesan Syslog ke server RSyslog (central-rsyslog ).

1. Kembali ke klien01 mesin, buat konfigurasi Rsyslog baru /etc/rsyslog.d/50-apache2.conf , dan isi konfigurasi berikut. Pastikan untuk mengubah nama template, nama aturan, dan file input untuk log Anda.

Template di bawah ini mengonversi log Apache ke format pesan Syslog dengan modul imfile dan mengirimkan log tersebut ke server Rsyslog (172.16.1.10).

# deifne global workDirectory for saving the state file of log messages.
global(workDirectory="/var/spool/rsyslog")

# enable the Rsyslog imfile module processing text files or logs.
module(load="imfile" PollingInterval="10")

# define template for apache2 for processing log messages.
# that will be forwarded to rsyslog server
template(
    name="TestLog"
    type="string"
    string="<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"
    )

# define ruleset "ApacheLogs" with action object to send logs to rsyslog server
# define the queue
ruleset(name="ApacheLogs") {
    action(
        type="omfwd"
        target="172.16.1.10"
        port="514"
        protocol="udp"
        template="TestLog"

        queue.SpoolDirectory="/var/spool/rsyslog"
        queue.FileName="remote"
        queue.MaxDiskSpace="1g"
        queue.SaveOnShutdown="on"
        queue.Type="LinkedList"
        ResendLastMSGOnReconnect="on"
        )
        stop
}

# define input files Apache2 logs to send to the Rsyslog server
# and apply ruleset "ApacheLogs"
input(type="imfile" ruleset="ApacheLogs" Tag="apache2" File="/var/log/apache2/*.log")

2. Selanjutnya, jalankan rsyslogd perintah di bawah ini untuk memverifikasi /etc/rsyslog.d/50-apache2.conf konfigurasi.

# verify rsyslog configuration
rsyslogd -N1 -f /etc/rsyslog.d/50-apache2.conf

3. Jalankan systemctl perintah di bawah ini ke restart rsyslog layanan dan menerapkan konfigurasi baru. Pada titik ini, semua Apache2 masuk ke client01 mesin akan diteruskan ke server RSyslog (central-rsyslog ).

# restart rsyslog service
sudo systemctl restart rsyslog

4. Sekarang, jalankan curl perintah di bawah ini untuk menghasilkan log Apache2. Perintah ini akan menghasilkan pesan log Apache2 baru ke file /var/log/apache2/access.log .

# generate a new log for Apache
# by accessing via curl command
curl localhost
curl localhost/testnotfound

5. Kembali ke server Rsyslog (central-rsyslog ), dan jalankan perintah di bawah untuk menavigasi ke /var/log/remotelogs/client01 daftar direktori file log yang tersedia.

# navigate to the directory /var/log/remotelogs/client01/
cd /var/log/remotelogs/client01/
# check available log files
ls -a

Anda dapat melihat di bawah bahwa server RSyslog (central-rsyslog ) menerima file apache.log dari client01 mesin.

6. Terakhir, jalankan cat perintah untuk menampilkan konten file log apache2.log .

# showing the content of apache2.log file
cat apache2.log

Jika /etc/rsyslog.d/50-apache2.conf berfungsi, Anda akan melihat konten file log dalam format pesan Syslog seperti di bawah ini.

Kesimpulan

Dalam tutorial ini, Anda telah mempelajari cara mengatur logging terpusat dengan konfigurasi RSyslog. Anda juga telah mengirim log server dari jarak jauh ke server RSyslog terpusat menggunakan berbagai jenis plugin input dan output Rsyslog. Sekarang Anda tidak perlu menjelajahi tempat yang berbeda untuk log lagi selain server Rsyslog Anda.

Bagaimana lagi Anda berencana untuk menggunakan Rsyslog? Mungkin mulai menjelajahi modul input dan output Rsyslog lainnya? Atau mengintegrasikan Rsyslog ke sistem logging lain, seperti Fluentd dan Logstash?


Linux
  1. Cara Mengatur Server Logging Terpusat menggunakan Rsyslog

  2. Cara Membuat Subdomain

  3. Cara Setup Rsyslog Remote Logging di Linux (Central Log Server)

  1. Cara Masuk Linux IPTables Firewall Menjatuhkan Paket ke File Log

  2. Cara membuat tautan ke direktori

  3. Verifikasi konfigurasi dnsmasq

  1. Cara mengatur rsyslog untuk Manajemen Log Terpusat

  2. Instal Server Log Terpusat dengan Rsyslog di Debian 9

  3. Cara Mengaktifkan Pencatatan Kueri MySQL/MariaDB