转载

spring boot - actuator介绍

前言

actuator是spring boot的一个附加功能,可帮助你在应用程序生产环境时监视和管理应用程序。可以使用HTTP的各种请求来监管,审计,收集应用的运行情况.0特别对于微服务管理十分有意义.

启用actuator

如果需要使用这些功能,只需要在代码中引入actuator的start即可.

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Endpoints

Endpoints是actuator非常重要的部分,用来监视程序,和应用交互(如检查信息,)

ID 描述 是否需要鉴权
actuator 为其他端点提供“发现页面”。要求Spring HATEOAS在classpath路径上。 需要
auditevents 陈列当前应用程序的审计事件信息。 需要
autoconfig 展示自动配置信息并且显示所有自动配置候选人以及他们“被不被”应用的原因。 需要
beans 显示应用程序中所有Spring bean的完整列表。 需要
configprops 显示所有配置信息。 需要
dump dump所有线程。 需要
env 陈列所有的环境变量。 需要
flyway Shows any Flyway database migrations that have been applied. 需要
health 显示应用程序运行状况信息 不需要
info 显示应用信息。 不需要
loggers 显示和修改应用程序中的loggers配置。 需要
liquibase 显示已经应用的任何Liquibase数据库迁移。 需要
metrics 显示当前应用程序的“指标”信息。 需要
mappings 显示所有 @RequestMapping 的url整理列表。 需要
shutdown 关闭应用(默认情况下不启用)。 需要
trace 显示跟踪信息(默认最后100个HTTP请求)。 需要

下面做一个简单的测试

创建一个spring boot 项目,或者clone我的项目 spring boot demo

然后运行,访问 http://localhost:8080/health

health可以替换为上述列表中的接口,然后就会有如下雷同的信息

{
  status: "UP",
  diskSpace: {
  status: "UP",
  total: 214750457856,
  free: 168766361600,
  threshold: 10485760
  }
}

当然部分的功能是需要配置才能开启的比如: shutdown

在application.yml中配置

management:
  security:
    #是否启用安全
    enabled: true
endpoints:
  shutdown:
    #开启shutdown端点
    enabled: true

然后post方式访问 http://localhost:8080/shutdown

{
    "timestamp": 1511605936472,
    "status": 401,
    "error": "Unauthorized",
    "message": "Full authentication is required to access this resource.",
    "path": "/shutdown"
}

由于没有权限,调用则会出现如上的错误,我们需要在application.yml的配置文件中配置免权限操作

management:
  security:
    enabled: false

然后再次访问/shutdown 出现如下结果:

{
    "message": "Shutting down, bye..."
}

当然这样是很不安全的哈,所以我们推荐使用spring security进行权限控制

需要我们在pom中引入

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-security</artifactId>
</dependency>

然后配置application.yml 如下

# 安全验证的账号密码
security:
  user:
    name: demo
    password: actuator

然后我们可以用配置中的账号进行登陆,然后将获取的Authorization放在请求头即可.

自定义INFO

我们可以通过实现InfoContributor来定义我们自己的info相应体

@Component
public class CustomContributor implements InfoContributor {
    @Override
    public void contribute(Info.Builder builder) {
        builder.withDetail("custom","this is my custom").build();
    }
}

然后访问 http://localhost:8080/info 则会出现我们自定义的信息.

同理我们还可以自己实现HealthIndicator 来定制不同的健康信息.

结语

本文只是对actuator进行简单的介绍,更多的详细的信息可以参考官方文档和源代码,也可以看看spring boot admin server是如何实现的.

参考文档:

https://docs.spring.io/spring-boot/docs/1.5.9.BUILD-SNAPSHOT/reference/htmlsingle

源代码:

https://github.com/eumji025/springboot-learn

与君共勉!!!

原文  http://blog.csdn.net/jsu_9207/article/details/78633625
正文到此结束
Loading...