Spring Boot:使用Spring Boot Admin对Spring Boot服务进行监控

一.什么是 Spring Boot Admin?

Spring Boot Admin 是一个管理和监控 Spring Boot 应用程序的开源软件。每个应用都认为是一个客户端,通过 HTTP 或者使用 Eureka 注册到 admin server 中进行展示,Spring Boot Admin UI 部分使用 VueJs 将数据展示在前端。

二.监控单体应用

这节给大家展示如何使用 Spring Boot Admin 监控单个 Spring Boot 应用。

1.Admin Server 端

项目依赖

	<dependencies>
	  <dependency>
	    <groupId>de.codecentric</groupId>
	    <artifactId>spring-boot-admin-starter-server</artifactId>
	    <version>2.1.0</version>
	  </dependency>
	  <dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-web</artifactId>
	  </dependency>
	</dependencies>

配置文件

	server.port=8000

服务端设置端口为:8000。
启动类

	@Configuration
	@EnableAutoConfiguration
	@EnableAdminServer
	public class AdminServerApplication {
	
	  public static void main(String[] args) {
	    SpringApplication.run(AdminServerApplication.class, args);
	  }
	}

完成上面三步之后,启动服务端,浏览器访问http://localhost:8000可以看到以下界面:
在这里插入图片描述

2.Admin Client 端

项目依赖

	<dependencies>
	    <dependency>
	      <groupId>de.codecentric</groupId>
	      <artifactId>spring-boot-admin-starter-client</artifactId>
	      <version>2.1.0</version>
	    </dependency>
	    <dependency>
	      <groupId>org.springframework.boot</groupId>
	      <artifactId>spring-boot-starter-web</artifactId>
	    </dependency>
	</dependencies>

配置文件

	server.port=8001
	spring.application.name=Admin Client
	spring.boot.admin.client.url=http://localhost:8000  
	management.endpoints.web.exposure.include=*
  • spring.boot.admin.client.url 配置 Admin Server 的地址
  • management.endpoints.web.exposure.include=* 打开客户端 Actuator 的监控。
    启动类
	@SpringBootApplication
	public class AdminClientApplication {
	  public static void main(String[] args) {
	    SpringApplication.run(AdminClientApplication.class, args);
	  }
	}

配置完成之后,启动 Client 端,Admin 服务端会自动检查到客户端的变化,并展示其应用:
在这里插入图片描述
页面会展示被监控的服务列表,点击详项目名称会进入此应用的详细监控信息。
在这里插入图片描述
通过上图可以看出,Spring Boot Admin 以图形化的形式展示了应用的各项信息,这些信息大多都来自于 Spring Boot Actuator 提供的接口。

三.监控微服务

如果我们使用的是单个 Spring Boot 应用,就需要在每一个被监控的应用中配置 Admin Server 的地址信息;如果应用都注册在 Eureka 中就不需要再对每个应用进行配置,Spring Boot Admin 会自动从注册中心抓取应用的相关信息。
如果我们使用了 Spring Cloud 的服务发现功能,就不需要在单独添加 Admin Client 客户端,仅仅需要 Spring Boot Server ,其它内容会自动进行配置。
接下来我们以 Eureka 作为服务发现的示例来进行演示,实际上也可以使用 Consul 或者 Zookeeper。
1.服务端和客户端添加 spring-cloud-starter-eureka 到包依赖中

	<dependency>
	    <groupId>org.springframework.cloud</groupId>
	    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
	</dependency>

2.启动类添加注解

	@Configuration
	@EnableAutoConfiguration
	@EnableDiscoveryClient
	@EnableAdminServer
	public class SpringBootAdminApplication {
	    public static void main(String[] args) {
	        SpringApplication.run(SpringBootAdminApplication.class, args);
	    }
	
	    @Configuration
	    public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
	        @Override
	        protected void configure(HttpSecurity http) throws Exception {
	            http.authorizeRequests().anyRequest().permitAll()  
	                .and().csrf().disable();
	        }
	    }
	}

使用类 SecurityPermitAllConfig 关闭了安全验证。
3.在客户端中配置服务发现的地址

	eureka:   
	  instance:
	    leaseRenewalIntervalInSeconds: 10
	    health-check-url-path: /actuator/health
	    metadata-map:
	      startup: ${random.int}    #needed to trigger info and endpoint update after restart
	  client:
	    registryFetchIntervalSeconds: 5
	    serviceUrl:
	      defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
	
	management:
	  endpoints:
	    web:
	      exposure:
	        include: "*"  
	  endpoint:
	    health:
	      show-details: ALWAYS

Spring Cloud 提供了示例代码可以参考这里:spring-boot-admin-sample-eureka
重启启动服务端和客户端之后,访问服务端的相关地址就可以看到监控页面了。

参考文章:http://www.ityouknow.com/springboot/2018/02/11/spring-boot-admin.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值