GNU/Linux >> Belajar Linux >  >> Debian

Instal Server Log Terpusat dengan Rsyslog di Debian 9

Di Linux, file log adalah file yang berisi pesan tentang fungsi sistem yang digunakan oleh administrator sistem untuk mengidentifikasi masalah akhir pada mesin. Log membantu administrator untuk memvisualisasikan peristiwa yang terjadi di sistem selama periode waktu. Biasanya, semua file log disimpan di bawah /var/log direktori di Linux. Di lokasi ini, ada beberapa jenis file log untuk menyimpan berbagai pesan, seperti file log untuk merekam peristiwa sistem, file log untuk pesan terkait keamanan, file log lain yang didedikasikan untuk kernel, pengguna, atau pekerjaan cron. Tujuan utama dari file log adalah untuk memecahkan masalah sistem. Sebagian besar file log di Linux dikendalikan oleh layanan rsyslogd. Pada rilis distribusi Linux yang lebih baru, file log juga dikontrol dan dikelola oleh layanan sistem journald, yang merupakan bagian dari program inisialisasi systemd. Log yang disimpan oleh daemon jurnal ditulis dalam format biner dan sebagian besar bersifat volatil, disimpan dalam RAM dan dalam buffer cincin di /run/log/journal/. Namun, layanan jurnal juga dapat dikonfigurasi untuk menyimpan pesan Syslog secara permanen.

Di Linux, server rsyslog dapat dikonfigurasi untuk menjalankan manajer log pusat, dalam mode model layanan-klien, dan mengirim pesan log melalui jaringan melalui protokol transport TCP atau UDP atau menerima log dari perangkat jaringan, server, router, switch atau sistem lain atau perangkat tertanam yang menghasilkan log.

Daemon Rsyslog dapat disiapkan untuk dijalankan sebagai klien dan server secara bersamaan. Dikonfigurasi untuk dijalankan sebagai server, Rsyslog akan mendengarkan pada port default 514 TCP dan UDP dan akan mulai mengumpulkan pesan log yang dikirim melalui jaringan oleh sistem jarak jauh. Sebagai klien, Rsyslog akan mengirimkan pesan log internal melalui jaringan ke server Ryslog jarak jauh melalui port TCP atau UDP yang sama.

Rsyslog akan memfilter pesan syslog sesuai dengan properti dan tindakan yang dipilih. Filter rsyslog adalah sebagai berikut:

  1. Fasilitas atau pelapor Prioritas
  2. Filter berbasis properti
  3. Filter berbasis ekspresi

 Fasilitas filter diwakili oleh subsistem internal Linux yang menghasilkan log. Mereka dikategorikan seperti yang disajikan di bawah ini:

  • auth/authpriv =pesan yang dihasilkan oleh proses otentikasi
  • cron =log yang terkait dengan tugas cron
  • daemon =pesan yang terkait dengan menjalankan layanan sistem
  • kernel =Pesan kernel Linux
  • email =pesan server email
  • syslog =pesan yang terkait dengan syslog atau daemon lainnya (server DHCP mengirimkan log di sini)
  • lpr =printer atau pesan server cetak
  • lokal0 - lokal7 =pesan khusus di bawah kendali administrator

 Prioritas atau tingkat keparahan level ditetapkan ke kata kunci dan nomor seperti yang dijelaskan di bawah ini.

  • muncul =Darurat – 0
  • peringatan =Peringatan – 1
  • salah =Kesalahan – 3
  • peringatkan =Peringatan – 4
  • pemberitahuan =Pemberitahuan – 5
  • info =Informasi – 6
  • debug =Debugging – 7 level tertinggi

Ada juga beberapa kata kunci Rsyslog khusus yang tersedia seperti tanda bintang (* ) tanda untuk menentukan semua
fasilitas atau prioritas, tidak ada kata kunci yang tidak menentukan prioritas, tanda sama dengan (= ) yang hanya memilih prioritas itu dan tanda seru (! ) yang meniadakan prioritas.

Bagian tindakan dari syslog diwakili oleh tujuan penyataan. Tujuan dari pesan log dapat berupa file yang disimpan dalam sistem file, file di /var/log/ jalur sistem, input proses lokal lain melalui pipa bernama atau FIFO. Pesan log juga dapat diarahkan ke pengguna, dibuang ke lubang hitam (/ dev/null) atau dikirim ke stdout atau ke server syslog jarak jauh melalui protokol TCP/UDP. Pesan log juga dapat disimpan dalam database, seperti MySQL atau PostgreSQL.

Konfigurasi Rsyslog sebagai Server

Daemon Rsyslog diinstal secara otomatis di sebagian besar distribusi Linux. Namun, jika Rsyslog tidak diinstal pada sistem Anda, Anda dapat mengeluarkan salah satu perintah di bawah ini untuk menginstal layanan> Anda akan memerlukan hak akses root untuk menjalankan perintah.

Di distro berbasis Debian:

sudo apt-get install rsyslog

Di distro berbasis RHEL seperti CentOS:

sudo yum install rsyslog

Untuk memverifikasi apakah daemon Rsyslog dimulai pada sistem, jalankan perintah di bawah ini, tergantung pada versi distribusi Anda.

Pada distro Linux yang lebih baru dengan systemd:

systemctl status rsyslog.service

Pada versi Linux yang lebih lama dengan init:

service rsyslog status
/etc/init.d/rsyslog status

Untuk memulai daemon rsyslog, jalankan perintah berikut.

Pada versi Linux yang lebih lama dengan init:

service rsyslog start
/etc/init.d/rsyslog start

Di distro Linux terbaru:

systemctl start rsyslog.service

Untuk mengatur program rsyslog agar berjalan dalam mode server, edit file konfigurasi utama di /etc/rsyslog.conf. Dalam file ini buat perubahan berikut seperti yang ditunjukkan pada contoh di bawah ini.

sudo vi /etc/rsyslog.conf

Temukan dan batalkan komentar dengan menghapus tagar (#) pada baris berikut untuk memungkinkan penerimaan pesan log UDP pada port 514. Secara default, port UDP digunakan oleh syslog untuk mengirim-menerima pesan.

$ModLoad imudp 
$UDPServerRun 514

Karena protokol UDP tidak dapat diandalkan untuk bertukar data melalui jaringan, Anda dapat mengatur RSyslog untuk mengeluarkan pesan log ke server jauh melalui protokol TCP. Untuk mengaktifkan protokol penerimaan TCP, buka /etc/rsyslog.conf file dan batalkan komentar pada baris berikut seperti yang ditunjukkan di bawah ini. Ini akan memungkinkan daemon rsyslog untuk mengikat dan mendengarkan pada soket TCP pada port 514.

$ModLoad imtcp 
$InputTCPServerRun 514

Kedua protokol dapat diaktifkan di rsyslog untuk berjalan pada waktu yang sama.

Jika Anda ingin menentukan pengirim mana yang Anda izinkan aksesnya ke daemon rsyslog, tambahkan baris berikut setelah baris protokol yang diaktifkan:

$AllowedSender TCP, 127.0.0.1, 10.110.50.0/24, *.yourdomain.com

Anda juga perlu membuat template baru yang akan diurai oleh daemon rsyslog sebelum menerima log yang masuk. Templat harus menginstruksikan server RSyslog lokal tempat menyimpan pesan log yang masuk. Tentukan template tepat setelah $AllowedSender baris seperti yang ditunjukkan pada contoh di bawah ini.

$template Incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
*.*  ?Incoming-logs
& ~

  Untuk mencatat hanya pesan yang dihasilkan oleh fasilitas kern gunakan sintaks di bawah ini.

kern.*   ?Incoming-logs

Log yang diterima diurai oleh template di atas dan akan disimpan dalam sistem file lokal di direktori /var/log/, dalam file yang dinamai dengan nama fasilitas klien hostname klien yang menghasilkan pesan:%HOSTNAME% dan %PROGRAMNAME% variabel.

Di bawah &~ aturan redirect mengonfigurasi daemon Rsyslog untuk menyimpan pesan log masuk hanya ke file di atas yang ditentukan oleh nama variabel. Jika tidak, log yang diterima akan diproses lebih lanjut dan juga disimpan dalam konten log lokal, seperti file /var/log/syslog.

Untuk menambahkan aturan untuk membuang semua pesan log terkait ke email, Anda dapat menggunakan pernyataan berikut.

mail.* ~

Variabel lain yang dapat digunakan untuk menampilkan nama file adalah:%syslogseverity%, %syslogfacility%, %timegenerated%, %HOSTNAME%, %syslogtag%, %msg%, %FROMHOST-IP%, %PRI%, %MSGID%, %APP-NAME%, %TIMESTAMP%, %$year%, %$month%, %$day%

Dimulai dengan Rsyslog versi 7, format konfigurasi baru dapat digunakan untuk mendeklarasikan template di server Rsyslog.

Contoh template versi 7 dapat terlihat seperti yang ditunjukkan pada baris di bawah ini.

template(name="MyTemplate" type="string"
         string="/var/log/%FROMHOST-IP%/%PROGRAMNAME:::secpath-replace%.log"
        )

  Modus lain anda bisa menulis template diatas juga bisa seperti gambar dibawah ini :

template(name="MyTemplate" type="list") {
    constant(value="/var/log/")
    property(name="fromhost-ip")
    constant(value="/")
    property(name="programname" SecurePath="replace")
    constant(value=".log")
    }

Untuk menerapkan perubahan yang dibuat pada file konfigurasi rsyslog, Anda harus memulai ulang daemon untuk memuat konfigurasi baru.

sudo service rsyslog restart
sudo systemctl restart rsyslog

Untuk memeriksa soket rsyslog mana dalam status mendengarkan yang dibuka di sistem Linux Debian, Anda dapat menjalankan netstat perintah dengan hak akses root. Teruskan hasil melalui utilitas filter, seperti grep .

sudo netstat –tulpn | grep rsyslog

Ketahuilah bahwa Anda juga harus membuka port Rsyslog di firewall agar koneksi masuk dapat dibuat.

Di distro berbasis RHEL dengan Firewalld yang diaktifkan, jalankan perintah di bawah ini:

firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --permanent --add-port=514/tcp
firewall-cmd –reload

Di distro berbasis Debian dengan firewall UFW aktif mengeluarkan perintah di bawah ini:

ufw allow 514/tcp
ufw allow 514/udp

Aturan firewall Iptables:

iptables -A INPUT -p tcp -m tcp --dport 514 -j ACCEPT
iptables -A INPUT -p udp --dport 514 -j ACCEPT

Konfigurasi Rsyslog sebagai Klien

Untuk mengaktifkan daemon rsyslog agar berjalan dalam mode klien dan menampilkan pesan log lokal ke server RSyslog jarak jauh, edit /etc/rsyslog.conf file dan tambahkan salah satu baris berikut:

*. *  @IP_REMOTE_RSYSLOG_SERVER:514
*. *  @FQDN_RSYSLOG_SERVER:514

Baris ini memungkinkan layanan Rsyslog untuk mengeluarkan semua log internal ke server RSyslog yang jauh pada port UDP 514.

Untuk mengirim log melalui protokol TCP gunakan templat berikut:

*. *  @@IP_reomte_syslog_server:514

Untuk hanya menampilkan log terkait cron dengan semua prioritas ke server rsyslog, gunakan template di bawah ini:

cron.* @ IP_reomte_syslog_server:514

Jika server RSyslog tidak dapat dijangkau melalui jaringan, tambahkan baris di bawah ini ke file /etc/rsyslog.conf di sisi klien untuk menyimpan log sementara dalam file buffer disk, hingga server online.

$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1

Untuk menerapkan aturan di atas, daemon Rsyslog perlu dimulai ulang agar dapat bertindak sebagai klien.


Debian
  1. Cara Setup Server Rsyslog di Debian 11

  2. Cara Menginstal Server Redis di Debian 11

  3. Cara Menginstal MySQL 8.0 / 5.7 di Debian 11 / Debian 10

  1. Cara Menginstal HTTP Git Server dengan Nginx di Debian 11

  2. Instal WordPress dengan database jarak jauh di Debian

  3. Instal Cockpit di Debian 9

  1. Cara Memasang Server Minecraft di Debian 9

  2. Cara menginstal SuiteCRM di Debian 9

  3. Instal phpMyAdmin di Debian 11 dengan Nginx