有没有办法默认公开自定义执行器端点
Is there any way to by default expose custom actuator endpoints
今天,如果我想公开我的自定义执行器端点,我必须在 application.properties
中添加以下配置
management.endpoints.web.exposure.include=info,health,myAwesomeActuator
@Component
@Endpoint(id = "myAwesomeActuator")
public class MyAwesomeActuator {
@ReadOperation
public String test() {
return "Hello, from MyAwesomeActuator";
}
}
如果我不添加上面的配置 Spring 默认情况下启动仅公开 /health
和 /info
端点
有什么方法可以将执行器标记为默认暴露?
这是出于安全考虑。一些端点可能太“脆弱”而无法在生产中暴露。
为了开发,可以通过放置
一次公开所有端点
management.endpoint.web.exposure.include=*
另一种选择是分析 属性 的值并在执行器实际启动之前“以编程方式”添加端点。
这里有很多可能的方法,具体取决于 spring 启动版本。
我发现 this SO thread 描述了这些选项。
一个有趣的选择是编写一个环境 post 处理器,它将分析 属性 并用您的自定义值覆盖,在那个 SO 线程中已经提到了这个选项。
可以查看有关如何在环境 post 处理器中使用属性的示例 here(再次来自该 SO 线程)
今天,如果我想公开我的自定义执行器端点,我必须在 application.properties
management.endpoints.web.exposure.include=info,health,myAwesomeActuator
@Component
@Endpoint(id = "myAwesomeActuator")
public class MyAwesomeActuator {
@ReadOperation
public String test() {
return "Hello, from MyAwesomeActuator";
}
}
如果我不添加上面的配置 Spring 默认情况下启动仅公开 /health
和 /info
端点
有什么方法可以将执行器标记为默认暴露?
这是出于安全考虑。一些端点可能太“脆弱”而无法在生产中暴露。
为了开发,可以通过放置
一次公开所有端点management.endpoint.web.exposure.include=*
另一种选择是分析 属性 的值并在执行器实际启动之前“以编程方式”添加端点。 这里有很多可能的方法,具体取决于 spring 启动版本。
我发现 this SO thread 描述了这些选项。
一个有趣的选择是编写一个环境 post 处理器,它将分析 属性 并用您的自定义值覆盖,在那个 SO 线程中已经提到了这个选项。
可以查看有关如何在环境 post 处理器中使用属性的示例 here(再次来自该 SO 线程)