Inloggen op Graylog met Spring Boot

1. Inleiding

Graylog is een logboekaggregatieservice. Simpel gezegd, het is in staat om miljoenen logboekberichten uit meerdere bronnen te verzamelen en deze in één interface weer te geven.

En het biedt ook een aantal andere functies, zoals realtime waarschuwingen, dashboards met grafieken en diagrammen, en nog veel meer.

In deze zelfstudie zullen we zien hoe u een Graylog-server instelt en er logboekberichten naar verzendt vanuit een Spring Boot-toepassing.

2. Graylog instellen

Er zijn verschillende manieren om Graylog te installeren en uit te voeren. In deze tutorial bespreken we de twee snelste manieren: Docker en Amazon Web Services.

2.1. Docker

Met de volgende opdrachten worden alle vereiste Docker-images gedownload en wordt een container voor elke service gestart:

$ 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- knooppunt "-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

Het Graylog-dashboard is nu beschikbaar via de URL // localhost: 9000 / en de standaard gebruikersnaam en wachtwoord zijn beide beheerder.

Hoewel de Docker-installatie de eenvoudigste is, is er een aanzienlijke hoeveelheid geheugen voor nodig. Het werkt ook niet op Docker voor Mac, dus het is mogelijk niet geschikt voor alle platforms.

2.2. Amazon Web Services

De volgende gemakkelijkste optie om Graylog in te stellen voor testen is Amazon Web Services. Graylog biedt een officiële AMI die alle vereiste afhankelijkheden bevat, hoewel het na de installatie wat extra configuratie vereist.

We kunnen snel een EC2-instantie implementeren met de Graylog AMI door hier te klikken en een regio te selecteren. Graylog raadt aan om een ‚Äč‚Äčinstantie met minimaal 4 GB geheugen te gebruiken.

Nadat de instantie is gestart, moeten we SSH in de host plaatsen en een paar wijzigingen aanbrengen. De volgende opdrachten zullen de Graylog-service voor ons configureren:

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

We moeten ook de beveiligingsgroep bijwerken die is gemaakt met de EC2-instantie om netwerkverkeer op specifieke poorten toe te staan. De onderstaande afbeelding toont de poorten en protocollen die moeten worden ingeschakeld:

Het Graylog-dashboard is nu beschikbaar via de URL /// en de standaard gebruikersnaam en wachtwoord zijn beide beheerder.

2.3. Andere Graylog-installaties

Naast Docker en AWS zijn er ook Graylog-pakketten voor verschillende besturingssystemen. Bij deze aanpak moeten we ook een ElasticSearch- en MongoDB-service opzetten.

Om deze reden zijn Docker en AWS veel eenvoudiger in te stellen, vooral voor ontwikkelings- en testdoeleinden.

3. Logboekberichten verzenden

Nu Graylog actief is, moeten we nu onze Spring Boot-applicatie configureren om logberichten naar de Graylog-server te sturen.

Elk Java-framework voor logboekregistratie kan het verzenden van berichten naar een Graylog-server ondersteunen met behulp van het GELF-protocol.

3.1. Log4J

Op dit moment is Log4J het enige officieel ondersteunde framework voor logboekregistratie. Graylog biedt een appender, die beschikbaar is op Maven Central.

We kunnen het inschakelen door de volgende Maven-afhankelijkheid toe te voegen aan een pom.xml het dossier:

 org.graylog2 gelfj 1.1.16 

We moeten ook de startmodule voor logboekregistratie uitsluiten overal waar we een Spring Boot-startermodule gebruiken:

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

Nu kunnen we een nieuwe appender definiëren in onze log4j.xml het dossier:

Hiermee worden alle logberichten met INFO-niveau of hoger geconfigureerd om naar de Graylog-appender te gaan, die op zijn beurt het logbericht naar de Graylog-server verzendt.

3.2. Andere kaders voor logboekregistratie

De Graylog-marktplaats heeft extra bibliotheken die een verscheidenheid aan andere logboekregistratie-frameworks ondersteunen, zoals Logback, Log4J2 en meer. Pas echter op dat deze bibliotheken niet door Graylog worden onderhouden. Sommigen van hen zijn verlaten, en anderen hebben weinig of geen documentatie.

Voorzichtigheid is geboden wanneer u vertrouwt op deze bibliotheken van derden.

3.3. Graylog Collector zijspan

Een andere optie voor het verzamelen van logboeken is de Graylog Collector Sidecar. De zijspan is een proces dat langs een bestandsverzamelaar loopt en de inhoud van logbestanden naar een Graylog-server verzendt.

De zijspan is een geweldige optie voor toepassingen waarbij het wijzigen van logconfiguratiebestanden niet mogelijk is. En omdat het logboekbestanden rechtstreeks van de schijf leest, Het kan ook worden gebruikt om logberichten van elk platform en elke programmeertaal te integreren.

4. Berichten bekijken in Graylog

We kunnen het Graylog-dashboard gebruiken om de succesvolle aflevering van onze logberichten te bevestigen. Met behulp van het filter bron: localhost toont de logboekberichten van ons voorbeeld log4j config hierboven:

5. Conclusie

Graylog is slechts een van de vele logboekaggregatieservices. Het kan snel miljoenen logboekberichten doorzoeken, loggegevens in realtime visualiseren en waarschuwingen verzenden wanneer aan bepaalde voorwaarden wordt voldaan.

Het integreren van Graylog in een Spring Boot-applicatie vereist slechts een paar regels configuratie en zonder enige nieuwe code.

Codevoorbeelden zijn, zoals altijd, te vinden op GitHub.