web-dev-qa-db-fra.com

Le point de terminaison d'intégrité/de l'actionneur d'amorçage Spring n'affiche aucune information sur la base de données ou le système de fichiers

Je ne parviens pas à afficher les informations de la base de données ou du système de fichiers sur le noeud final/health. Je peux seulement obtenir: 

{
  "status": "UP"
}

Détails sur ma configuration et ma configuration: - Spring Boot 1.3.3 - Exécution du fichier WAR sur JBoss EAP 6.4 - La source de données est une ressource JNDI .- Oracle est la base de données.

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

Une chose que j'ai trouvée sur/configprops est la suivante, et je ne suis pas sûr que ce soit lié:

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

J'avais essayé d'ajouter "driver-class-name: Oracle.jdbc.driver.OracleDriver" en pensant qu'il aurait peut-être besoin de plus de détails, mais cela n'a pas changé la situation.

alors ouais, qu'est-ce qui donne? J'ai créé un exemple de projet Vanilla qui montre au moins les éléments du système de fichiers par la porte, alors vous ne savez pas trop pourquoi ne pas afficher dans ma "vraie" application. Dis-moi tes réponses géniales et sages! :)

12
jeremy simon

Si vous utilisez la sécurité de ressort, la sécurité par défaut est activée pour les noeuds finaux d'actionneur. 

management:
    security:
           enabled: false
5
danny

Par défaut, Spring définit la propriété ci-dessous sur never. Pour voir tous les détails de santé, ajoutez la propriété ci-dessous à votre application.properties.

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

De la documentation spring-boot:

45.6 Sécurité avec HealthIndicators

Les informations renvoyées par HealthIndicators sont souvent de nature assez sensible. Par exemple, vous ne souhaiterez probablement pas publier les détails de votre serveur de base de données sur le monde. Pour cette raison, par défaut, seul l'état de santé est exposé via une connexion HTTP non authentifiée. Si vous êtes heureux pour informations de santé complètes pour toujours être exposé, vous pouvez définir endpoints.health.sensitive à false. Les réponses d'intégrité sont également mises en cache pour prévenir les attaques de «déni de service». Utilisez le endpoints.health.propriété time-to-live si vous souhaitez modifier le période de cache par défaut de 1000 millisecondes.

Assurez-vous que les propriétés suivantes sont définies.

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, la santé globale est indiquée sous/santé, au moins (IIUC) pour springboot2. Ce qui signifie que même si tout est configuré correctement, une seule ligne sera affichée.

UPDATE: et si ce n'est pas ce dont vous avez besoin, vous devez demander spécifiquement à voir les détails. Vérifiez ces paramètres:

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

Vous avez mélangé les syntaxes YAML et Properties dans votre fichier de configuration. Remplacez la dernière ligne par la suivante, et cela devrait fonctionner:

endpoints:
    health:
        sensitive: false
0
dunni