Spring Boot ist ein äußerst beliebtes Framework für die Entwicklung von Java-Anwendungen, das auf dem bewährten Spring-Framework aufbaut. Es erleichtert die Erstellung von robusten, skalierbaren und einfach zu wartenden Anwendungen. Ein entscheidendes Feature von Spring Boot ist der Spring Boot Actuator, der die Überwachung und Verwaltung von Anwendungen ermöglicht.

Einführung in den Spring Boot Actuator

Der Spring Boot Actuator ist eine Sammlung von Produktionsbereitschaftsfunktionen, die in Spring Boot-Anwendungen integriert sind. Mit diesem Modul können Entwickler verschiedene Aspekte ihrer Anwendungen überwachen und verwalten, was die Identifizierung von Problemen und die Optimierung der Leistung erheblich erleichtert.

Die Hauptziele des Spring Boot Actuator sind:

  1. Betriebsbereitschaft (Readiness): Überprüfen, ob die Anwendung betriebsbereit ist, bevor sie Live-Traffic verarbeitet.
  2. Lebensfähigkeit (Liveness): Überwachen, ob die Anwendung aktiv ist und ordnungsgemäß funktioniert.
  3. Dynamische Eigenschaften: Ermöglichen Sie das Abrufen von Anwendungseigenschaften zur Laufzeit.
  4. Anwendungsverwaltung: Bereitstellung von Endpunkten für die Verwaltung von Anwendungen, z. B. das Neuladen von Konfigurationen oder das Anzeigen von Thread-Stack-Traces.

Aktivierung des Spring Boot Actuator

Die Integration des Spring Boot Actuator in eine Anwendung ist denkbar einfach. Es genügt, die entsprechenden Abhängigkeiten in das Projekt einzufügen. In der pom.xml-Datei für Maven-Projekte sieht das zum Beispiel so aus:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>Code-Sprache: HTML, XML (xml)

Nachdem die Abhängigkeit hinzugefügt wurde, sind die Actuator-Endpunkte standardmäßig aktiviert. Diese Endpunkte bieten eine Fülle von Informationen über den Zustand der Anwendung.

Wichtige Actuator-Endpunkte

1. /actuator/health

Der /actuator/health-Endpunkt gibt Auskunft über den Gesundheitszustand der Anwendung. Er liefert Informationen darüber, ob die Anwendung betriebsbereit und lebensfähig ist. Dies ist besonders nützlich, um sicherzustellen, dass die Anwendung ordnungsgemäß funktioniert, bevor sie Live-Traffic verarbeitet.

Beispielanfrage:

curl http://localhost:8080/actuator/healthCode-Sprache: JavaScript (javascript)

2. /actuator/info

Der /actuator/info-Endpunkt ermöglicht es, benutzerdefinierte Informationen zur Anwendung hinzuzufügen. Entwickler können hier Kontextinformationen oder Versionsinformationen bereitstellen, die dann abgerufen werden können.

Beispielanfrage:

curl http://localhost:8080/actuator/infoCode-Sprache: JavaScript (javascript)

3. /actuator/metrics

Der /actuator/metrics-Endpunkt liefert eine Vielzahl von Metriken zur Überwachung der Anwendungsleistung. Dies umfasst Informationen zu CPU-Auslastung, Speichernutzung, Anfragen pro Sekunde und vielen anderen wichtigen Metriken.

Beispielanfrage:

curl http://localhost:8080/actuator/metricsCode-Sprache: JavaScript (javascript)

4. /actuator/env

Der /actuator/env-Endpunkt ermöglicht den Zugriff auf Umgebungsinformationen, einschließlich Konfigurationseigenschaften und Umgebungsvariablen.

Beispielanfrage:

curl http://localhost:8080/actuator/envCode-Sprache: JavaScript (javascript)

5. /actuator/beans

Der /actuator/beans-Endpunkt listet alle im Spring-Anwendungskontext verfügbaren Beans auf. Dies ist besonders hilfreich, um einen Überblick über die im Kontext vorhandenen Beans zu erhalten.

Beispielanfrage:

curl http://localhost:8080/actuator/beansCode-Sprache: JavaScript (javascript)

Anpassung von Actuator-Endpunkten

Obwohl die standardmäßigen Actuator-Endpunkte bereits viele nützliche Informationen bereitstellen, gibt es Situationen, in denen Entwickler die Endpunkte anpassen oder sogar eigene hinzufügen möchten. Spring Boot ermöglicht diese Anpassungen durch Konfiguration.

Anpassung von Endpunkt-Pfaden

Die Pfade der Actuator-Endpunkte können mithilfe der application.properties– oder application.yml-Datei konfiguriert werden. Zum Beispiel:

management.endpoints.web.base-path=/custom
management.endpoints.web.path-mapping.health=custom-health

Mit diesen Konfigurationen werden die Pfade zu den Health-Endpunkten zu /custom/custom-health.

Anpassung von Endpunkt-Sicherheit

Die Sicherheit der Actuator-Endpunkte kann ebenfalls konfiguriert werden. Standardmäßig sind die Endpunkte geschützt und erfordern eine Authentifizierung. Dies kann durch Hinzufügen von Benutzern und Berechtigungen in der application.properties– oder application.yml-Datei erfolgen.

Beispiel:

spring.security.user.name=admin
spring.security.user.password=adminpassword
management.endpoint.health.show-details=always

In diesem Beispiel wird ein Benutzer mit dem Namen „admin“ und dem Passwort „adminpassword“ hinzugefügt, und es wird festgelegt, dass die Details des Health-Endpunkts immer angezeigt werden sollen.

Hinzufügen benutzerdefinierter Endpunkte

Entwickler können auch benutzerdefinierte Endpunkte erstellen und sie dem Actuator hinzufügen. Dies wird durch das Implementieren der Endpoint-Schnittstelle erreicht.

Beispiel:

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

@Component
@Endpoint(id = "custom")
public class CustomEndpoint {

    @ReadOperation
    public String customEndpoint() {
        return "Custom endpoint response";
    }
}Code-Sprache: CSS (css)

In diesem Beispiel wird ein benutzerdefinierter Endpunkt mit dem Pfad /actuator/custom erstellt, der eine einfache Antwort zurückgibt.

Fazit

Der Spring Boot Actuator ist ein leistungsstarkes Werkzeug, um die Überwachung und Verwaltung von Spring Boot-Anwendungen zu verbessern. Durch die Bereitstellung von standardmäßigen Endpunkten für Gesundheitsüberprüfungen, Metriken und andere nützliche Informationen erleichtert er Entwicklern die Identifizierung von Problemen und die Optimierung der Anwendungsleistung. Die Möglichkeit, Endpunkte anzupassen und benutzerdefinierte Endpunkte hinzuzufügen, macht den Spring Boot Actuator äußerst flexibel und anpassungsfähig. Entwickler sollten dieses mächtige Tool in ihre Projekte integrieren, um die Betriebsbereitschaft und Leistung ihrer Anwendungen zu maximieren.