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

上一篇文章《Spring Boot(十九):使用 Spring Boot Actuator 监控应用》介绍了 Spring Boot Actuator 的使用,Spring Boot Actuator 提供了对单个 Spring Boot 的监控,信息包含:应用状态、内存、线程、堆栈等等,比较全面的监控了 Spring Boot 应用的整个生命周期。

但是这样监控也有一些问题:第一,所有的监控都需要调用固定的接口来查看,如果全面查看应用状态需要调用很多接口,并且接口返回的 Json 信息不方便运营人员理解;第二,如果 Spring Boot 应用集群非常大,每个应用都需要调用不同的接口来查看监控信息,操作非常繁琐低效。在这样的背景下,就诞生了另外一个开源软件:Spring Boot Admin。

什么是 Spring Boot Admin?

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

这篇文章给大家介绍如何使用 Spring Boot Admin 对 Spring Boot 应用进行监控。

监控单体应用

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

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可以看到以下界面:

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: 10health-check-url-path: /actuator/healthmetadata-map:startup: ${random.int}    #needed to trigger info and endpoint update after restartclient:registryFetchIntervalSeconds: 5serviceUrl: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

重启启动服务端和客户端之后,访问服务端的相关地址就可以看到监控页面了。

文章内容已经升级到 Spring Boot 2.x

示例代码-github

示例代码-码云

参考

Spring Boot Admin Reference Guide

转载于:https://www.cnblogs.com/telwanggs/p/10701462.html

(转)Spring Boot(二十):使用 spring-boot-admin 对 Spring Boot 服务进行监控相关推荐

  1. Spring(二十二):Spring 事务

    事务简介: 事务管理是企业级应用程序开发中必不可少的技术,用来确保数据的完整性和一致性. 事务就是一系列的动作,它们被当做一个单独的工作单元.这些动作要么全部完成,要么全部不起作用. 事务的是四个关键 ...

  2. 分布式电商项目二十六:使用阿里云存储的服务端签名后直传(前端联调)

    使用阿里云存储的服务端签名后直传(前端联调) 在前端显示上传的界面,可以根据人人fast-vue的结构,在src\components目录下添加upload文件夹,直接添加vue组件即可,总计三个组件 ...

  3. 二十9天 月出冲击黑鸟 —Spring的AOP_AspectJ @annotation

    6月14日,阴转雨. "四面垂杨十里荷,向云何处最花多, 画楼南畔夕阳和.天气乍凉人寂寞, 光阴须得酒消磨,且来花里听笙歌." 面向切面的框架AspectJ邂逅Spring,不仅造 ...

  4. Spring(二)IOC容器的初始化流程

    文章目录 一.Spring 核心容器类 1.1 BeanFactory 1.2 ApplicationContext 1.3 BeanDefinition 二.IOC容器的初始化 2.1 基于Xml的 ...

  5. Spring Boot(十二)集成spring-boot-starter-mail发送邮件

    项目GitHub地址 : https://github.com/FrameReserve/TrainingBoot Spring Boot(十二)集成spring-boot-starter-mail发 ...

  6. Spring Boot教程(二十):Spring Boot使用String Task定时任务

    一.JAVA常见的几种定时任务比较 Timer:jdk自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让程序按照某一个频度执行, ...

  7. Spring Boot + vue-element 开发个人博客项目实战教程(二十五、项目完善及扩展(前端部分))

    ⭐ 作者简介:码上言 ⭐ 代表教程:Spring Boot + vue-element 开发个人博客项目实战教程 ⭐专栏内容:零基础学Java.个人博客系统 ⭐我的文档网站:http://xyhwh- ...

  8. Spring Boot(十二)单元测试JUnit

    一.介绍 JUnit是一款优秀的开源Java单元测试框架,也是目前使用率最高最流行的测试框架,开发工具Eclipse和IDEA对JUnit都有很好的支持,JUnit主要用于白盒测试和回归测试. 白盒测 ...

  9. 在Spring Boot中使用 @ConfigurationProperties 注解 (二十六)

    @ConfigurationProperties主要作用:就是绑定application.properties中的属性 java代码 @Configuration public class DataS ...

最新文章

  1. Android RadioButton 修改选择框
  2. bitnami-redmine邮件告警配置
  3. .net 访问mysql链接池_c# – .NET SqlConnection类,连接池和重新连接逻辑
  4. WPF快速入门系列(6)——WPF资源和样式
  5. 深圳.NET俱乐部 Windows 7 社区发布会总结及资源下载
  6. mysql 删除时间一个星期_15天快速学习 数据库Mysql 基础操作命令(第一章)
  7. Fleecing the Raffle
  8. 最幸福的码农在用什么编程语言?
  9. 三面美团Java岗,尚学堂java马士兵全套
  10. 课下测试ch17ch18
  11. PowerShell 方式部署Sharepoint Solution
  12. 开课吧课堂-Java面试题:面向对象的特征有哪些方面?
  13. 最新PHP精品在线音乐分享网站源码/UI很好看
  14. AGV机器人RFID传感器CK-G06A与西门子1200PLC应用手册
  15. 网页制作之各种框架简介
  16. 面试自我介绍和简历上的内容能不能相同?
  17. 2023年全国最新二级建造师精选真题及答案27
  18. 移动推送:灵活、高效、精准的App消息推送
  19. 记录下配置腾讯云服务器的过程
  20. linux修改X2APIC参数,虚拟机对x2apic destination mode的选择

热门文章

  1. 网络打印服务器的作用,内置网络打印服务器有什么用?
  2. (91)FPGA模块例化(module)
  3. (40)System Verilog随机函数$random示例
  4. python分片上传_python 分片上传大格式
  5. c++tcp接收文件缓存多大合适_要是有人问我 TCP, 我能怎么扯
  6. 嘉立创显示板子没有发现外型数据
  7. 8004.ros2中添加boost依赖库写法
  8. matlab中定点数16位转为14位,如何使用python将浮点数转换为具有预定义位数的固定点...
  9. 网络性能优化(NAPI)
  10. C语言 JSON 解析库 - MJSON使用介绍