Logge på Graylog med Spring Boot

1. Introduktion

Graylog er en logaggregationstjeneste. Kort sagt, det er i stand til at indsamle millioner af logbeskeder fra flere kilder og vise dem i en enkelt grænseflade.

Og det giver også en række andre funktioner såsom realtidsadvarsler, dashboards med grafer og diagrammer og meget mere.

I denne vejledning ser vi, hvordan du opretter en Graylog-server og sender logmeddelelser til den fra en Spring Boot-applikation.

2. Opsætning af Graylog

Der er flere måder at installere og køre Graylog på. I denne vejledning diskuterer vi de to hurtigste måder: Docker og Amazon Web Services.

2.1. Docker

Følgende kommandoer downloader alle de krævede Docker-billeder og starter en container til hver tjeneste:

$ 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 - navn grålog - 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 grålog / grålog: 2.4.6-1

Graylog-instrumentbrættet er nu tilgængeligt ved hjælp af URL'en // lokal vært: 9000 / og standardbrugernavnet og adgangskoden er begge admin.

Mens Docker-opsætningen er den enkleste, kræver det en betydelig mængde hukommelse. Det fungerer heller ikke på Docker til Mac, så det er muligvis ikke egnet til alle platforme.

2.2. Amazon Web Services

Den næste nemmeste mulighed for at konfigurere Graylog til test er Amazon Web Services. Graylog leverer en officiel AMI, der inkluderer alle de nødvendige afhængigheder, selvom det kræver yderligere konfiguration efter installationen.

Vi kan hurtigt implementere en EC2-forekomst med Graylog AMI ved at klikke her og vælge en region. Graylog anbefaler at bruge en forekomst med mindst 4 GB hukommelse.

Når forekomsten er startet, skal vi SSH ind i værten og foretage et par ændringer. Følgende kommandoer konfigurerer Graylog-tjenesten for os:

$ sudo grålog-ctl håndhæve-ssl $ sudo grålog-ctl sæt-ekstern-ip //: 443 / api / $ sudo grålog-ctl omkonfigurere

Vi har også brug for at opdatere sikkerhedsgruppen, der blev oprettet med EC2-forekomsten for at tillade netværkstrafik på bestemte porte. Grafikken nedenfor viser de porte og protokoller, der skal aktiveres:

Graylog-instrumentbrættet er nu tilgængeligt ved hjælp af URL'en /// og standardbrugernavnet og adgangskoden er begge admin.

2.3. Andre Graylog-installationer

Bortset fra Docker og AWS er ​​der også Graylog-pakker til forskellige operativsystemer. Med denne tilgang er vi også nødt til at oprette en ElasticSearch- og MongoDB-tjeneste.

Af denne grund er Docker og AWS meget lettere at konfigurere, især til udviklings- og testformål.

3. Afsendelse i logmeddelelser

Når Graylog er i gang, skal vi nu konfigurere vores Spring Boot-applikation til at sende logmeddelelser til Graylog-serveren.

Alle Java-logningsrammer kan understøtte afsendelse af meddelelser til en Graylog-server ved hjælp af GELF-protokollen.

3.1. Log4J

På dette tidspunkt er den eneste officielt understøttede logningsramme Log4J. Graylog leverer en appender, som er tilgængelig på Maven central.

Vi kan aktivere det ved at tilføje følgende Maven-afhængighed til enhver pom.xml fil:

 org.graylog2 gelfj 1.1.16 

Vi skal også udelukke startmodulet til logning overalt, hvor vi bruger et Spring Boot-startmodul:

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

Nu kan vi definere en ny appender i vores log4j.xml fil:

Dette konfigurerer alle logbeskeder med INFO-niveau eller højere til at gå til Graylog-appender, som igen sender logbeskeden til Graylog-serveren.

3.2. Andre logningsrammer

Graylog-markedet har yderligere biblioteker, der understøtter en række andre logningsrammer, såsom Logback, Log4J2 og mere. Bare pas på, at disse biblioteker ikke vedligeholdes af Graylog. Nogle af dem er opgivet, og andre har ringe eller ingen dokumentation.

Der skal udvises forsigtighed, når man stoler på disse tredjepartsbiblioteker.

3.3. Graylog Collector Sidevogn

En anden mulighed for logsamling er Graylog Collector Sidecar. Sidevognen er en proces, der kører langs en filopsamler og sender logfilindhold til en Graylog-server.

Sidevognen er en god mulighed for applikationer, hvor det ikke er muligt at ændre logkonfigurationsfiler. Og fordi den læser logfiler direkte fra disken, det kan også bruges til at integrere logmeddelelser fra enhver platform og programmeringssprog.

4. Visning af meddelelser i Graylog

Vi kan bruge Graylog-dashboardet til at bekræfte vellykket levering af vores logmeddelelser. Brug af filteret kilde: localhost viser logmeddelelserne fra vores prøve log4j konfiguration ovenfor:

5. Konklusion

Graylog er blot en af ​​mange log-aggregeringstjenester. Det kan hurtigt søge i millioner af logbeskeder, visualisere logdata i realtid og sende alarmer, når visse betingelser er opfyldt.

Integration af Graylog i en Spring Boot-applikation kræver kun et par konfigurationslinjer og uden nogen ny kode.

Kodeprøver kan som altid findes på GitHub.