SpringBoot-集成SpringBootAdmin

前言

我们知道项目的监控是尤为重要的,但是我们如果用jdk 自带的jconsole 和jvisualvm 的话会非常繁琐,且界面不是很友好。之前我们使用了spring boot 项目,但是都没有对项目有一个很好的监控。在spring 家族中有 spring-boot-admin 可以很好的帮我们起到监控微服务项目的作用。
spring-boot-admin 是一个针对 Spring Boot 的 Actuator 接口进行 UI 美化封装的监控工具,它可以在列表中浏览所有被监控 spring-boot 项目的基本信息、详细的 Health 信息、内存信息、JVM 信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改 logger 的 level。
spring-boot-admin 分为服务端和客户端。服务端是一个单独的微服务,用来查看监控的项目的运行情况,客户端是我们一个个的微服务项目。所以要想让我们的项目被服务端监控到,就需要将我们的服务注册到服务端去

Spring Boot Admin简介

Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序。 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul)发现。 UI是的AngularJs应用程序,展示Spring Boot Admin Client的Actuator端点上的一些监控。常见的功能或者监控如下:

  • 显示健康状况
  • 显示详细信息,例如
  • JVM和内存指标
  • micrometer.io指标
  • 数据源指标
  • 缓存指标
  • 显示构建信息编号
  • 关注并下载日志文件
  • 查看jvm系统和环境属性
  • 查看Spring Boot配置属性
  • 支持Spring Cloud的postable / env-和/ refresh-endpoint
  • 轻松的日志级管理
  • 与JMX-beans交互
  • 查看线程转储
  • 查看http跟踪
  • 查看auditevents
  • 查看http-endpoints
  • 查看计划任务
  • 查看和删除活动会话(使用spring-session)
  • 查看Flyway / Liquibase数据库迁移
  • 下载heapdump
  • 状态变更通知(通过电子邮件,Slack,Hipchat,…)
  • 状态更改的事件日志(非持久性)
SpringBoot Admin原理就是使用SpringBoot actuator提供的端点,可以通过HTTP访问。将得到的信息显示在页面上。需要注意的是:SpringBoot Actuator端点显示的是整个服务生命周期中的相关信息,若是应用部署在公网上,要慎重选择公开的端点。为了端点的安全性,可以引入Spring Security进行权限控制 Spring Boot Admin 官网 # 创建Spring Boot Admin Server ## pom配置 ``` de.codecentric spring-boot-admin-starter-server 2.1.6 ``` ## 开启AdminServer的功能 然后在工程的启动类AdminServerApplication加上@EnableAdminServer注解,开启AdminServer的功能,代码如下:
@SpringBootApplication
@EnableAdminServer
public class AdminServerApplication {

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

}

配置文件application.yml

在工程的配置文件application.yml中配置程序名和程序的端口,代码如下:

spring:
  application:
    name: admin-server
server:
  port: 8769

这样Admin Server就创建好了

创建Spring Boot Admin Client

pom配置

        <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>

配置文件application.yml

在工程的配置文件application.yml中配置应用名和端口信息,以及向admin-server注册的地址为http://localhost:8769,最后暴露自己的actuator的所有端口信息,具体配置如下

spring:
  application:
    name: admin-client
  boot:
    admin:
      client:
        url: http://localhost:8769
server:
  port: 8768

management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: ALWAYS
spring.boot.admin.client.url 配置AdminServer的地址 management.endpoints.web.exposure.include 打开客户端Actuator的监控 # 启动服务
@SpringBootApplication
public class AdminClientApplication {

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

演示结果

先启动服务端,接着在浏览器输入:http://localhost:8080/

可以看到此时还没有应用程序被监控,接着分别启动两个客户端,客户端会自动被BootAdmin监控到

总结

1、Spring Boot Admin 用于监控基于 Spring Boot 的应用,它是在 Spring Boot Actuator 的基础上提供简洁的可视化 WEB UI
2、Spring Boot Admin 提供了很多功能,如显示 name、id 和 version,显示在线状态,Loggers 的日志级别管理,Threads 线程管理,Environment 管理等
3、本博文只是介绍了快速入门的一个demo,其实在实战中远不止这些,比如你需要通过自定义邮箱来预警一些各个服务的状态或者线程阻塞之类的,还有项目需要部署在外网之中时那么很多端点信息不能处于暴露状态需要加入认证security机制,若想进一步学习进阶版的springboot整合spring-boot-admin,请关注我!后期我会持续更新干货!

posted @ 2020-07-28 09:59  荭丶尘  阅读(822)  评论(1编辑  收藏  举报