Spring启动执行器无法显示磁盘空间信息
我有两个Spring Boot应用程序。我添加了两个弹簧启动执行器。当我运行其中一个时,我可以看到Spring启动执行器无法显示磁盘空间信息,spring,spring-boot,spring-boot-actuator,Spring,Spring Boot,Spring Boot Actuator,我有两个Spring Boot应用程序。我添加了两个弹簧启动执行器。当我运行其中一个时,我可以看到diskSpace: { "status": "UP", "diskSpace": { "status": "UP", "total": 399055067136, "free": 346446485504, "threshold": 10485760 } } 但在其他服务中,我只能看到: { "status": "UP" } 即使我将该属性添加到
diskSpace
:
{
"status": "UP",
"diskSpace": {
"status": "UP",
"total": 399055067136,
"free": 346446485504,
"threshold": 10485760
}
}
但在其他服务中,我只能看到:
{
"status": "UP"
}
即使我将该属性添加到第二个服务:
management:
health:
diskspace:
enabled: true
我仍然看不到
diskSpace
信息。当我调试系统时,我看到这样的属性被收集,但没有返回到UI。可能是什么问题?Spring boot actuator的HealthIndicator检查可用磁盘空间,并在低于可配置阈值时报告状态“DOWN”
因此,在您的第二个应用程序中,可用空间大于阈值,因此您看不到任何报告
您可能可以调试代码,并在代码中看到空闲磁盘空间值和阈值
让我知道这是否有意义…因为只有管理员有权查看更多信息
{
"status": "UP"
}
要查看所有指标,请向具有spring安全角色ADMIN的任何用户进行身份验证
或
(不太可取的选择)
禁用执行器端点的安全性,如下所示
在应用程序属性yaml
文件中
management:
security:
enabled: false
如果您正在使用spring security(默认情况下,启动器端点处于启用状态),则可以在yml文件中禁用它-
management:
security:
enabled: false
只需在application.properties中添加一行:
management.endpoint.health.show-details = always
这使运行状况向授权人员以外的所有用户显示详细信息。
management.security.enabled
现在已弃用
您可以通过在应用程序中添加一行来获取完整的运行状况详细信息。属性
:
management.endpoint.health.show-details=always
您是否有可能共享第二个执行器的代码,其中您已实现DiskSpace HealthIndicator,但未实现自定义运行状况指示器。我刚刚添加了执行器依赖项。您为低磁盘空间定义的阈值是多少。我在同一台机器上运行该服务。其中一个显示详细信息,另一个不显示。所以,问题不应该和阈值有关。唯一的区别是在第二个应用程序中没有启用web安全。/health和/info端点不属于敏感端点,所以您的web安全设置不应影响它们。只是为了确保您可以将endpoints.beans.sensitive=false添加到属性文件并重新运行应用程序。我已经调试了代码,您是对的。它说:
if(exposeHealthDetails(principal)){return this.cached;}return Health.status(this.cached.getStatus()).build()代码>我已在应用程序中禁用登录机制。但是我也设置了端点:健康:敏感:false
,但是Spring仍然需要一个经过身份验证的用户。据我所知,即使启用了身份验证,敏感也是错误的,访问此类信息的应该是管理员用户。在这种情况下,这是一个需要我理解的问题。为什么在您的第一个spring boot应用程序中可以看到所有信息。你是管理员吗?这对我很有帮助。