spring-boot-actuator

来源:互联网 发布:天涯明月刀染色数据 编辑:程序博客网 时间:2024/06/16 14:06
spring-boot-actuator模块提供了一个监控和管理生产环境的模块,可以使用http、jmx、ssh、telnet等拉管理和监控应用。审计(Auditing)、 
健康(health)、数据采集(metrics gathering)会自动加入到应用里面。

Endpoints
列举一些主要的endpoints 
ID
描述
敏感(Sensitive)
autoconfig
显示一个auto-configuration的报告,该报告展示所有auto-configuration候选者及它们被应用或未被应用的原因
true
beans
显示一个应用中所有Spring Beans的完整列表
true
configprops
显示一个所有@ConfigurationProperties的整理列表
true
dump
执行一个线程转储
true
env
暴露来自Spring ConfigurableEnvironment的属性
true
health
展示应用的健康信息(当使用一个未认证连接访问时显示一个简单的’status’,使用认证连接访问则显示全部信息详情)
false
info
显示任意的应用信息
false
metrics
展示当前应用的’指标’信息
true
mappings
显示一个所有@RequestMapping路径的整理列表
true
shutdown
允许应用以优雅的方式关闭(默认情况下不启用)
true
trace
显示trace信息(默认为最新的一些HTTP请求)
true

可以检查的其他一些情况的健康信息。下面的HealthIndicators会被Spring Boot自动配置(在合适的时候):
名称
描述
DiskSpaceHealthIndicator
低磁盘空间检测
DataSourceHealthIndicator
检查是否能从DataSource获取连接
MongoHealthIndicator
检查一个Mongo数据库是否可用(up)
RabbitHealthIndicator
检查一个Rabbit服务器是否可用(up)
RedisHealthIndicator
检查一个Redis服务器是否可用(up)
SolrHealthIndicator
检查一个Solr服务器是否可用(up)
自定义Indicator 扩展 HealthEndPoint
看源码 其实 磁盘和数据库健康信息就是 DiskSpaceHealthIndicator、DataSourceHealthIndicator 来实现的,当我们对一些我们自定义的组件进行监控时, 我们也可以实现个Indicator :
@Componentpublic class HealthIndicatorImpl implements HealthIndicator {    @Override    public Health health() {        return new Health.Builder().withDetail("usercount", 10) //自定义监控内容                .withDetail("userstatus", "up").up().build();    }}
自定义EndPoint
其实除了扩展 HealthEndPoint 来添加一些健康检查, 我们也可以自定定义一些EndPoint 来提供程序运行时一些信息的展示:
/** * 自定义EndPoint配置 */@Configurationpublic class EndPointConfig {    /**     * 可以配置多个EndPoint,方法上添加bean注解     * @return     */    @Bean    public Endpoint<Map<String, Object>> customEndPoint() {        return new CustomEndPoint();    }}
/** * http://localhost:8080/manage/customsystem */@ConfigurationProperties(prefix="endpoints.customsystem")public class CustomEndPoint extends AbstractEndpoint<Map<String, Object>> {    public CustomEndPoint() {        super("customsystem");    }    @Override    public Map<String, Object> invoke() {        Map<String, Object> result = new HashMap<>();        Date date = new Date();        result.put("server_time", date.toString());        result.put("ms_format", date.getTime());        return result;    }}

配置文件属性介绍
地址和端口的配置
  • management.port:指定访问这些监控方法的端口,与逻辑接口端口分离。如果不想将这些暴露在http中,可以设置 management.port = -1
  • management.address:指定地址,比如只能通过本机监控,可以设置 management.address = 127.0.0.1
  • management.context-path :指定访问监控的根目录
敏感信息访问限制
根据上面表格,鉴权为false的,表示不敏感,可以随意访问,否则就是做了一些保护,不能随意访问。
endpoints.mappings.sensitive=false
这样需要对每一个都设置,比较麻烦。敏感方法默认是需要用户拥有ACTUATOR角色,因此,也可以设置关闭安全限制:
management.security.enabled=false
或者配合Spring Security做细粒度控制。

配置需要账号密码安全验证:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>

application.yml配置
management:
security:
enabled: true
roles: ADMIN
context-path: /manage
port: 10001
security:
user:
password: 123456
name: admin
原创粉丝点击