In meiner Spring Boot App (2.0.0.M7) application.properties habe ich festgelegt
management.endpoint.metrics.enabled=true
Wenn ich aber schlug
localhost:8080/actuator/metrics
Ich bekomme 404.
Was ist die Lösung?
Ich möchte die Antwort des OP um weitere Informationen erweitern, da ich mich ein bisschen schwer getan habe, bevor ich endlich über diese Lösung gestolpert bin. Es scheint viel Verwirrung über das Verhalten des Antriebs mit Spring Boot 2 zu geben
Was hat sich nicht geändert
Sie müssen eine Abhängigkeit von Spring-Boot-Starter-Aktor angeben.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
Wenn Sie über HTTP auf Aktor-Endpunkte zugreifen möchten, müssen Sie auch eine Abhängigkeit zu Spring-Boot-Starter-Web hinzufügen.
Ihre Pom-Abhängigkeiten werden also wie folgt aussehen
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
Änderungen eingeführt in Spring Boot 2
Endpunkte wie /health
, /metrics
usw. sind nicht mehr im Standard-Root-Kontext verfügbar. Sie sind ab sofort unter http://{Host}:{port}/actuator
..__ verfügbar. Außerdem ist es unerheblich, ob alle anderen Endpunkte Ihrer Anwendung mit einem anderen Kontext beginnen, z. B. /hello
- Stellglied ist unter verfügbar /actuator
und nicht bei /hello/actuator
.
Die Antwort vom Endpunkt /actuator
ist standardmäßig HATEOAS enabled. Vor Spring Boot 2 war dies nur der Fall wenn sich HATEOAS im Klassenpfad befindet und explizit aktiviert ist in application.yml
Um einen Aktorendpunkt über HTTP verfügbar zu machen, muss er sowohl aktiviert als auch exponiert sein.
Standardmäßig:
nur die Endpunkte /health
und /info
sind verfügbar, unabhängig davon, ob Spring Security in Ihrer Anwendung vorhanden und konfiguriert ist.
alle Endpunkte außer /shutdown
sind aktiviert (obwohl nur /health
und /info
verfügbar sind)
Wenn Sie alle Endpunkte verfügbar machen möchten (nicht immer eine gute Idee), können Sie dies durch Hinzufügen von management.endpoints.web.exposure.include=*
zu application.properties
tun. Vergessen Sie nicht, den Platzhalter anzugeben, wenn Sie Yml-Konfigurationen verwenden.
endpoints.xyz
beginnen, werden zugunsten von Eigenschaften, die mit management.xyz
beginnen, nicht mehr empfohlen. Eine vollständige Dokumentation finden Sie in official doc und auch im migrationsleitfaden
Fügen Sie Ihrer application.properties
-Datei die folgende Zeile hinzu:
management.endpoints.web.exposure.include=metrics
Das ist alles.
"*" hat in YAML eine besondere Bedeutung. Fügen Sie daher Anführungszeichen hinzu, wenn Sie alle Endpunkte einschließen (oder ausschließen) möchten, wie im folgenden Beispiel dargestellt:
management:
endpoints:
web:
exposure:
include: "*"
Für mich funktionierte folgendes (im YAML-Format), das mit Spring Boot 2 Release arbeitet:
management:
endpoints:
web:
exposure:
include: info, health, metrics
metrics:
export:
atlas:
enabled: false
auch spezifische Dokumentation finden Sie hier
Okay, ich habe die Lösung gefunden. Ich habe eine weitere Zeile in application.properties hinzugefügt
management.endpoints.web.expose=*
Die Sicherung der Stellgliedendpunkte ist jedoch wichtig
Lesen Sie hier: https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-monitoring.html
Entsprechend Mikrometerdokumente .Spring Boot 2.0.x unterstützt die Verwendung des Mikrometers direkt über den Spring Boot Actuator.
Der Endpunkt metric ist standardmäßig in Übereinstimmung mit dem Test von Spring Boot 2 deaktiviert, dass Endpunkte, die möglicherweise sensible Daten zu einer Anwendung verfügbar machen, standardmäßig deaktiviert sind. Es kann durch die Einstellung aktiviert werden:
management.endpoints.web.exposure.include: Metriken
Wenn Sie zu /actuator/metrics
navigieren, wird eine Liste der verfügbaren Zählernamen angezeigt.
Um auf sie zuzugreifen, verwenden Sie Folgendes: http: // localhost: 8080/stelluator/metrics/jvm.memory.used
Sie müssen die unten aufgeführten Requisiten in Ihre application.properties
-Datei einfügen. Ich hatte das gleiche Problem, bis ich die unten aufgeführten Requisiten hinzufügte.
management.endpoints.beans.enabled=false
management.endpoints.web.exposure.include=*
Hatte das gleiche Problem beim Upgrade von Spring Boot 1.5.15 auf 2.1.4
Muss geändert werden, um die ursprüngliche Abhängigkeit für den Spring Boot-Aktuator in meinem pom.xml
von:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
zu:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
beachten Sie das Hinzufügen des Wortes starter
im artifactId
.