当前位置: 首页 > >

使用Spring Boot Admin对Spring Boot项目进行监控

发布时间:

前言

Spring Boot Admin 是一款开源的用来监控服务状态的工具,核心是Spring Boot Actuator,Spring Boot Admin在其基础上,通过AngularJs对其实现了可视化的展现。Spring Boot Admin 由server和client两部分组成,为了实现监控的功能,我们需要实现一个server,而每一个被监控的Spring Boot 服务可以视为一个client。


Spring Boot Admin Server

server的搭建十分的简单,只需要在新建项目时进行勾选即可:

上图中可以看到server和client 选项,在这里我们只需要server。
新建后对应的pom.xml文件的依赖:



org.springframework.boot
spring-boot-starter-web


de.codecentric
spring-boot-admin-starter-server


de.codecentric
spring-boot-admin-server-ui
2.0.1


在启动类上添加如下的注解:


@Configuration
@EnableAutoConfiguration
@EnableAdminServer
@SpringBootConfiguration
public class DemoApplication {

public static void main(String[] args) {
SpringApplication.run(MonitorApplication.class, args);
}

}

最后在application.properties配置文件上注明端口号:


server.port=10000

运行项目,浏览器输入localhost:10000,即可看到如下的页面:


Spring Boot Admin Client

client的配置更为简单,pom.xml引入依赖:



de.codecentric
spring-boot-admin-starter-client
2.1.0


application.properties配置文件添加以下配置:


spring.application.name=Client Demo
spring.boot.admin.client.url=http://localhost:10000
management.endpoints.web.exposure.include: "*"

name 用来命名被监控的服务spring.boot.admin.client.url 用来指明监控服务(即server)的地址management.endpoints.web.exposure.include 2.0中默认不会将所有的节点通过http进行暴露,通过该配置指定暴露所有节点

运行服务,继续在刚才的页面上可以看到出现了被监控的服务:


遇到的一些坑
connection refused

Caused by: io.netty.channel.unix.Errors$NativeConnectException: syscall:getsockopt(..) failed: Connection refused

在服务部署到服务器上时,配置文件加上如下配置


spring.boot.admin.client.instance.service-base-url=http://client所在的服务器的ip:client的端口号

NoClassFoundException

此类问题通常是server默认检测到了Spring Boot 自动配置的bean(例如redis, mongo等),而这些bean在业务代码中根本没有使用到,也就是说我们不会对这些进行配置。解决方法,在client的启动类上禁止掉对应的自动配置。


禁止mongo


@SpringBootApplication(exclude = {MongoAutoConfiguration.class})

禁止redis


@SpringBootApplication(exclude = {RedisAutoConfiguration.class})



友情链接: