我的 Spring 启动应用程序的 /health 端点正在发出有关同一台机器上的 Consul 服务器 运行 的所有信息。如何禁用它?
The /health endpoint of my Spring Boot app is emitting all info about the Consul server running on the same machine. How to disable this?
我启用了 /health 端点,但我只是不想让它列出同一台机器上由 Consul 监控的所有服务。
这是我的 application.properties:
# Enable just the health endpoint.
endpoints.health.enabled=true
# Disable all default endpoints and Spring Cloud endpoints.
endpoints.enabled=false
endpoints.consul.enabled=false
endpoints.pause.enabled=false
endpoints.resume.enabled=false
endpoints.refresh.enabled=false
endpoints.restart.enabled=false
endpoints.shutdown.enabled=false
endpoints.env.enabled=false
management.health.db.enabled=false
management.health.diskspace.enabled=false
management.health.defaults.enabled=false
... 这就是 /health 当前发出的信息:
$ curl -o- http://localhost:8080/health | python -m json.tool
{
"consul": {
"advertiseAddress": "10.10.10.10",
"bindAddress": "10.10.10.10",
"clientAddress": "127.0.0.1",
"datacenter": "DC",
"domain": "consul.",
"nodeName": "mynode",
"services": {
"myservice1": [
"tag1"
],
"myservice2": [
"tag1",
"tag2"
]
},
"status": "UP"
},
"description": "Spring Cloud Consul Discovery Client",
"discoveryComposite": {
"description": "Spring Cloud Consul Discovery Client",
"discoveryClient": {
"description": "Spring Cloud Consul Discovery Client",
"services": [
"myservice1",
"myservice2"
],
"status": "UP"
},
"status": "UP"
},
"status": "UP"
}
我不介意 "description": "Spring Cloud Consul Discovery Client"
,但 "consul"
和 "discoveryComposite"
下的其他内容我不想为 /health
公开。
什么可以将这些信息添加到此端点?
来自Spring Cloud Commons。
要禁用 discoveryComposite
,请设置 属性 spring.cloud.discovery.client.composite-indicator.enabled=false
。
为另一个设置management.health.consul.enabled=false
。
为可能遇到相同问题的其他人回答我自己的问题:management.security.enabled=false
在应用程序启动期间被设置在 Spring 配置文件之一中,我没有注意到。根据此处的文档:http://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-monitoring.html#production-ready-health-access-restrictions 我需要设置 endpoints.health.sensitive=true
以仅报告状态。添加此令牌解决了问题。
在SpringBoot 2中禁用复合输出3.x
- 只需使用以下键:
spring:
cloud:
discovery:
client:
composite-indicator:
enabled: false
- 之后发现的输出并没有打印在healthcheck的status
我启用了 /health 端点,但我只是不想让它列出同一台机器上由 Consul 监控的所有服务。
这是我的 application.properties:
# Enable just the health endpoint.
endpoints.health.enabled=true
# Disable all default endpoints and Spring Cloud endpoints.
endpoints.enabled=false
endpoints.consul.enabled=false
endpoints.pause.enabled=false
endpoints.resume.enabled=false
endpoints.refresh.enabled=false
endpoints.restart.enabled=false
endpoints.shutdown.enabled=false
endpoints.env.enabled=false
management.health.db.enabled=false
management.health.diskspace.enabled=false
management.health.defaults.enabled=false
... 这就是 /health 当前发出的信息:
$ curl -o- http://localhost:8080/health | python -m json.tool
{
"consul": {
"advertiseAddress": "10.10.10.10",
"bindAddress": "10.10.10.10",
"clientAddress": "127.0.0.1",
"datacenter": "DC",
"domain": "consul.",
"nodeName": "mynode",
"services": {
"myservice1": [
"tag1"
],
"myservice2": [
"tag1",
"tag2"
]
},
"status": "UP"
},
"description": "Spring Cloud Consul Discovery Client",
"discoveryComposite": {
"description": "Spring Cloud Consul Discovery Client",
"discoveryClient": {
"description": "Spring Cloud Consul Discovery Client",
"services": [
"myservice1",
"myservice2"
],
"status": "UP"
},
"status": "UP"
},
"status": "UP"
}
我不介意 "description": "Spring Cloud Consul Discovery Client"
,但 "consul"
和 "discoveryComposite"
下的其他内容我不想为 /health
公开。
什么可以将这些信息添加到此端点?
来自Spring Cloud Commons。
要禁用 discoveryComposite
,请设置 属性 spring.cloud.discovery.client.composite-indicator.enabled=false
。
为另一个设置management.health.consul.enabled=false
。
为可能遇到相同问题的其他人回答我自己的问题:management.security.enabled=false
在应用程序启动期间被设置在 Spring 配置文件之一中,我没有注意到。根据此处的文档:http://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-monitoring.html#production-ready-health-access-restrictions 我需要设置 endpoints.health.sensitive=true
以仅报告状态。添加此令牌解决了问题。
在SpringBoot 2中禁用复合输出3.x
- 只需使用以下键:
spring:
cloud:
discovery:
client:
composite-indicator:
enabled: false
- 之后发现的输出并没有打印在healthcheck的status