Tutorials  /  Linux Basics

Spring Boot Actuator Endpunkte: Eine Anleitung

Ccentron Redaktion · Februar 2024 ·7 Min. Lesezeit ·Linux Basics, Tutorial

Spring Boot Actuator Endpunkte ermöglichen es uns, unsere Anwendung zu überwachen und mit ihr zu interagieren. Spring Actuator ist ein Sub-Modul von Spring Boot und bietet integrierte Endpunkte, die wir für unsere Anwendung aktivieren und deaktivieren können.

VM

Zum Ausprobieren: Cloud-Server ab 3,12 €/Monat

ccloud³ VMs aus deutschen Rechenzentren – in Sekunden gestartet, stundengenau abgerechnet, mit 200 € Startguthaben für neue Konten. Server starten →

Übersicht über die Spring Boot Actuator Endpunkte

Spring Boot Actuator Endpunkte sind über JMX und HTTP verfügbar, meistens nutzen wir HTTP-basierte Actuator Endpunkte, da sie einfach über den Browser, CURL-Befehl, Shell-Skripte usw. zugänglich sind. Einige der nützlichen Actuator Endpunkte sind:

  • beans: Dieser Endpunkt liefert eine Liste aller in unserer Anwendung konfigurierten Beans.
  • env: Bietet Informationen über die Spring Environment-Eigenschaften.
  • health: Zeigt die Gesundheit der Anwendung an.
  • info: Zeigt Anwendungsinformationen an, die wir in den Spring-Umgebungseigenschaften konfigurieren können.
  • mappings: Zeigt eine Liste aller @RequestMapping-Pfade.
  • shutdown: Ermöglicht es uns, die Anwendung sanft herunterzufahren.
  • threaddump: Stellt den Thread-Dump der Anwendung bereit.

Die vollständige Liste der Spring Actuator Endpunkte können Sie hier einsehen.

Sicherheit der Spring Actuator Endpunkte

Nur die Endpunkte „health“ und „info“ sind ohne Sicherheitsmaßnahmen zugänglich. Für den Zugriff auf alle anderen Endpunkte müssen wir unsere Anwendung für Spring Security konfigurieren. Dies ist sehr einfach zu erreichen, wir werden dies im weiteren Verlauf des Tutorials behandeln.

Spring Actuator Endpunkte aktivieren

Wenn wir Spring Actuator-Abhängigkeiten zu unserem Spring Boot-Projekt hinzufügen, werden die Actuator-Endpunkte automatisch aktiviert. Fügen Sie die folgenden Abhängigkeiten zu Ihrer Spring-Anwendung hinzu, um die Spring Boot Actuator-Endpunkte zu aktivieren.

Code
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Wenn Sie die Anwendung jetzt ausführen, werden Sie sehen, dass die Actuator-Endpunkte in den Logs abgebildet werden.

Code
2018-06-19 15:23:20.715  INFO 6493 --- [main] o.s.b.a.e.web.EndpointLinksResolver: Exposing 2 endpoint(s) beneath base path '/actuator'
2018-06-19 15:23:20.723  INFO 6493 --- [main] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Mapped "{[/actuator/health],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)
2018-06-19 15:23:20.724  INFO 6493 --- [main] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Mapped "{[/actuator/info],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)

Beachten Sie, dass nur zwei Endpunkte - health und info - abgebildet wurden. Das folgende Bild zeigt die Ausgabe dieser Actuator-Endpunkte.

Spring boot actuator endpoint health Spring boot actuator endpoint info default

Haben Sie bemerkt, dass es keine Daten im /actuator/info gibt? Das liegt daran, dass wir sie noch nicht konfiguriert haben. Fügen Sie einfach die folgenden Eigenschaften zu Ihrer application.properties-Datei hinzu.

Code
info.app.name=Spring Actuator Beispiel
info.app.java.version=10
info.app.type=Spring Boot

Starten Sie die Anwendung neu und Sie erhalten folgende Ausgabe:

Anpassen des Basispfads der Actuator Endpunkte

Standardmäßig ist der Basispfad der Actuator-Endpunkte /actuator, wir können ihn durch Festlegen von management.endpoints.web.base-path in der Datei der Anwendungseigenschaften auf einen anderen Wert ändern.

Code
management.endpoints.web.base-path=/management

Andere Actuator Endpunkte freigeben

Wir können andere Actuator-Endpunkte durch Eigenschaftsdateien aktivieren und deaktivieren. Wenn Sie alle Actuator-Endpunkte aktivieren möchten, fügen Sie die folgende Eigenschaft hinzu.

Code
management.endpoints.web.exposure.include=*

Um nur bestimmte Actuator-Endpunkte zu aktivieren, geben Sie die Liste der Endpunkt-IDs an.

Code
management.endpoints.web.exposure.include=health,info,beans,env

Spring Security für Actuator Endpunkte

Beachten Sie, dass wir Spring Security zu unserer Anwendung hinzufügen müssen, um zusätzliche Endpunkte zu aktivieren, da alle anderen Endpunkte mindestens eine Basisauthentifizierung benötigen. Fügen Sie die folgende Abhängigkeit für Spring Security in Ihre Anwendung ein.

Code
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

Fügen Sie auch Benutzernamen und Passwort für Spring Security in die Datei application.properties ein.

Code
spring.security.user.name=pankaj
spring.security.user.password=pankaj

Starten Sie die Anwendung neu und Sie werden sehen, dass zusätzliche Endpunkte abgebildet werden.

Code
2018-06-19 16:18:22.211  INFO 6627 --- [main] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Mapped "{[/management/beans],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)
2018-06-19 16:18:22.212  INFO 6627 --- [           main] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Mapped "{[/management/env],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)
2018-06-19 16:18:22.212  INFO 6627 --- [           main] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Mapped "{[/management/env/{toMatch}],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)

Wenn Sie nun versuchen, auf die gesicherten Actuator-Endpunkte zuzugreifen, müssen Sie Anmeldedaten angeben.

Spring boot actuator endpoint security user password Die folgenden Bilder zeigen die Antwort der Endpunkte beans und env/java.home. Spring boot actuator endpoint beans

Spring Actuator Eigene Endpunkte

Eine der großartigen Funktionen des Spring Frameworks ist, dass es sehr einfach zu erweitern ist. Wir können unsere eigenen benutzerdefinierten Actuator-Endpunkte mit der Annotation @Endpoint in einer Klasse erstellen. Dann müssen wir @ReadOperation, @WriteOperation oder @DeleteOperation Annotationen auf den Methoden verwenden, um sie als Actuator-Endpunkt-Bean freizugeben. Wir können technologie-spezifische Endpunkte mit den Annotationen @JmxEndpoint und @WebEndpoint erstellen. Hier ist ein Beispiel für unseren eigenen benutzerdefinierten Spring Actuator-Endpunkt.

Go
package com.journaldev.spring;

import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

@Endpoint(id="myendpoint")
@Component
public class MyCustomEndpoints {

    @ReadOperation
    @Bean
    public String hi() {
        return "Hi from custom endpoint";
    }
}

Haben Sie die Endpunkt-ID bemerkt? Wir müssen auch diese in der Liste der zu aktivierenden Actuator-Endpunkte konfigurieren. Aktualisieren Sie die folgenden Eigenschaften in der application.properties-Datei.

Code
management.endpoints.web.exposure.include=health,info,beans,env,myendpoint

Wenn Sie nun die Anwendung starten, überprüfen Sie, ob dieser neue Endpunkt in den Logs abgebildet wird.

Code
2018-06-19 17:06:59.743  INFO 6739 --- [main] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Mapped "{[/management/myendpoint],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)

Das folgende Bild zeigt die Ausgabe, wenn wir unseren eigenen Actuator-Endpunkt aufrufen.

Fazit

Spring Boot Actuator ist ein leistungsstarkes Tool zur Überwachung und Verwaltung von Spring Boot-Anwendungen. Mit den neuesten Updates in Spring Boot 3 gibt es erweiterte Sicherheitsoptionen und neue Monitoring-Funktionen.

Die Integration mit ccloud³ ermöglicht eine skalierbare, cloudbasierte Umgebung für Spring Boot Microservices.

Weiterführende Links:

Zusammenfassung

Spring Boot Actuator ist ein produktionsbereites Verwaltungs- und Informationsmodul. Wir können es leicht erweitern, um unsere eigenen APIs hinzuzufügen und unsere Anwendung zu verwalten - eine Anleitung.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie Linux Basics
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren