简介
引入spring-boot-starter-actuator,我们可以使用Spring Boot为我们提供的准生产环境下的应用监控和管理功能。我们可以通过HTTP,JMX,SSH协议来进行操作,自动得到审计、健康及指标信息。
准备
我们在什么都不做的情况下启动项目
这里映射了许多的方法比如把info映射到info.json调用的是哪一个方法。
这个是我们引入了spring-boot-starter-actuator的原因如果我们不引入这个以来我们看一下效果会是怎么样的。
心塞啊少了那么多信息,只剩下默认的/error了,可见这个模块的作用可以为我们提供的准生产环境下的应用监控和管理功能。下面我们访问一下它的关键的监控把。
关键功能
beans
需要我们在application.properties中添加
management.security.enabled=false
我们安装了热部署插件可以按住ctrl+F9来重新运行服务。
再次访问beans看到了不同的信息。beans是监控容器中的组件的信息的。
health
health的信息
info
info为空,那么info信息是怎么来的呢
在配置文件中添加
info.app.id=app1
info.app.versio=1.0.0
热部署之后
github
在开发过程中我们有时需要将源码托管给github,我们要配置一些github的属性。创建application.properties文件。
dump
暴露我们程序运行中的线程信息。
autoconfig
SpringBoot的自动配置信息。
heapdump
输入localhost:8080/heapdump即可下载信息
trace
mappings
metrics
env
configprops
endpoints.metrics.enabled=false
shutdown
在配置文件中配置
endpoints.shutdown.enabled=true
总结
端点名 | 描述 |
---|---|
autoconfig | 所有自动配置信息 |
auditevents | 审计事件 |
beans | 所有Bean的信息 |
configprops | 所有配置属性 |
dump | 线程状态信息 |
env | 当前环境信息 |
health | 应用健康状况 |
info | 当前应用信息 |
metrics | 应用的各项指标 |
mappings | 应用@RequestMapping映射路径 |
shutdown | 关闭当前应用(默认关闭) |
trace | 追踪信息(最新的http请求) |
定制端点信息
endpoints.beans.id=myselfbean
endpoints.beans.path=/myselfbeanspath
小结一下
定制端点一般通过endpoints+端点名+属性名来设置。
修改端点id(endpoints.beans.id=mybeans)
开启远程应用关闭功能(endpoints.shutdown.enabled=true)
关闭端点(endpoints.beans.enabled=false)
开启所需端点
endpoints.enabled=false
endpoints.beans.enabled=true
定制端点访问根路径
management.context-path=/manage
关闭http端点
management.port=-1 也就是说这些功能都访问不到了
健康监控
在SpringBoot中健康监控组件会在org.springframework.boot.actuate包下,我们也可以在IDEA上看到SpringBoot的健康状态,以Redis为例,当SpringBootMaven加入了Redis的以来之后SpringBoot会对Redis的健康状态进行监控。
在SpringBoot中添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
这是因为我们没有正确配置Redis的原因。在Docker中启动Redis,在application.properties中
spring.redis.host=192.168.1.110
自定义
我们可以自定义健康状态的指示器,
首先我们要编写一个健康指示器实现HealthIndicator接口
@Component
public class MyAppHealthIndicator implements HealthIndicator {
@Override
public Health health() {
//自定义的查询方法
// return Health.up().build();代表健康
return Health.down().withDetail("msg","服务器异常请排除错误").build();
}
}
这样没有图形界面的监控信息不是很友好我们可以在,SpringBoot的使用SpringBoot Admin
SpringBoot Admin
简介
Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件。每个应用都认为是一个客户端,通过HTTP或者使用 Eureka注册到admin server中进行展示,Spring Boot Admin UI部分使用AngularJs将数据展示在前端。
Spring Boot Admin 是一个针对spring-boot的actuator接口进行UI美化封装的监控工具。他可以:在列表中浏览所有被监控spring-boot项目的基本信息,详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改logger的level。
准备
server
创建SpringBoot项目初始化如下这是服务端的安装
我们首先为了不和其他的端口发生冲突,可以配置server端口为自己的自定义的端口号这里我们配置成8000。
在SpringbootAdminServerApplication中我们添加一些注解
package com.hph.server;
import de.codecentric.boot.admin.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
@Configuration //配置类
@EnableAdminServer //开启admin服务
@SpringBootApplicatio
public class SpringbootAdminServerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootAdminServerApplication.class, args);
}
}
package com.hph.server;
import de.codecentric.boot.admin.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAdminServer //开启admin服务
@SpringBootApplication
public class SpringbootAdminServerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootAdminServerApplication.class, args);
}
}
client
我们继续创建新的Module,选择Admin的Client端
在client端中我们只需要在application.properties配置上其他的不需要再进行配置。
#client占用端口
server.port=8001
#server端的url地址
spring.boot.admin.url=http://localhost:8000\
#修改权限
management.security.enabled=false
启动client服务之后再去查看一下我们的信息,发现多了一条纪录。
监控
点击Details我们进入到
Details
Metrics
Environment
JXM
Threads
这里有一些线程信息
Audit
审计事件