Günlükleri Graylog2 sunucusuna gönderme


11

Sadece bir Graylog2 sunucusu kurdum ve ana sunucumdan graylog sunucusuna tüm günlükleri göndermek istiyorum. Ben ana sunucu için kaydını bir ve ekleyerek benim graylog sunucuya günlükleri gönderiyorum *.* @logs.example.com:1337için /etc/rsyslog.conf.

İstediğim şey, Graylog2'nin tüm Apache günlüklerimi, sistem günlüklerimi (SSH girişleri, reddedilen girişler için) ve izlemem gereken diğer günlükleri toplamasını sağlamak.

Apache günlükleri için, Rails günlüklerini de istiyorum. Sitelerim yer alıyor /srv/www/ve sonra yapı sitename.com/public_htmlve sitename.com/logs. Sunucuda birçok sitem var ve tüm hataları görüntülemek ve bunlardan bazı güzel grafikler yapmak için kolay bir yol istiyorum, bu yüzden neden Graylog2 kullanmak istiyorum ...

Logs klasöründeki günlük dosyaları access.logve error.log.

Rails günlükleri olacaktı sitename.com/public_html/log. Bu içerir production.log.


Burada soru nedir? Rsyslog yüklüyse, Rails / Apache günlüklerini Graylog2'ye ( rsyslog.com/doc/imfile.html ) göndermek için kullanabilirsiniz
polinom

Yanıtlar:


10

Bu eski, ama düşük / orta trafik sitesi için kullandığım bu yöntemi yazacağımı düşündüm (ağır trafik sitesi için iyi çalışıp çalışmayacağını bilmiyorum):

Apache'de, graylog2_accesserişim günlüğünü bir GELF formatına formatlayan denilen bir CustomLog formatı tanımlarım ve daha sonra Graylog2'nin girişine GELF mesajları göndermek için log verilerini nc aracılığıyla pipetleyerek Graylog2 aracılığıyla logumu gönderirim.

Oluşturduğu özel biçim (insan tarafından okunabilir):

{ 
 "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"
}

Apache yapılandırması için bir kopyalama / yapıştırma sürümü:

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

Ardından ana makine yapılandırmanızda:

CustomLog "|nc -u graylogserver 12201" graylog2_access

+1 Güzel olan! Bunu sistemlerimizden birinde denemek zorundasınız, bunun yerine ERROR ile.
Henk

@Henk - Hata günlüğü için bir biçim yaparsanız, lütfen bana bildirin, istiyorum ama henüz zaman almadı. Ayrıca, daha sonra karşılaştığım şeyler hakkında serverfault.com/questions/582510/… adresini kontrol edin .
ETL

5

Bu basit komutu kullanarak günlük dosyalarınızı graylog2 sunucusuna da gönderebilirsiniz:

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

Günlük biçimimin graylog2'de kolay sorgulama için uyarlanıp uyarlanmadığını belirlemek için bunu esas olarak test amaçlı kullanıyorum. Üretim kullanımı için rsyslog veya syslog-ng kurmak istemeyeceksiniz.

Muhtemelen raylar günlük dosyanızı kuyruk ve ne olduğunu görebilirsiniz.


Bu cevabın basitliğini seviyorum: Basit ve ekstra bir araç yok. Günlük Dosyası zaman damgaları hakkında ne yapacağımı bilmiyorum: Belki hiçbir şey yapılmayacak ve önemli değil mi?
texas-bronius

2

Graylog2 günlükleri yalnızca iki biçimde kabul eder: standart syslog ve Graylog genişletilmiş günlük biçimi (GELF olarak da bilinir). Diskteki keyfi günlüklerin, günlükleri tüketmek ve sizin için yararlı bir forma dönüştürmek için bazı üçüncü taraf işlemlerine ihtiyacı olacaktır.

Logstash'a bir göz atın . Çoğu kişi bunu Elastik Arama'yı kullanarak günlük dosyalarını endekslemek için bir araç olarak düşünür, ancak aynı zamanda diskteki bir grup dosyayı kuyruğa almanızı ve Graylog gibi bir günlük bileşenine göndermenizi sağlayan genel amaçlı bir "günlük yönlendirici" içerir.



1
Rsyslog diğer dosyaları girdi olarak kullanabilirken, logstash kullanmak , günlük mesajlarına bir yapı almak için Grok'un önceden tanımlanmış düzenli ifadelerini kullanabilme avantajına sahiptir (bkz. Logstash.net/docs/1.0.17/filters/grok ) ve sadece düz metin değil.
joschi

syslog-ng, rsyslog ile karşılaştırıldığında daha temiz yapılandırma ile aynısını yapabilir: loggly.com/support/sending-data/logging-from/syslog/syslog-ng/…
HVNSweeting 28:13

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.