wake-up-neo.com

Der Spring Boot Actuator/Health-Endpunkt zeigt keine Datenbank- oder Dateisysteminformationen an

Ich kann keine Datenbankinformationen oder Dateisysteminformationen abrufen, die auf dem Endpunkt/health angezeigt werden. Ich kann nur bekommen: 

{
  "status": "UP"
}

Details zu meiner Einrichtung und Konfiguration: - Spring Boot 1.3.3 - Ausführen der WAR-Datei unter JBoss EAP 6.4 - Datenquelle ist eine JNDI-Ressource .- Oracle ist die Datenbank

spring:
  datasource:
    # Must match the datasource name in JBoss standalone.xml
    jndi-name: Java:jboss/beautiful-ds
    driver-class-name: Oracle.jdbc.driver.OracleDriver
  jpa:
    properties:
      # escapes reserved words used as column names (if any)
      globally_quoted_identifiers: true
    show-sql: true
    hibernate:
        naming_strategy: org.hibernate.cfg.EJB3NamingStrategy

server:
  servlet-path: /*

management:
  health:
    diskspace:
      enabled: true
    db:
      enabled: true
endpoints.health.sensitive: false

Eine Sache, die ich auf/configprops gefunden habe, ist diese, von der ich nicht sicher bin, ob sie damit zusammenhängt:

  "spring.datasource.CONFIGURATION_PROPERTIES": {
    "prefix": "spring.datasource",
    "properties": {
      "error": "Cannot serialize 'spring.datasource'"
    }

Ich hatte versucht, "driver-class-name: Oracle.jdbc.driver.OracleDriver" hinzuzufügen. Ich dachte, es brauche vielleicht mehr Details, aber das änderte nichts an der Situation.

ja, was gibt es? Ich habe ein Vanilla-Beispielprojekt erstellt, das zumindest das Dateisystem-Zeug zeigt, also nicht sicher, warum entweder keiner in meiner "echten" App angezeigt werden soll. Sag mir deine großartigen und klugen Antworten! :)

12
jeremy simon

Wenn Sie die Federsicherheit verwenden, ist die Sicherheit für Aktorendpunkte standardmäßig aktiviert. Deaktivieren Sie sie in Ihrer yml-Datei. 

management:
    security:
           enabled: false
5
danny

Standardmäßig setzt Spring die folgende Eigenschaft auf never. Um die vollständigen Gesundheitsdaten anzeigen zu können, fügen Sie Ihrem application.properties die unten stehende Eigenschaft hinzu.

management.endpoint.health.show-details=always
4
saikiran

Aus der spring-boot Dokumentation:

45.6 Sicherheit mit HealthIndicators

Von HealthIndicators zurückgegebene Informationen sind oft etwas empfindlich. Zum Beispiel, Sie möchten wahrscheinlich keine Details Ihres Datenbankservers auf .__ veröffentlichen. die Welt. Aus diesem Grund ist standardmäßig nur der Integritätsstatus ausgesetzt über eine nicht authentifizierte HTTP-Verbindung. Wenn Sie sich für .__ freuen. Vollständige Informationen zum Gesundheitszustand, damit Sie immer angezeigt werden können Endpunkte.gesundheit.empfindlich auf falsch. Gesundheitsantworten werden ebenfalls zwischengespeichert um Denial-of-Service-Angriffe zu verhindern. Verwenden Sie die endpoints.health.time-to-live-Eigenschaft, wenn Sie das .__ ändern möchten. Standard-Cache-Zeitraum von 1000 Millisekunden.

Stellen Sie sicher, dass die folgenden Eigenschaften festgelegt sind.

endpoints.health.sensitive=true # Mark if the endpoint exposes sensitive information.
management.health.db.enabled=true # Enable database health check.
management.health.defaults.enabled=true # Enable default health indicators.
management.health.diskspace.enabled=true # Enable disk space health check.
4
TheKojuEffect

IIUC, der Aggregate Health wird unter/Health angezeigt, mindestens (IIUC) für Springboot2. Das heißt, auch wenn Sie alles richtig konfiguriert haben, wird nur eine Zeile angezeigt.

UPDATE: und wenn dies nicht das ist, was Sie brauchen, müssen Sie gezielt nach Details fragen. Überprüfen Sie diese Einstellungen:

management.endpoint.health.show-details=when-authorized
management.endpoint.health.roles=ADMIN
1
Martin Mucha

Sie haben YAML und Properties-Syntax in Ihre Konfigurationsdatei gemischt. Ersetzen Sie die letzte Zeile durch Folgendes, und es sollte funktionieren:

endpoints:
    health:
        sensitive: false
0
dunni