前言
有时候我们想要实时监控我们的应用程序的运行状态,比如实时显示一些指标数据,观察每时每刻访问的流量,或者是我们数据库的访问状态等等。这时候就需要Actuator
了。
使用Actuator的好处是,我们可以直接使用这个生产级别的工具,而不需要自己去实现这些东西。Actuator可以自动帮我们自动暴露出这些信息,使用HTTP或者是JMX beans的方式实现。最主要的是我们直接在properties文件中配置即可。
下面看看如何实现:
代码实现
创建一个springboot项目,我使用的是Springboot2.4的版本。
第一步:添加依赖
<!--监控依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
依赖就这么简单。
第二步:配置
#改变应用程序的端口
server.port=8081
#1、actuator默认只开启了info和health两个端点
#以下配置可以开启所有的端点:
management.endpoints.web.exposure.include= *
#2、开启健康监控数据
management.endpoint.health.show-details=always
#3、启用httptrace端点
management.endpoint.httptrace.enabled=true
#4、每次都要加个actuator前缀太麻烦,改变端点前缀路径
management.endpoints.web.base-path= /
这么增加了几个配置。
现在我们直接访问就可以了。
第三步:直接访问
由于在前面我们配置了自己的base-path。所以不需要增加actuator的前缀。现在访问:
http://localhost:8081/mappings
我们访问就会出现这样的画面,看着有点难看,不过有了这些信息,还可以格式化显示,目前也有很多开源的项目可以自动实现。
其他的端口如下:可以把上面的地址的mappings改变一下就可以了。
EndPoints | 描述 |
---|---|
auditevents | 公开当前应用程序的审核事件信息。 |
beans | 显示应用程序中所有Spring bean的完整列表。 |
caches | 暴露可用的缓存。 |
conditions | 显示在配置和自动配置类上评估的条件以及它们匹配或不匹配的原因。 |
configprops | 显示所有的整理列表@ConfigurationProperties,查看配置属性,包括默认配置 |
env | 露出Spring的属性的各种环境变量,后面可跟/{name}查看具体的值 |
flyway | 显示已应用的任何Flyway数据库迁移。 |
health | 显示应用健康信息,2.0以后需要在配置里show-details打开k开关 |
httptrace | 显示HTTP跟踪信息,2.0以后需要手动打开 |
info | 显示任意应用信息,是在配置文件里自己定义的 |
integrationgraph | 显示Spring Integration图。 |
loggers | 显示和修改应用程序中记录器的配置。 |
liquibase | 显示已应用的任何Liquibase数据库迁移。 |
metrics | 显示指标信息,比如内存用量和HTTP请求计数,后可跟/{name}查看具体值 |
mappings | 显示所有@RequestMapping路径的整理列表。 |
scheduledtasks | 显示应用程序中的计划任务。 |
sessions | 允许从Spring Session支持的会话存储中检索和删除用户会话。 |
shutdown | 允许应用程序正常关闭。 |
threaddump | 执行线程转储。 |
OK。基本上是这样。
为Actuator添加安全验证
比如我们的Actuator的端口不想被无关人员看到,于是就可以配置Spring security添加登录。方式如下:
第一步:添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
第二步:在properties文件中添加配置
#5、端口信息被别人看到了咋办,可以添加个security
spring.security.user.name= fdd
spring.security.user.password= 123456
spring.security.user.roles= ADMIN
这里设置的用户面是fdd,密码123456,角色是ADMIN。
第三步:重新访问上面的端口地址
重新访问相关端口地址,就会被重定向到登录页面。使用配置好的用户名密码登录即可。
OK,这个比较简单。