Logger på Graylog med Spring Boot

1. Introduksjon

Graylog er en loggaggregeringstjeneste. Enkelt sagt, den er i stand til å samle millioner av loggmeldinger fra flere kilder og vise dem i et enkelt grensesnitt.

Og det gir også en rekke andre funksjoner som sanntidsvarsler, dashbord med grafer og diagrammer og mye mer.

I denne opplæringen vil vi se hvordan du setter opp en Graylog-server og sender loggmeldinger til den fra en Spring Boot-applikasjon.

2. Sette opp Graylog

Det er flere måter å installere og kjøre Graylog på. I denne opplæringen vil vi diskutere de to raskeste måtene: Docker og Amazon Web Services.

2.1. Docker

Følgende kommandoer laster ned alle nødvendige Docker-bilder og starter en container for 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ålogg --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ålogg / grålogg: 2.4.6-1

Graylog dashbordet er nå tilgjengelig ved hjelp av URL-en // lokal vert: 9000 / og standard brukernavn og passord er begge admin.

Mens Docker-oppsettet er det enkleste, krever det en betydelig mengde minne. Det fungerer heller ikke på Docker for Mac, så det kan hende det ikke passer for alle plattformer.

2.2. Amazon Web Services

Det neste enkleste alternativet for å konfigurere Graylog for testing er Amazon Web Services. Graylog tilbyr en offisiell AMI som inkluderer alle nødvendige avhengigheter, selv om det krever litt ekstra konfigurasjon etter installasjonen.

Vi kan raskt distribuere en EC2-forekomst med Graylog AMI ved å klikke her og velge en region. Graylog anbefaler å bruke en forekomst med minst 4 GB minne.

Etter at forekomsten har startet, må vi SSH inn i verten og gjøre noen endringer. Følgende kommandoer konfigurerer Graylog-tjenesten for oss:

$ sudo graylog-ctl håndheve-ssl $ sudo graylog-ctl sett-ekstern-ip //: 443 / api / $ sudo graylog-ctl omkonfigurere

Vi må også oppdatere sikkerhetsgruppen som ble opprettet med EC2-forekomsten for å tillate nettverkstrafikk på bestemte porter. Grafikken nedenfor viser portene og protokollene som må aktiveres:

Graylog-dashbordet er nå tilgjengelig ved hjelp av URL-en /// og standard brukernavn og passord er begge admin.

2.3. Andre Graylog-installasjoner

Bortsett fra Docker og AWS, er det også Graylog-pakker for forskjellige operativsystemer. Med denne tilnærmingen må vi også sette opp en ElasticSearch og MongoDB-tjeneste.

Av denne grunn er Docker og AWS mye enklere å sette opp, spesielt for utviklings- og testformål.

3. Sende i loggmeldinger

Når Graylog er i gang, må vi nå konfigurere vår Spring Boot-applikasjon til å sende loggmeldinger til Graylog-serveren.

Ethvert Java-loggingsrammeverk kan støtte sending av meldinger til en Graylog-server ved hjelp av GELF-protokollen.

3.1. Log4J

For øyeblikket er det eneste offisielt støttede loggingsrammeverket Log4J. Graylog tilbyr en appender, som er tilgjengelig på Maven sentral.

Vi kan aktivere det ved å legge til følgende Maven-avhengighet til noen pom.xml fil:

 org.graylog2 gelfj 1.1.16 

Vi må også ekskludere loggstartmodulen hvor som helst vi bruker en Spring Boot startmodul:

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

Nå kan vi definere en ny appender i vår log4j.xml fil:

Dette vil konfigurere alle loggmeldinger med INFO-nivå eller høyere for å gå til Graylog appender, som igjen sender loggmeldingen til Graylog-serveren.

3.2. Andre loggingsrammer

Graylog-markedet har flere biblioteker som støtter en rekke andre loggerammer som Logback, Log4J2 og mer. Bare pass på at disse bibliotekene ikke blir vedlikeholdt av Graylog. Noen av dem er forlatt, og andre har liten eller ingen dokumentasjon.

Forsiktighet bør utvises når du stoler på disse tredjepartsbibliotekene.

3.3. Graylog Collector Sidevogn

Et annet alternativ for loggsamling er Graylog Collector Sidecar. Sidevognen er en prosess som kjører langs en filsamler, og sender innhold av loggfiler til en Graylog-server.

Sidevognen er et flott alternativ for applikasjoner der det ikke er mulig å endre loggkonfigurasjonsfiler. Og fordi den leser loggfiler direkte fra disken, den kan også brukes til å integrere loggmeldinger fra hvilken som helst plattform og programmeringsspråk.

4. Vise meldinger i Graylog

Vi kan bruke Graylog dashbordet til å bekrefte levering av loggmeldingene våre. Bruke filteret kilde: localhost vil vise loggmeldingene fra eksemplet vårt log4j konfigurasjon over:

5. Konklusjon

Graylog er bare en av mange tjenester for loggaggregering. Det kan raskt søke i millioner av loggmeldinger, visualisere loggdata i sanntid og sende varsler når visse forhold er oppfylt.

Integrering av Graylog i et Spring Boot-program krever bare noen få konfigurasjonslinjer og uten noen ny kode.

Kodeeksempler, som alltid, finnes på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found