Invio dei log al server Graylog2


11

Ho appena installato un server Graylog2 e sto cercando di inviare tutti i registri dal mio server principale al server graylog. Ho abilitato la registrazione per il server principale e sto inviando registri al mio server graylog aggiungendo *.* @logs.example.com:1337a /etc/rsyslog.conf.

Quello che voglio è che Graylog2 raccolga tutti i miei registri Apache, i registri di sistema (per accessi SSH, accessi rifiutati) e tutti gli altri registri che devo monitorare.

Per i registri di Apache, vorrei anche i registri di Rails. I miei siti si trovano in /srv/www/e quindi la struttura è sitename.com/public_htmle sitename.com/logs. Ho molti siti sul server e vorrei un modo semplice per visualizzare tutti gli errori e trarne alcuni bei grafici, quindi perché voglio usare Graylog2 ...

I file di registro nella cartella dei registri sono access.loge error.log.

I registri di Rails sarebbero presenti sitename.com/public_html/log. Questo contiene production.log.


Qual è la domanda qui? Se hai installato rsyslog puoi usarlo per inviare i registri Rails / Apache a Graylog2 ( rsyslog.com/doc/imfile.html )
polinomio

Risposte:


10

Questo è vecchio, ma ho pensato di scrivere questo metodo che utilizzo per siti a traffico medio / basso (non so se funzionerà bene per siti a traffico intenso):

In Apache, definisco un formato CustomLog chiamato graylog2_accessche formatta il registro di accesso in un formato GELF e quindi invio il mio registro tramite Graylog2 eseguendo il piping dei dati del registro tramite nc per inviare messaggi GELF all'input di Graylog2.

Ecco il formato personalizzato che crea (leggibile):

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

Per la configurazione di Apache, ecco una versione copia / incolla:

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

Quindi nella configurazione dell'host:

CustomLog "|nc -u graylogserver 12201" graylog2_access

+1 Bello! Devo provare questo su uno dei nostri sistemi, ma con ERRORE invece.
Henk,

@Henk - se si esegue un formato per il registro degli errori, per favore fatemi sapere, voglio ma non ho ancora preso il tempo. Inoltre, controlla serverfault.com/questions/582510/… per alcune informazioni sulle cose che ho incontrato in seguito.
ETL,

5

Puoi anche inviare i tuoi file di registro al server graylog2 usando questo semplice comando:

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

Lo uso principalmente a scopo di test per determinare se il mio formato di registro è adattato per una facile query in graylog2. Per l'uso in produzione non dovrai impostare rsyslog o syslog-ng.

Probabilmente puoi adattare il file di registro delle rotaie e vedere cosa succede.


Mi piace la semplicità di questa risposta: semplice e senza strumenti extra. Non so cosa fare con i timestamp del Log File: forse non c'è niente da fare e non contano?
texas-bronius,

2

Graylog2 accetta solo i log in due formati: syslog standard e il formato log esteso Graylog (aka GELF). I log arbitrari su disco avranno bisogno di alcuni processi di terze parti per consumare i log e tradurli in un modulo che è utile per te.

Dai un'occhiata a Logstash . La maggior parte delle persone lo considera uno strumento per indicizzare i file di registro usando ElasticSearch, ma contiene anche un "router di registro" per scopi generici che consente di adattare un mucchio di file sul disco e inviarli a un componente di registrazione come Graylog.


2
Rsyslog può leggere facilmente i registri: rsyslog.com/doc/imfile.html
polinomio

1
Mentre rsyslog può utilizzare altri file come input, l'uso di logstash ha il vantaggio di poter utilizzare le espressioni regolari predefinite di Grok (consultare logstash.net/docs/1.0.17/filters/grok ) per ottenere una struttura nei messaggi di registro e non solo testo in chiaro.
joschi,

syslog-ng può fare lo stesso con una configurazione più pulita rispetto a rsyslog: loggly.com/support/sending-data/logging-from/syslog/syslog-ng/…
HVNSweeting

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.