Wysyłanie dzienników na serwer Graylog2

11

Właśnie skonfigurowałem serwer Graylog2 i chcę wysłać wszystkie dzienniki z mojego głównego serwera do serwera graylog. Włączyłem rejestrowanie dla głównego serwera i wysyłam logi do mojego serwera graylog, dodając *.* @logs.example.com:1337do /etc/rsyslog.conf.

Chcę, aby Graylog2 zbierał wszystkie moje dzienniki Apache, dzienniki systemowe (dla logowania SSH, odrzucone logowania) i wszelkie inne dzienniki, które muszę monitorować.

W przypadku dzienników Apache chciałbym również dzienniki Rails. Moje witryny znajdują się w, /srv/www/a następnie struktura jest sitename.com/public_htmli sitename.com/logs. Mam wiele witryn na serwerze i chciałbym w łatwy sposób wyświetlić wszystkie błędy i zrobić z nich ładne wykresy, dlatego chcę używać Graylog2 ...

Pliki dziennika w folderze dzienników to access.logi error.log.

Dzienniki Railsów byłyby włączone sitename.com/public_html/log. To zawiera production.log.

Dean Perry
źródło
Jakie jest tutaj pytanie? Jeśli masz zainstalowany rsyslog, możesz go użyć do wysłania dzienników Rails / Apache do Graylog2 ( rsyslog.com/doc/imfile.html )
wielomian

Odpowiedzi:

10

To jest stare, ale pomyślałem, że napiszę tę metodę, której używam dla witryny o niskim / średnim ruchu (nie wiem, czy zadziała dobrze w przypadku witryn o dużym natężeniu ruchu):

W Apache definiuję format CustomLog o nazwie, graylog2_accessktóry formatuje dziennik dostępu do formatu GELF, a następnie wysyłam mój dziennik przez Graylog2, przesyłając dane dziennika przez nc, aby wysłać komunikaty GELF do wejścia Graylog2.

Oto niestandardowy format, który tworzy (czytelny dla człowieka):

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

Dla konfiguracji Apache, oto wersja kopiuj / wklej:

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

Następnie w konfiguracji hosta:

CustomLog "|nc -u graylogserver 12201" graylog2_access
ETL
źródło
+1 Niezły! Muszę spróbować tego na jednym z naszych systemów, ale zamiast tego z BŁĘDEM.
Henk
@Henk - jeśli tworzysz format dziennika błędów, daj mi znać, chcę, ale nie poświęciłem jeszcze czasu. Sprawdź także serverfault.com/questions/582510/…, aby uzyskać informacje na temat rzeczy, na które natknąłem się później.
ETL,
5

Możesz również wysłać swoje pliki dziennika na serwer graylog2 za pomocą tego prostego polecenia:

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

Używam tego głównie do celów testowych, aby ustalić, czy mój format dziennika jest przystosowany do łatwego wyszukiwania w graylog2. Do użytku produkcyjnego nie będziesz chciał konfigurować rsyslog lub syslog-ng.

Prawdopodobnie możesz ogonić plik dziennika szyn i zobaczyć, co się stanie.

Pierig Le Saux
źródło
Podoba mi się prostota tej odpowiedzi: proste i bez dodatkowych narzędzi. Nie wiem, co zrobić z znacznikami czasu pliku dziennika: może nic nie można zrobić i nie mają one znaczenia?
texas-bronius
2

Graylog2 akceptuje tylko dzienniki w dwóch formatach: standardowy syslog i rozszerzony format dziennika Graylog (znany również jako GELF). Arbitralne dzienniki na dysku będą wymagać procesu innej firmy, aby wykorzystać dzienniki i przetłumaczyć je na formę, która jest dla Ciebie przydatna.

Spójrz na Logstash . Większość ludzi myśli o tym jak o narzędziu do indeksowania plików dziennika za pomocą ElasticSearch, ale zawiera także uniwersalny „router dziennika”, który pozwala na śledzenie wiązki plików na dysku i wysyłanie ich do komponentu rejestrującego, takiego jak Graylog.

natacado
źródło
2
Rsyslog może łatwo odczytać dzienniki: rsyslog.com/doc/imfile.html
wielomian
1
Podczas gdy rsyslog może wykorzystywać inne pliki jako dane wejściowe, użycie logstash ma tę zaletę, że może korzystać ze wstępnie zdefiniowanych wyrażeń regularnych Grok (patrz logstash.net/docs/1.0.17/filters/grok ), aby uzyskać pewną strukturę w komunikatach dziennika i nie tylko zwykły tekst.
joschi,
syslog-ng może zrobić to samo z czystszą konfiguracją w porównaniu z rsyslog: loggly.com/support/sending-data/logging-from/syslog/syslog-ng/…
HVNSweeting
2

Możesz użyć apache2gelfskryptów stąd .

Anton
źródło