以下:
package com.yanfei1819.actuator.endpoint; import org.springframework.boot.actuate.endpoint.annotation.Endpoint; import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; import org.springframework.context.annotation.Configuration; import java.util.HashMap; import java.util.Map; /** * Created by 追梦1819 on 2019-06-25. */ @Configuration @Endpoint(id = "customize-endpoint") // 构建 rest api 的唯一路径 public class CustomizeEndPoint { @ReadOperation public Map<String, Object> endpoint() { Map<String, Object> map = new HashMap<>(16); map.put("message", "this is customize endpoint"); return map; } }在配置文件中使其暴露:
management.endpoints.web.exposure.include=customize-endpoint启动程序,访问 management.endpoints.web.exposure.include=customize-endpoint ,可以得到endpoint:
{ "_links": { "self": { "href": "http://localhost:8080/actuator", "templated": false }, "customize-endpoint": { "href": "http://localhost:8080/actuator/customize-endpoint", "templated": false } } }再访问返回的endpoint地址,得到相应:
{"message":"this is customize endpoint"}可验证自定义 endpoint 成功。
对于作者来说,这个功能核心是对 endpoints 的理解(我对该功能的使用总结,大部分时间也是耗在了这个上面)。理解了每一个 endpoint ,基本大的方向就掌握了。剩下的就是细节问题了(细节问题无非就是"慢工出细活",简单)。
另一个问题, Actuctor 的功能是实现了,可是大家有没有觉得用起来很别扭?查看一个监控信息,就访问一个路径,得到的就一连串的JSON,繁琐、复杂、不够直观。这实属让运维同学抓狂的问题。有没有好的解决方案呢?且听下回分解。