SpringBoot禁用执行器根

时间:2018-11-07 13:46:21

标签: java spring spring-boot openshift prometheus

我正在使用springboot,并且正在使用执行器和prometheus公开指标。我想公开“信息”,“健康”,“指标”,“普罗米修斯”,“关机”,仅此而已。但是,即使我在应用程序属性中指定了内容,我看到的是即使根目录“ / actuator”也已公开。

我想禁用根执行器,并且只有我之前说的5个成员。

是否有一种方法不只公开/ actuator端点?我也尝试过像这样的应用程序属性:

management.endpoints.web.exposure.exclude=actuator

这是暴露的执行器的列表:

{
"_links": {
"self": {
"href": "http://localhost:9002/actuator",
"templated": false
},
"health-component-instance": {
"href": "http://localhost:9002/actuator/health/{component}/{instance}",
"templated": true
},
"health-component": {
"href": "http://localhost:9002/actuator/health/{component}",
"templated": true
},
"health": {
"href": "http://localhost:9002/actuator/health",
"templated": false
},
"shutdown": {
"href": "http://localhost:9002/actuator/shutdown",
"templated": false
},
"info": {
"href": "http://localhost:9002/actuator/info",
"templated": false
},
"prometheus": {
"href": "http://localhost:9002/actuator/prometheus",
"templated": false
},
"metrics-requiredMetricName": {
"href": "http://localhost:9002/actuator/metrics/{requiredMetricName}",
"templated": true
},
"metrics": {
"href": "http://localhost:9002/actuator/metrics",
"templated": false
}
}
}

2 个答案:

答案 0 :(得分:1)

没有配置值。您现在可以做的最好的就是将管理基础端点移动到<a href="#" onclick="window.open('https://www.google.com/', '_system');return false;">link</a> ,在这种情况下,发现页面被禁用以防止与应用程序中的其他端点冲突:

https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html#production-ready-endpoints-hypermedia

  

将管理上下文路径设置为/时,将禁用发现页面,以防止与其他映射发生冲突的可能性。

如果您使用的是Spring Security,则可以在自己的/中使用类似的方法有效地隐藏发现页面:

WebSecurityConfigurerAdapter

这将拒绝对发现页面的所有请求,但允许请求到达各个公开的端点。

在此GitHub问题中也对发现页面进行了一些讨论:

https://github.com/spring-projects/spring-boot/issues/10331

答案 1 :(得分:0)

management.endpoints.web.exposure.include 属性也可以采用逗号分隔的端点列表。

所以,让我们只公开 /info、/health、/metrics//prometheus 和 /shutdown

management.endpoints.web.exposure.include = info, health, metrics, prometheus, shutdown

由于其敏感特性,/shutdown 端点默认处于禁用状态。

让我们启用它:

management.endpoint.shutdown.enabled = true