Accesso a Graylog con Spring Boot

1. Introduzione

Graylog è un servizio di aggregazione dei log. In poche parole, è in grado di raccogliere milioni di messaggi di registro da più origini e visualizzarli in un'unica interfaccia.

Inoltre, fornisce una serie di altre funzionalità come avvisi in tempo reale, dashboard con grafici e grafici e molto altro ancora.

In questo tutorial vedremo come configurare un server Graylog e inviargli messaggi di log da un'applicazione Spring Boot.

2. Configurazione di Graylog

Esistono diversi modi per installare ed eseguire Graylog. In questo tutorial, discuteremo i due modi più rapidi: Docker e Amazon Web Services.

2.1. Docker

I seguenti comandi scaricheranno tutte le immagini Docker richieste e avvieranno un contenitore per ogni servizio:

$ docker run --name mongo -d mongo:3 $ docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ -e ES_JAVA_OPTS="-Xms2g -Xmx4g" \ -e "discovery.type=single-node" -e "xpack.security.enabled=false" \ -e "bootstrap.memory_lock=true" --ulimit memlock=-1:-1 \ -d docker.elastic.co/elasticsearch/elasticsearch:5.6.11 $ docker run --name graylog --link mongo --link elasticsearch \ -p 9000:9000 -p 12201:12201 -p 514:514 -p 5555:5555 \ -e GRAYLOG_WEB_ENDPOINT_URI="//127.0.0.1:9000/api" \ -d graylog/graylog:2.4.6-1

Il dashboard di Graylog è ora disponibile utilizzando l'URL // localhost: 9000 / e il nome utente e la password predefiniti sono entrambi admin .

Sebbene la configurazione Docker sia la più semplice, richiede una notevole quantità di memoria. Inoltre non funziona su Docker per Mac, quindi potrebbe non essere adatto a tutte le piattaforme.

2.2. Amazon Web Services

La prossima opzione più semplice per configurare Graylog per i test è Amazon Web Services. Graylog fornisce un'AMI ufficiale che include tutte le dipendenze richieste , sebbene richieda una configurazione aggiuntiva dopo l'installazione.

Possiamo distribuire rapidamente un'istanza EC2 con l'AMI Graylog facendo clic qui e selezionando una regione. Graylog consiglia di utilizzare un'istanza con almeno 4 GB di memoria .

Dopo l'avvio dell'istanza, è necessario eseguire l'accesso SSH nell'host e apportare alcune modifiche. I seguenti comandi configureranno il servizio Graylog per noi:

$ sudo graylog-ctl enforce-ssl $ sudo graylog-ctl set-external-ip //:443/api/ $ sudo graylog-ctl reconfigure

È inoltre necessario aggiornare il gruppo di sicurezza creato con l'istanza EC2 per consentire il traffico di rete su porte specifiche. Il grafico seguente mostra le porte e i protocolli che devono essere abilitati:

La dashboard di Graylog è ora disponibile utilizzando l'URL /// e il nome utente e la password predefiniti sono entrambi admin .

2.3. Altre installazioni di Graylog

Oltre a Docker e AWS, esistono anche pacchetti Graylog per vari sistemi operativi. Con questo approccio, dobbiamo anche configurare un servizio ElasticSearch e MongoDB .

Per questo motivo, Docker e AWS sono molto più facili da configurare, soprattutto per scopi di sviluppo e test.

3. Invio di messaggi di registro

Con Graylog attivo e in esecuzione, ora dobbiamo configurare la nostra applicazione Spring Boot per inviare messaggi di registro al server Graylog.

Qualsiasi framework di registrazione Java può supportare l'invio di messaggi a un server Graylog utilizzando il protocollo GELF.

3.1. Log4J

Al momento l'unico framework di registrazione ufficialmente supportato è Log4J. Graylog fornisce un appender, disponibile su Maven Central.

Possiamo abilitarlo aggiungendo la seguente dipendenza Maven a qualsiasi file pom.xml :

 org.graylog2 gelfj 1.1.16 

Dobbiamo anche escludere il modulo di avvio della registrazione ovunque utilizziamo un modulo di avvio Spring Boot:

 org.springframework.boot spring-boot-starter-web   org.springframework.boot spring-boot-starter-logging   

Ora possiamo definire un nuovo appender nel nostro file log4j.xml :

Questo configurerà tutti i messaggi di registro con livello INFO o superiore per andare all'appender Graylog, che a sua volta invia il messaggio di registro al server Graylog.

3.2. Altri framework di registrazione

Il mercato Graylog ha librerie aggiuntive che supportano una varietà di altri framework di registrazione come Logback, Log4J2 e altri. Fai solo attenzione che queste librerie non sono gestite da Graylog . Alcuni di loro vengono abbandonati e altri hanno poca o nessuna documentazione.

Usare cautela quando ci si affida a queste librerie di terze parti.

3.3. Graylog Collector Sidecar

Un'altra opzione per la raccolta dei registri è il Graylog Collector Sidecar. Il sidecar è un processo che corre lungo un raccoglitore di file, inviando il contenuto del file di registro a un server Graylog.

Il Sidecar è un'ottima opzione per le applicazioni in cui non è possibile modificare i file di configurazione del registro. E poiché legge i file di registro direttamente dal disco, può essere utilizzato anche per integrare i messaggi di registro da qualsiasi piattaforma e linguaggio di programmazione .

4. Visualizzazione dei messaggi in Graylog

Possiamo utilizzare la dashboard di Graylog per confermare la corretta consegna dei nostri messaggi di registro. Utilizzando l' origine del filtro : localhost mostrerà i messaggi di log dalla nostra configurazione di log4j di esempio sopra:

5. conclusione

Graylog è solo uno dei tanti servizi di aggregazione dei log. Può cercare rapidamente milioni di messaggi di registro, visualizzare i dati di registro in tempo reale e inviare avvisi quando determinate condizioni sono vere.

L'integrazione di Graylog in un'applicazione Spring Boot richiede solo poche righe di configurazione e senza alcun nuovo codice.

Esempi di codice, come sempre, possono essere trovati su GitHub.