Spring Boot 监控管理:

简介

引入spring-boot-starter-actuator,我们可以使用Spring Boot为我们提供的准生产环境下的应用监控和管理功能。我们可以通过HTTP,JMX,SSH协议来进行操作,自动得到审计、健康及指标信息。

准备

SpringBoot和监控管理

我们在什么都不做的情况下启动项目

SpringBoot和监控管理

这里映射了许多的方法比如把info映射到info.json调用的是哪一个方法。

SpringBoot和监控管理

这个是我们引入了spring-boot-starter-actuator的原因如果我们不引入这个以来我们看一下效果会是怎么样的。

SpringBoot和监控管理

心塞啊少了那么多信息,只剩下默认的/error了,可见这个模块的作用可以为我们提供的准生产环境下的应用监控和管理功能。下面我们访问一下它的关键的监控把。

关键功能

beans

SpringBoot和监控管理

需要我们在application.properties中添加

1
management.security.enabled=false

我们安装了热部署插件可以按住ctrl+F9来重新运行服务。

再次访问beans看到了不同的信息。beans是监控容器中的组件的信息的。

SpringBoot和监控管理

health

health的信息

SpringBoot和监控管理

info

info为空,那么info信息是怎么来的呢

SpringBoot和监控管理

在配置文件中添加

1
2
info.app.id=app1
info.app.versio=1.0.0

热部署之后

SpringBoot和监控管理

github

在开发过程中我们有时需要将源码托管给github,我们要配置一些github的属性。创建application.properties文件。

SpringBoot和监控管理

dump

暴露我们程序运行中的线程信息。

SpringBoot和监控管理

autoconfig

SpringBoot的自动配置信息。

SpringBoot和监控管理

heapdump

输入localhost:8080/heapdump即可下载信息

SpringBoot和监控管理

trace

SpringBoot和监控管理

mappings

SpringBoot和监控管理

metrics

SpringBoot和监控管理

env

SpringBoot和监控管理

configprops

SpringBoot和监控管理

1
endpoints.metrics.enabled=false

SpringBoot和监控管理

shutdown

在配置文件中配置

1
endpoints.shutdown.enabled=true

SpringBoot和监控管理

SpringBoot和监控管理

总结

端点名 描述
autoconfig 所有自动配置信息
auditevents 审计事件
beans 所有Bean的信息
configprops 所有配置属性
dump 线程状态信息
env 当前环境信息
health 应用健康状况
info 当前应用信息
metrics 应用的各项指标
mappings 应用@RequestMapping映射路径
shutdown 关闭当前应用(默认关闭)
trace 追踪信息(最新的http请求)

定制端点信息

1
2
endpoints.beans.id=myselfbean
endpoints.beans.path=/myselfbeanspath

SpringBoot和监控管理

小结一下

1
2
3
4
5
6
7
8
9
10
11
定制端点一般通过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和监控管理

在SpringBoot中添加

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

SpringBoot和监控管理

这是因为我们没有正确配置Redis的原因。在Docker中启动Redis,在application.properties中

1
spring.redis.host=192.168.1.110

SpringBoot和监控管理

自定义

我们可以自定义健康状态的指示器,

首先我们要编写一个健康指示器实现HealthIndicator接口

1
2
3
4
5
6
7
8
9
@Component
public class MyAppHealthIndicator implements HealthIndicator {
@Override
public Health health() {
//自定义的查询方法
// return Health.up().build();代表健康
return Health.down().withDetail("msg","服务器异常请排除错误").build();
}
}

SpringBoot和监控管理

这样没有图形界面的监控信息不是很友好我们可以在,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项目初始化如下这是服务端的安装

SpringBoot和监控管理

我们首先为了不和其他的端口发生冲突,可以配置server端口为自己的自定义的端口号这里我们配置成8000。

在SpringbootAdminServerApplication中我们添加一些注解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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);
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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端

SpringBoot和监控管理

在client端中我们只需要在application.properties配置上其他的不需要再进行配置。

1
2
3
4
5
6
7
#client占用端口
server.port=8001

#server端的url地址
spring.boot.admin.url=http://localhost:8000\
#修改权限
management.security.enabled=false

启动client服务之后再去查看一下我们的信息,发现多了一条纪录。

SpringBoot和监控管理

监控

点击Details我们进入到

Details

SpringBoot和监控管理

Metrics

SpringBoot和监控管理

Environment

SpringBoot和监控管理

SpringBoot和监控管理

JXM

SpringBoot和监控管理

Threads

这里有一些线程信息

SpringBoot和监控管理

Audit

审计事件

SpringBoot和监控管理

Trace

SpringBoot和监控管理

Heapdump

SpringBoot和监控管理

相关文章: