Selvstyrt overvåking av vårstartprogrammer

1. Introduksjon

En av de mange flotte funksjonene til Spring Boot er settet med innebygde aktuatorer. Disse aktuatorene er en enkel måte å overvåke og kontrollere omtrent alle aspekter av en Spring Boot-applikasjon.

I denne opplæringen vil vi se på å bruke beregningsaktuatoren til å lage en selvstyrt overvåkingsløsning for Spring Boot-applikasjoner.

2. Metrikkdatabase

Den første delen av overvåking av Spring Boot-applikasjoner er å velge en beregningsdatabase. Som standard vil Spring Boot konfigurere et mikrometerregistreringsregister i alle applikasjoner.

Denne standardimplementeringen samler et forhåndsdefinert sett med applikasjonsberegninger som minne og CPU-bruk, HTTP-forespørsler og noen få andre. Men disse beregningene lagres bare i minnet, noe som betyr at de vil gå tapt når applikasjonen startes på nytt.

For å lage en egenhostet overvåkingsløsning, bør vi først velge en beregningsdatabase som lever utenfor Spring Boot-applikasjonen. De følgende avsnittene vil diskutere bare noen få av de tilgjengelige alternativene for selvhushold.

Vær oppmerksom på at Spring Boot oppdager en annen beregningsdatabase på klassestien, deaktiverer den automatisk minnet i registeret.

2.1. TilstrømningDB

InfluxDB er en åpen kildekode-tidsseriedatabase. Den raskeste måten å komme i gang med InfluxDB er å kjøre den lokalt som en Docker-container:

docker kjøre -p 8086: 8086 -v / tmp: / var / lib / influxdb influxdb

Merk at dette vil lagre beregninger på det lokale / tmp skillevegg. Dette er greit for utvikling og testing, men vil ikke være et godt valg for produksjonsmiljøer.

Når InfluxDB er i gang, Vi kan konfigurere Spring Boot-applikasjonen til å publisere beregninger for den ved å legge til den aktuelle mikrometeravhengigheten:

 io.mikrometer mikrometer-registertilstrømning 

I tillegg må vi legge til en ny oppføring i application.properties fil:

management.metrics.export.influx.uri = // localhost: 8086

Ut av boksen er databasenavnet satt til mydbmens brukernavnet og passordet ikke er angitt.

Vi kan imidlertid overstyre standardverdiene ved hjelp av dedikerte egenskaper:

management.metrics.export.influx.db = customDbName management.metrics.export.influx.user-name = myUserName management.metrics.export.influx.password = mySecret

InfluxDB gir ikke et naturlig visualiseringsverktøy. Imidlertid gir det et eget verktøy kalt Chronograph som fungerer bra for å visualisere InfluxDB-data.

2.2. Prometheus

Prometheus er en åpen kildekode-overvåking og varslingsverktøy som opprinnelig ble bygget på SoundCloud. Det fungerer litt annerledes enn InfluxDB.

I stedet for å konfigurere søknaden vår om å publisere beregninger til Prometheus, vi konfigurerer Prometheus til å avstemme applikasjonen vår med jevne mellomrom.

Først konfigurerer vi vår Spring Boot-applikasjon slik at den avslører et nytt endepunkt for Prometheus-aktuator. Vi gjør dette ved å inkludere avhengigheten av mikrometer-register-prometheus:

 io.mikrometer mikrometer-register-prometheus 

Dette vil opprette et nytt endepunkt for aktuatoren som produserer beregningsdata i et spesielt format som Prometheus forstår.

Deretter må vi konfigurere Prometheus til å avstemme applikasjonen vår ved å legge til ønsket konfigurasjon i en prometheus.yml fil.

Følgende konfigurasjon instruerer Prometheus om å avstemme applikasjonen vår hvert 5. sekund, ved hjelp av det nye aktuatorendepunktet:

scrape_configs: - job_name: 'spring-actuator' metrics_path: '/ actuator / prometheus' scrape_interval: 5s static_configs: - targets: ['127.0.0.1:8080']

Til slutt kan vi starte en lokal Prometheus-server ved hjelp av Docker. Dette forutsetter at vår tilpassede konfigurasjonsfil ligger i den lokale filen /etc/prometheus/prometheus.yml:

docker kjøre -d \ --navn = prometheus \ -p 9090: 9090 \ -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \ prom / prometheus \ --config.file = / etc / prometheus / prometheus.yml

Prometheus tilbyr sitt eget visualiseringsverktøy for visning av beregninger som er samlet inn. Du kan få tilgang til den på URL-en // lokal vert: 9090 /.

2.3. Grafitt

Grafitt er en annen åpen kildekode-tidsseriedatabase. Arkitekturen er litt mer komplisert enn de andre databasene vi har sett på, men med Docker er det greit å kjøre en forekomst lokalt:

docker-kjøring -d \ --navn grafitt \ --restart = alltid \ -p 80:80 \ -p 2003-2004: 2003-2004 \ -p 2023-2024: 2023-2024 \ -p 8125: 8125 / udp \ -p 8126: 8126 \ graphiteapp / graphite-statsd

Deretter kan vi konfigurere Spring Boot til å publisere beregninger for vår forekomst ved å legge til avhengigheten av mikrometer-register-grafitt:

 io.mikrometer mikrometer-register-grafitt 

I tillegg til å legge til konfigurasjonsegenskapene til application.properties:

management.metrics.export.graphite.host = 127.0.0.1 management.metrics.export.graphite.port = 2004

I likhet med Prometheus inkluderer grafitt sitt eget visualiseringspanel. Den er tilgjengelig på URL //lokal vert/.

3. Visualiseringsverktøy

Når vi har en løsning for lagring av beregninger utenfor vår Spring Boot-applikasjon, neste avgjørelse er hvordan vi vil visualisere dataene.

Noen av beregningsdatabasene som er nevnt tidligere, inkluderer egne visualiseringsverktøy. Det er et frittstående visualiseringsverktøy som er verdt å se på for vår selvstyrte overvåkingsløsning.

3.1. Grafana

Grafana er et analyse- og overvåkingsverktøy med åpen kildekode. Den kan koble til alle de tidligere nevnte databasene, så vel som mange andre.

Grafana gir generelt bedre konfigurasjon og overlegen varsling enn de fleste innebygde visualiseringsverktøy. Det kan enkelt utvides ved hjelp av plugins, og det er mange forhåndsbygde dashbord som kan importeres for raskt å lage våre egne visualiseringer.

For å kjøre Grafana lokalt, kan vi starte det med Docker:

docker run -d -p 3000: 3000 grafana / grafana

Vi kan nå få tilgang til Grafana-hjemmesiden på URL-en // lokal vert: 3000 /.

På dette tidspunktet må vi konfigurere en eller flere datakilder. Dette kan være hvilken som helst av beregningsdatabasene som er diskutert tidligere, eller en rekke andre støttede verktøy.

Når en datakilde er konfigurert, kan vi bygge et nytt dashbord eller importere en som gjør det vi vil.

4. Konklusjon

I denne artikkelen har vi sett på å lage en selvstyrt overvåkingsløsning for Spring Boot-applikasjoner.

Vi så på tre beregningsdatabaser som Spring Boot lett støtter og så hvordan de kan kjøres lokalt.

Vi så også kort på Grafana, et kraftig visualiseringsverktøy som kan vise beregningsdata fra en rekke kilder.


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