Spring Boot 执行器/运行状况终结点不显示数据库或文件系统信息

我无法获取数据库信息或文件系统信息以显示在 /health 终结点上。我只能得到:

{
  "status": "UP"
}

有关我的设置和配置的详细信息: - Spring Boot 1.3.3 - 在 JBoss EAP 6.4 上运行 WAR - 数据源是一个 JNDI 资源。- 甲骨文是数据库

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

我在/configprops上找到的一件事是这个,我不确定它是否相关:

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

我曾尝试添加“driver-class-name: oracle.jdbc.driver.OracleDriver”,认为它可能需要更多细节,但这并没有改变情况。

所以,是的,什么给了?我做了一个普通的示例项目,它至少显示了文件系统的东西,所以不知道为什么不想在我的“真实”应用程序中显示。告诉我你伟大而明智的答案!:)


答案 1

默认情况下,Spring 将以下属性设置为 。为了能够查看完整的健康详细信息,请将以下属性添加到您的 .neverapplication.properties

management.endpoint.health.show-details=always

答案 2

从文档中:spring-boot

45.6 健康指标的安全性

健康指标者返回的信息通常具有一定的敏感性。例如,您可能不希望将数据库服务器的详细信息发布到全世界。因此,默认情况下,仅通过未经身份验证的 HTTP 连接公开运行状况。如果你希望始终公开完整的运行状况信息,则可以将 endpoints.health.sensitive 设置为 false。还会缓存运行状况响应以防止“拒绝服务”攻击。如果要更改 1000 毫秒的默认缓存周期,请使用 endpoints.health.time-to-live 属性。

请确保设置以下属性。

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.

推荐