Bagaimana saya bisa menerima log syslog dari sistem jaringan?

23

Saya ingin mengonfigurasi Ubuntu untuk menerima log dari router DD-WRT. Layar konfigurasi router berisi bagian berikut:

Log Sistem DD-WRT

dan dokumentasi logging -nya berbunyi:

Jika Anda ingin mengirim log ke sistem jarak jauh, masukkan alamat IP mesin tersebut yang juga menjalankan utilitas syslog (perlu soket jaringan terbuka untuk menerima log yang dikirim oleh router).

Saya tidak pernah (secara sadar) menggunakan syslog sebelumnya. Apa yang harus saya lakukan di Ubuntu agar dapat menerima log ini?

ændrük
sumber
Motorola Surfboard Extreme SBG901 saya tampaknya memiliki pengaturan yang mirip dengan DD-WRT Anda. Saya pikir saya akan menambahkan kata kunci itu untuk orang lain yang mencari Google untuk q / a ini.
hobs

Jawaban:

23

Host yang menerima log harus menjalankan beberapa daemon syslog yang dikonfigurasi untuk mendengarkan log jarak jauh. Ada beberapa implementasi syslog di Ubuntu, tetapi rsyslogbiasanya direkomendasikan, dan harus diinstal secara default. Saya tidak dapat mengatakan dari dokumentasi di tautan yang Anda poskan jika DD-WRT mengirim log melalui TCP atau UDP, jadi mungkin diperlukan beberapa eksperimen untuk menemukan pengaturan yang tepat, jika Anda khawatir tentang mengurangi jumlah yang dapat diakses jaringan port pada host Anda.

Ada dua cara untuk mengaktifkan ini: yang pertama lebih sederhana, tetapi mungkin memerlukan integrasi ulang ketika sistem ditingkatkan. Yang kedua sedikit lebih rumit, dan dapat menyebabkan hasil yang membingungkan jika ada perubahan signifikan pada konfigurasi syslog sebagai bagian dari pembaruan. Saya akan memilih yang kedua, tetapi preferensi Anda dapat bervariasi.

Yang pertama adalah mengedit /etc/rsyslogd.conf, dan menghapus inisial #dari baris berikut:

# $ ModLoad imudp
# $ UDPServerRun 514

atau

# $ ModLoad imtcp
# $ InputTCPServerRun 514

Yang kedua adalah untuk membuat file baru, mungkin bernama local-enable-tcp.confdalam /etc/rsyslog.d/, dengan isi sebagai berikut:

# aktifkan penerimaan syslog TCP
$ ModLoad imtcp
$ InputTCPServerRun 514

Jika Anda ingin menggunakan pendekatan file terpisah, dan perlu UDP, ubah kontennya agar sesuai dengan bait UDP di atas. Nama file spesifik tidak penting, tetapi disarankan untuk memulainya dengan "local-" karena namespace ini dicadangkan untuk konfigurasi administrator lokal, dan harus diakhiri dengan ".conf", karena hanya file yang berakhir seperti ini yang secara otomatis termasuk dalam konfigurasi rsyslog.

Jika Anda lebih suka menggunakan implementasi syslog lain, periksa konfigurasi dan dokumentasi untuk implementasi itu: ada kemungkinan bahwa daemon syslog dikonfigurasi untuk tidak mendengarkan pada jaringan secara default, tetapi contoh konfigurasi untuk mengaktifkan kasus umum ini harus didokumentasikan dengan jelas.

Emmet Hikory
sumber
1
Seharusnya ide yang baik untuk memulai nama file dengan nomor dua digit, menetapkan urutan sehubungan dengan file .conf lain yang ada.
enzotib
Heh, yah itu bisa rumit. Tidak ada alasan nama paket tidak dapat dimulai dengan angka dua digit, dan .d / $ {package} - .conf semuanya dicadangkan untuk paket-paket (walaupun orang tidak mungkin memiliki konflik untuk mis. 72-local-myconf.conf ). Kedua, penting untuk mencoba menulis file konfigurasi sedemikian rupa sehingga urutannya tidak kritis. Misalnya, file konfigurasi yang disediakan oleh 0access.conf dari paket hipotetis "0access" akan diterapkan sebelum sebagian besar file konfigurasi dimulai dengan angka dua digit.
Emmet Hikory
1
Mungkin juga perlu mengubah kepemilikan file log Anda: sudo chown syslog:adm /var/log/syslogatau apa pun yang Anda beri nama file log Anda.
hobs
6

Opsi lain adalah menggunakan syslog-ng, mudah digunakan, dan sejauh ini siap untuk digunakan!

sudo apt-get install syslog-ng

Setelah menginstalnya, kami memiliki file conf di /etc/syslog-ng/syslog-ng.conf Jadi, edit saja .conf ini dengan parameter kami, tetapi sebelum itu, buat cadangan file konfigurasi default, dapat berguna nanti jika Anda ingin menyetel beberapa parameter

sudo mv /etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf.bak

Sekarang buat file konfigurasi baru dan edit!

sudo touch /etc/syslog-ng/syslog-ng.conf
sudo nano /etc/syslog-ng/syslog-ng.conf

Jadi, cukup tempel konfigurasi dasar ini untuk mulai bekerja juga:

# Listening to incoming UDP Syslog connections
source mysource { udp(); };

#Add the syslog targets:

destination dest { file("/var/log/Cisco$YEAR$MONTH$R_DAY.log"); };
#destination dest_other_server { udp("1.2.3.4" port(514)); };
#Create the filters that will be used to determine what to do with the received syslog message

#filter filter { ( host("2.3.4.5") and level(notice) and match("username=.*@domain\.local" value("MESSAGE") flags("utf8" "ignore-case")) ); };
filter myfilter { ( level(notice) ); };
#And putting it all together:

log { source(mysource); filter(myfilter); destination(dest);  };

Mudah seperti yang Anda lihat. Hati hati!

Alvarova
sumber
-2

Pada dasarnya, Anda menjalankan daemon (disebut syslogd) pada server Anda untuk perute dd-wrt ke posting log.

Tutorial- http://www.techiecorner.com/1479/how-to-setup-syslog-server-in-ubuntu/

pengguna606723
sumber
5
Hindari memposting alamat panduan lama, bahkan tanpa memeriksa apakah instruksi mereka masih valid. File yang disebutkan dalam panduan tidak ada lagi. Ubuntu menggunakan rsyslog.
enzotib
@enzotib - Walaupun saya setuju bahwa kualitasnya kurang dan tautan harus dihindari, ternyata jawaban ini memberikan apa yang saya butuhkan untuk mencapai tugas yang sama di server Ubuntu 8.04. Ada tiga jawaban di sini, semuanya untuk tiga variasi syslog yang berbeda yang masih digunakan dalam sistem produksi . Jawaban ini bermanfaat. Ia mendapat +1 dari saya.
ghoti
Itu benar tetapi ini pada dasarnya adalah satu-satunya jawaban tautan.
Duncan X Simpson