Selvhostet overvågning af Spring Boot-applikationer

1. Introduktion

En af de mange fantastiske funktioner i Spring Boot er sættet med indbyggede aktuatorer. Disse aktuatorer giver en nem måde at overvåge og kontrollere næsten ethvert aspekt af en Spring Boot-applikation.

I denne vejledning ser vi på at bruge metrics-aktuatoren til at oprette en selvhostet overvågningsløsning til Spring Boot-applikationer.

2. Metrics Database

Den første del af overvågning af Spring Boot-applikationer er at vælge en metrics-database. Spring Boot konfigurerer som standard et Micrometer-metrics-register i hver applikation.

Denne standardimplementering samler et foruddefineret sæt applikationsmålinger såsom hukommelse og CPU-brug, HTTP-anmodninger og et par andre. Men disse metrics er kun gemt i hukommelsen, hvilket betyder, at de går tabt, når som helst applikationen genstartes.

For at skabe en selvhostet overvågningsløsning skal vi først vælge en metrics-database, der lever uden for Spring Boot-applikationen. De følgende afsnit diskuterer blot nogle få af de tilgængelige muligheder for selvhosting.

Bemærk, at når som helst Spring Boot registrerer en anden metrics-database på klassestien, deaktiveres den automatisk hukommelsesregistret.

2.1. TilstrømningDB

InfluxDB er en open-source tidsseriedatabase. Den hurtigste måde at komme i gang med InfluxDB er at køre den lokalt som en Docker-container:

docker kør -p 8086: 8086 -v / tmp: / var / lib / influxdb influxdb

Bemærk, at dette gemmer metrics i det lokale / tmp skillevæg. Dette er fint til udvikling og test, men det ville ikke være et godt valg for produktionsmiljøer.

Når InfluxDB kører, Vi kan konfigurere vores Spring Boot-applikation til at udgive metrics til den ved at tilføje den relevante afhængighed af mikrometer:

 io.mikrometer mikrometer-registry-tilstrømning 

Derudover skal vi tilføje en ny post til application.properties fil:

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

Ud af boksen er databasens navn indstillet til mydb, mens brugernavnet og adgangskoden ikke er indstillet.

Vi kan dog tilsidesætte standardværdierne ved hjælp af dedikerede egenskaber:

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

InfluxDB leverer ikke et native visualiseringsværktøj. Det giver dog et separat værktøj kaldet Chronograph, der fungerer godt til visualisering af InfluxDB-data.

2.2. Prometheus

Prometheus er en open source overvågnings- og alarmværktøjssæt, der oprindeligt blev bygget på SoundCloud. Det fungerer lidt anderledes end InfluxDB.

I stedet for at konfigurere vores ansøgning om at offentliggøre målinger til Prometheus, vi konfigurerer Prometheus til at afstemme vores ansøgning med jævne mellemrum.

Først konfigurerer vi vores Spring Boot-applikation til at udsætte et nyt Prometheus-aktuatorendepunkt. Vi gør dette ved at inkludere afhængigheden af ​​mikrometer-registreringsdatabasen-prometheus:

 io.mikrometer mikrometer-registry-prometheus 

Dette vil skabe et nyt aktuatorendepunkt, der producerer metrikdata i et specielt format, som Prometheus forstår.

Dernæst skal vi konfigurere Prometheus til at afstemme vores applikation ved at tilføje vores ønskede konfiguration til en prometheus.yml fil.

Følgende konfiguration instruerer Prometheus til at afstemme vores applikation hvert 5. sekund ved hjælp af det nye aktuatorendepunkt:

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

Endelig kan vi starte en lokal Prometheus-server ved hjælp af Docker. Dette forudsætter, at vores brugerdefinerede konfigurationsfil er placeret i den lokale fil /etc/prometheus/prometheus.yml:

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

Prometheus leverer sit eget visualiseringsværktøj til visning af målinger, der er indsamlet. Du kan få adgang til den på URL'en // localhost: 9090 /.

2.3. Grafit

Grafit er en anden open source-tidsseriedatabase. Dens arkitektur er lidt mere kompliceret end de andre databaser, vi har set på, men med Docker er det ligetil at køre en forekomst lokalt:

docker-kørsel -d \ --navn grafit \ --restart = altid \ -p 80:80 \ -p 2003-2004: 2003-2004 \ -p 2023-2024: 2023-2024 \ -p 8125: 8125 / udp \ -p 8126: 8126 \ graphiteapp / graphite-statsd

Derefter kan vi konfigurere Spring Boot til at offentliggøre metrics til vores forekomst ved at tilføje afhængigheden af ​​mikrometer-registry-grafit:

 io.mikrometer mikrometer-registry-graphite 

Samt tilføje konfigurationsegenskaber til application.properties:

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

Ligesom Prometheus inkluderer grafit sit eget visualiseringsdashboard. Den er tilgængelig på URL'en // localhost /.

3. Visualiseringsværktøjer

Når vi har en løsning til lagring af metrics uden for vores Spring Boot-applikation, den næste beslutning er, hvordan vi vil visualisere dataene.

Nogle af de tidligere nævnte metrics-databaser inkluderer deres egne visualiseringsværktøjer. Der er et enkeltstående visualiseringsværktøj, der er værd at se på for vores selvhostede overvågningsløsning.

3.1. Grafana

Grafana er et open source analyse- og overvågningsværktøj. Det kan oprette forbindelse til alle de tidligere nævnte databaser såvel som mange andre.

Grafana giver generelt bedre konfiguration og overlegen alarm end de fleste indbyggede visualiseringsværktøjer. Det kan let udvides ved hjælp af plugins, og der er masser af forudbyggede dashboards, der kan importeres for hurtigt at skabe vores egne visualiseringer.

For at køre Grafana lokalt kan vi starte det ved hjælp af Docker:

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

Vi kan nu få adgang til Grafana-hjemmesiden på URL'en // localhost: 3000 /.

På dette tidspunkt skal vi konfigurere en eller flere datakilder. Dette kan være en hvilken som helst af de tidligere diskuterede metrics-databaser eller en række andre understøttede værktøjer.

Når en datakilde er konfigureret, kan vi oprette et nyt dashboard eller importere en, der gør, hvad vi vil.

4. Konklusion

I denne artikel har vi set på at skabe en selvhostet overvågningsløsning til Spring Boot-applikationer.

Vi kiggede på tre metrics-databaser, som Spring Boot let understøtter og så, hvordan man kører dem lokalt.

Vi kiggede også kort på Grafana, et kraftfuldt visualiseringsværktøj, der kan vise data fra forskellige kilder.


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