一、简介

Spring Boot Admin是一个完整的应用程序,用于监控和管理Spring Boot应用。原理是通过调用Spring Boot Actuator提供的http接口来实现的监控和管理,所以要想能够被Spring Boot Admin 的Server端管理,则Client端必须集成了Spring Boot Actuator。

  • 可监控内容:

    状态;基本信息;JVM和堆栈实时数据;应用配置信息;缓存指标;线程数据;接口调用数据

  • 可管理内容:

    按照包名调整日志级别;管理、查看和下载系统日志;报警(服务异常下线发送邮件)

AdminServer的web界面:

二、Spring-Boot集成

Spring Boot Admin是C/S结构,server端负责收集和处理client端的数据,并且可以通过向client端发送命令来管理client。

项目工程目录结构:

三、Server端

  • 引入所需的pom依赖:spring-boot-starter-web;spring-boot-admin-starter-server
  • application.yml配置文件中配置服务的端口:server.port=9000
  • 启动类上面添加EnableAdminServer的注解

完整的pom文件:


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.naylor</groupId>
<artifactId>admin-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>admin-server</name>
<description>Demo project for Spring Boot</description> <properties>
<java.version>1.8</java.version>
<spring-boot-admin.version>2.3.0</spring-boot-admin.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies> <dependencyManagement>
<dependencies>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-dependencies</artifactId>
<version>${spring-boot-admin.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

启动AdminServer后访问 http://127.0.0.1:9000/applications 可以看到“暂无应用注册”的提示

四、Client端

  • 引入所需的pom依赖:spring-boot-starter-web;spring-boot-admin-starter-client;spring-boot-actuator
  • application.propertis配置文件中增加相关配置:服务端口;服务名称;开启actuator所有端点都可以被访问;AdminServer服务端的地址

完整的pom文件:


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.naylor</groupId>
<artifactId>admin-client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>admin-client</name>
<description>Demo project for Spring Boot</description> <properties>
<java.version>1.8</java.version>
<spring-boot-admin.version>2.3.0</spring-boot-admin.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies> <dependencyManagement>
<dependencies>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-dependencies</artifactId>
<version>${spring-boot-admin.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

完整的配置文件:


spring.boot.admin.client.url=http://localhost:9000 server.port=8003
spring.application.name=admin-client management.endpoints.web.exposure.include=*

启动AdminClient后,访问 http://127.0.0.1:8003/actuator , 先看看actuator是否正常

同时启动AdminServer和AdminClient:

访问 http://127.0.0.1:9000/wallboard 可以看到一个client端已经注册到了AdminServer之中

五、集成到Eureka

集成到Eureka之后,就不必在每一个Admin-Client的配置文件中都配置一遍Admin-Server的地址,让Admin-Server主动从Eureka中拉取Admin-Client,并获取Actuator地址,进而进行监控和管理。

1、Admin-Server的配置文件中加入Eureka-Server地址:

eureka:
instance:
hostname: localhost
#eureka-client 向 eureka-server端发送心跳包的频率
leaseRenewalIntervalInSeconds: 10
health-check-url-path: /actuator/health
client:
#是否把自己向eureka-server注册
registerWithEureka: false
fetch-registry: true
#从eureka-server拉取已注册服务的列表的频率
registryFetchIntervalSeconds: 5
serviceUrl:
defaultZone: http://${eurekaclient.username}:${eurekaclient.password}@localhost:7001/eureka/

配置了serviceUrl之后,Admin-Server就可以从Eureka中获取已经注册的微服务信息,并进行监控和管理。

至于registerWithEureka是否配置为true,取决于自己的喜欢。配置为false,Admin-Server不会注册到Eureka-Server

;配置为true,Admin-Server就会注册到Eureka-Server中,那么,意味着Admin-Server从注册中心拉取微服务的时候会把自己(即Admin-Server)也拉取下来进行监控和管理。

2、Admin-Client的配置文件中去除已经配置的Admin-Server地址:


# 注释掉配置的Admin-Server地址
# spring.boot.admin.client.url=http://localhost:9000

注释掉配置的Admin-Server地址的目的是避免重复,因为当前的Admin-Client作为一个微服务已经注册到了Eureka-Server,那么Admin-Server就已经可以从Eureka-Server中拉取到此服务的Actuator信息。

若不注释,那么在Admin-Server的WallBoard中将看到两个重复的Admin-Client。

引用:

https://www.cnblogs.com/huanchupkblog/p/10563629.html

https://www.jianshu.com/p/1749f04105fb


Spring Boot Admin极简教程的更多相关文章

  1. Spring Boot 如何极简入门?

    Spring Boot已成为当今最流行的微服务开发框架,本文是如何使用Spring Boot快速开始Web微服务开发的指南,我们将创建一个可运行的包含内嵌Web容器(默认使用的是Tomcat)的可运行 ...

  2. spring boot MySQL极简封装

    摒弃繁琐配置,采用极简方式,源码简单,调用丰富,无污染,易携带,工作量减半,java操作mysql居家旅行升职加薪登上人生巅峰迎娶白富美必备object! 项目地址:https://gitee.com ...

  3. spring cloud微服务快速教程之(六) 应用监控 spring boot admin

    0-前言 当我们发布了微服务后,我们希望对各个应用的各个运行状况进行一个监控:这个时候spring boot admin,就出场了: spring boot admin:是一个监控和管理spring ...

  4. Spring Boot Admin 2.1.4最新实战教程

    环境的搭建 首先搭建eruka的注册中心 pom.xml <?xml version="1.0" encoding="UTF-8"?> <pr ...

  5. Spring Boot 2.x基础教程:使用国产数据库连接池Druid

    上一节,我们介绍了Spring Boot在JDBC模块中自动化配置使用的默认数据源HikariCP.接下来这一节,我们将介绍另外一个被广泛应用的开源数据源:Druid. Druid是由阿里巴巴数据库事 ...

  6. Spring Boot Admin的使用

    http://www.jianshu.com/p/e20a5f42a395 ******************************* 上一篇文章中了解了Spring Boot提供的监控接口,例如 ...

  7. Spring Boot Admin 2.1.0 全攻略

    转载请标明出处: https://www.fangzhipeng.com 本文出自方志朋的博客 Spring Boot Admin简介 Spring Boot Admin是一个开源社区项目,用于管理和 ...

  8. SpringBoot | 第二十八章:监控管理之Spring Boot Admin使用

    前言 上一章节,我们介绍了Actuator的使用,知道了可通过访问不同的端点路径,获取相应的监控信息.但使用后也能发现,返回的监控数据都是以JSON串的形式进行返回的,对于实施或者其他人员来说,不是很 ...

  9. Nginx 极简教程(快速入门)

    作者:dunwu github.com/dunwu/nginx-tutorial 推荐阅读(点击即可跳转阅读) 1. SpringBoot内容聚合 2. 面试题内容聚合 3. 设计模式内容聚合 4.  ...

  10. nginx极简教程

    Nginx 极简教程 本项目是一个 Nginx 极简教程,目的在于帮助新手快速入门 Nginx. examples 目录中的示例模拟了工作中的一些常用实战场景,并且都可以通过脚本一键式启动,让您可以快 ...

随机推荐

  1. 华为云云原生数据库GaussDB加速创新,企业核心数据上云信赖之选

    集大会演讲.圆桌讨论.精彩活动及现场直击....一大波华为开发者大会2021干货资料来喽~~!还等什么快快来领取技术福利! 摘要:华为开发者大会(Cloud)上,华为云发布了云原生数据库GaussDB ...

  2. Solon Web 开发:一、开始

    1.第一个Web应用 回顾一下<快速入门>里做过的事情,然后开始我们的第一个web应用 1.1.pom.xml配置 设置solon的parent.这不是必须的,但包含了大量默认的配置,可简 ...

  3. Solon 运行出乱码怎么办?

    1.启动时添加 -Dfile.encoding=utf-8,示例: java -Dfile.encoding=utf-8 -jar DemoApp.jar 再出现乱码?一般是文件本身编码问题.检查一下 ...

  4. 从阿里云全球实时传输网络GRTN出发,浅谈QOE优化实践

    直播已深入每家每户,以淘宝的直播为例,在粉丝与主播的连麦互动中如何实现无感合屏或切屏?阿里云GRTN核心网技术负责人肖凯,在LVS2022上海站为我们分享了GRTN核心网的运作机制.运用方面以及QOE ...

  5. C# NLog 配置

    首先用NuGet安装NLog依赖DLL NLog NLog.Config NLog.Schema NLog配置文件NLog.config: <?xml version="1.0&quo ...

  6. 深挖 Python 元组 pt.2

    哈喽大家好,我是咸鱼 在<深挖 Python 元组 pt.1>中我们了解 Python 元组的一些概念(索引和切片等),以及如何创建元组,最重要的是我们还介绍了元组的不可变特性 那么今天我 ...

  7. 【第三方库】从编译到运行,轻松学会gflags库

    gflags是Google开源的一个库,可以很方便地定义一些全局变量,并且可以从命令行设置他们的值,广泛应用于各个项目中以及自己平时的开发中.本期参考gflags的官方文档,简单直接介绍下怎么使用这个 ...

  8. spring中的核心类有那些,各有什么作用?

    BeanFactory:产生一个新的实例,可以实现单例模式BeanWrapper:提供统一的get及set方法ApplicationContext:提供框架的实现,包括BeanFactory的所有功能 ...

  9. freeswitch的多租户模式

    概述 freeswitch是一款简单好用的VOIP开源软交换平台. 现在的VOIP服务越来越倾向于云端服务,包括呼叫中心云服务,线路云平台. 而云平台对多个客户的服务就需要做好隔离,包括数据隔离.线路 ...

  10. python常见面试题讲解(十二)句子逆序

    题目描述 将一个英文语句以单词为单位逆序排放.例如"I am a boy",逆序排放后为"boy a am I"所有单词之间用一个空格隔开,语句中除了英文字母外 ...