13

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

{
  "status": "UP"
}

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

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'"
    }

我曾尝试添加“驱动程序类名称:oracle.jdbc.driver.OracleDriver”,认为它可能需要更多详细信息,但这并没有改变这种情况。

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

4

5 回答 5

11

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

management.endpoint.health.show-details=always
于 2018-03-17T13:54:06.647 回答
5

如果您使用的是spring security,那么默认情况下为执行器端点启用安全性,请在您的yml文件中禁用它 -

management:
    security:
           enabled: false
于 2016-09-22T08:00:15.430 回答
5

spring-boot文档中:

45.6 HealthIndicators 的安全性

HealthIndicators 返回的信息通常在本质上有些敏感。例如,您可能不想向全世界发布您的数据库服务器的详细信息。因此,默认情况下,只有健康状态通过未经身份验证的 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.
于 2016-04-05T15:28:22.937 回答
2

IIUC,总运行状况显示在 /health 下,对于 springboot2 至少 (IIUC)。意思是,即使您已经正确配置了所有内容,也只会显示一行。

更新:如果这不是您需要的,您必须特别要求查看详细信息。检查这些设置:

management.endpoint.health.show-details=when-authorized
management.endpoint.health.roles=ADMIN
于 2018-09-25T11:56:13.167 回答
0

您在配置文件中混合了 YAML 和 Properties 语法。将最后一行替换为以下内容,它应该可以工作:

endpoints:
    health:
        sensitive: false
于 2016-04-05T14:28:39.623 回答