Mengirim log ke server Graylog2

11

Saya baru saja menyiapkan server Graylog2 dan saya ingin mengirim semua log dari server utama saya ke server Graylog. Saya telah mengaktifkan logging untuk server utama dan akan mengirim log ke server graylog saya dengan menambahkan *.* @logs.example.com:1337ke /etc/rsyslog.conf.

Yang saya inginkan adalah agar Graylog2 mengumpulkan semua log Apache saya, log sistem (untuk login SSH, login yang ditolak) dan semua log lain yang perlu saya monitor.

Untuk log Apache, saya juga ingin log Rails. Situs saya terletak di /srv/www/dan kemudian strukturnya adalah sitename.com/public_htmldan sitename.com/logs. Saya memiliki banyak situs di server dan saya ingin cara mudah untuk melihat semua kesalahan dan membuat beberapa grafik yang bagus dari itu maka mengapa saya ingin menggunakan Graylog2 ...

File log dalam folder log adalah access.logdan error.log.

Log Rails akan berada di sitename.com/public_html/log. Ini berisi production.log.

Dean Perry
sumber
Apa pertanyaannya di sini? Jika Anda telah menginstal rsyslog, Anda dapat menggunakannya untuk mengirim log Rails / Apache ke Graylog2 ( rsyslog.com/doc/imfile.html )
polinomial
sudahkah kamu mencoba ini docs.graylog.org/en/1.2/pages/collector.html
zx1986

Jawaban:

10

Ini sudah lama, tetapi saya pikir saya akan menulis metode ini yang saya gunakan untuk situs dengan lalu lintas rendah / menengah (tidak tahu apakah itu akan berfungsi dengan baik untuk situs lalu lintas berat):

Di Apache, saya mendefinisikan format CustomLog yang memformat graylog2_accesslog akses ke format GELF dan kemudian saya mengirim log saya melalui Graylog2 dengan memipakan data log melalui nc untuk mengirim pesan GELF ke input Graylog2.

Berikut adalah format khusus yang dibuatnya (dapat dibaca manusia):

{ 
 "version": "1.1",
 "host": "%V",
 "short_message": "%r",
 "timestamp": %{%s}t,
 "level": 6,
 "_user_agent": "%{User-Agent}i",
 "_source_ip": "%a",
 "_duration_usec": %D,
 "_duration_sec": %T,
 "_request_size_byte": %O,
 "_http_status": %s,
 "_http_request_path": "%U",
 "_http_request": "%U%q",
 "_http_method": "%m",
 "_http_referer": "%{Referer}i"
}

Untuk konfigurasi Apache, berikut adalah versi salin / rekat:

LogFormat "{ \"version\": \"1.1\", \"host\": \"%V\", \"short_message\": \"%r\", \"timestamp\": %{%s}t, \"level\": 6, \"_user_agent\": \"%{User-Agent}i\", \"_source_ip\": \"%a\", \"_duration_usec\": %D, \"_duration_sec\": %T, \"_request_size_byte\": %O, \"_http_status\": %s, \"_http_request_path\": \"%U\", \"_http_request\": \"%U%q\", \"_http_method\": \"%m\", \"_http_referer\": \"%{Referer}i\" }" graylog2_access

Kemudian dalam konfigurasi host Anda:

CustomLog "|nc -u graylogserver 12201" graylog2_access
ETL
sumber
+1 Bagus! Harus mencoba ini di salah satu sistem kami, tetapi dengan ERROR sebagai gantinya.
Henk
@ Henk - jika Anda melakukan format untuk log Kesalahan, beri tahu saya, saya ingin tetapi belum meluangkan waktu. Juga, periksa serverfault.com/questions/582510/... untuk beberapa info tentang hal-hal yang saya temui nanti.
ETL
5

Anda juga dapat mengirim file log ke server graylog2 menggunakan perintah sederhana ini:

tail -F -q $yourlogfile |   while read -r line ; do   echo "<7> $hostnamesendingthelog $line" | nc -w 1 -u $graylogserver 514;   done;

Saya menggunakan ini terutama untuk tujuan pengujian untuk menentukan apakah format log saya disesuaikan untuk query yang mudah di graylog2. Untuk penggunaan produksi Anda tidak akan mengatur rsyslog atau syslog-ng.

Anda mungkin dapat mengekor file log rel Anda dan melihat apa yang terjadi.

Pierig Le Saux
sumber
Saya suka kesederhanaan balasan ini: Mudah dan tidak ada alat tambahan. Saya tidak tahu harus berbuat apa tentang cap waktu File Log: mungkin tidak ada yang harus dilakukan dan itu tidak masalah?
texas-bronius
2

Graylog2 hanya menerima log dalam dua format: syslog standar dan format log extended Graylog (alias GELF). Log sewenang-wenang pada disk akan membutuhkan beberapa proses pihak ketiga untuk mengkonsumsi log dan menerjemahkannya ke dalam bentuk yang berguna bagi Anda.

Lihatlah Logstash . Kebanyakan orang menganggapnya sebagai alat untuk mengindeks file log menggunakan ElasticSearch, tetapi juga berisi tujuan umum "log router" yang memungkinkan Anda mengekor banyak file pada disk dan mengirimkannya ke komponen logging seperti Graylog.

natacado
sumber
2
Rsyslog dapat dengan mudah membaca log: rsyslog.com/doc/imfile.html
polinomial
1
Walaupun rsyslog dapat menggunakan file lain sebagai input, menggunakan logstash memiliki keuntungan karena dapat menggunakan ekspresi reguler Grok yang telah ditentukan sebelumnya (lihat logstash.net/docs/1.0.17/filters/grok ) untuk mendapatkan beberapa struktur ke dalam pesan log dan bukan hanya plaintext.
joschi
syslog-ng dapat melakukan hal yang sama dengan konfigurasi yang lebih bersih dibandingkan dengan rsyslog: loggly.com/support/sending-data/logging-from/syslog/syslog-ng/…
HVNSweeting
2

Anda dapat menggunakan apache2gelfskrip dari sini .

Anton
sumber