springboot框架项目实践应用三(监控运维组件admin)

应用监控这个事情,随着微服务化的普适,已不再是早期单服务器、单应用监控那么简单了!微服务化以后,我们需要一整套的监控运维体系,比如说

  • 指标监控:即metrics监控,所谓metrics指的是可以数值化的指标,比如cpu、内存、磁盘、qps、tps、线程数等
  • 日志监控:线上服务发生业务异常、系统异常,很多时候是在事后排查,如果没有日志,自然玩不转了!
  • 链路监控:分布式系统之间调用:A--->B--->C,如果没有一个完整的链路,想要定位分析问题,一样玩不转啊!

很显然,不管是指标,日志,还是链路监控,在微服务化以后,都是非常重要的应用支撑服务。而想要搭建这么一套完整的监控运维体系,对研发团队、运维团队小伙伴的要求都会比较高。

这也是为什么业界大家经常听到说,不要轻易上微服务的一个原因!担心玩不转是一方面,增加的成本那可是实实在在的!

那么如果我们是一个小团队,在开发维护一些基于springboot框架的应用,有没有适合的监控运维组件呢?

答案就是本篇文章,想要推荐给大家的springboot admin组件。springboot admin是开源社区孵化的项目,用于管理监控springboot应用,非常简单易用

  • 能够满足基础的监控告警需求
  • 简单整合,即可让admin server,监控springboot应用
  • 支持通过服务注册发现组件,实现admin server监控所有注册中心的服务

项目开源地址:github.com/codecentric...

1.直接整合客户端实现监控

首先,搭建一个admin server,一个客户端springboot应用,体验基础的监控

1.1.搭建admin server

搭建admin server非常简单,创建一个springboot应用,导入admin server依赖即可

引入依赖

xml 复制代码
<!--admin server 依赖-->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>2.2.3</version>
</dependency>

编写配置

yaml 复制代码
server:
  port: 8899
spring:
  application:
    name: follow-me-springboot-admin-server

编写启动类

启动类上,加上@EnableAdminServer注解

java 复制代码
/**
 * 启动类
 *
 * @author ThinkPad
 * @version 1.0
 */
@SpringBootApplication
@EnableAdminServer
public class FollowMeSpringBootAdminServerApplication {

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

启动应用,访问端点:http://127.0.0.1:8899/applications

到此,就搭建好了admin server,只等着其它需要被监控的服务整合进来了!

1.2.搭建客户端springboot应用

客户端应用搭建需要引入

  • spring-boot-starter-actuator
  • spring-boot-admin-starter-client

两个依赖

xml 复制代码
<!--actuator依赖-->
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-actuator</artifactId>
 </dependency>
 <!--admin client 依赖-->
 <dependency>
 <groupId>de.codecentric</groupId>
 <artifactId>spring-boot-admin-starter-client</artifactId>
 <version>2.2.3</version>
 </dependency>

编写配置

yaml 复制代码
server:
  port: 8888
spring:
  application:
    name: follow-me-springboot-admin-client
  boot:
    admin:
      client:
        # admin server 地址配置
        url: http://127.0.0.1:8899
#actuator端点配置
management:
  endpoint:
    health:
      show-details: always
  endpoints:
    web:
      exposure:
        include: '*'

编写启动类

java 复制代码
/**
 * 启动类
 *
 * @author ThinkPad
 * @version 1.0
 */
@SpringBootApplication
public class FollowMeSpringBootAdminClientApplication {

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

启动客户端应用,观察admin server已经注册进来一个客户端应用了。

1.3.admin server监控说明

搭建admin server,以及admin client应用以后,我们观察到admin server控制面板上已经注册进来客户端应用,即已经将admin client监控起来。

1.3.1.面板介绍

应用墙

应用墙展示admin client应用,是进入监控细节的入口

应用

应用展示被admin server监控的客户端列表信息

日志报表

日志报表展示客户端应用事件列表信息

1.3.2.监控介绍

了解了admin server的应用强、应用、日志报表面板后,我们进入重点,即看看admin server都能实现哪些应用监控

整体面板

进入客户单应用详情,看到admin server能实现的监控有

  • 指标监控:进程、线程、垃圾回收、内存
  • 展示:系统环境、类、配置属性、计划任务
  • 日志配置:这个很有用,支持在线调整日志级别
  • JVM:支持下载线程转储、内存转储
  • 映射:即当前客户端应用暴露的端点、包括业务服务端点
  • 缓存

日志配置

支持线上调整日志级别,非常有用的一个能力,比如说线上环境调试问题,可以临时将日志级别调整为DEBUG,调试完成后再将日志级别跳转为INFO,整个过程不需要重启客户端应用

JVM

支持下载线程转储、内存转储,方便分析线上应用,比如说是内存使用情况、线程情况、GC情况等

映射

当前客户端暴露的端点,包括业务端点

通过以上,我们看到springboot admin组件能够满足应用常规的监控需求,同时还支持在"性能"标签中定义相关的性能指标,以及配套的告警能力。可以说是个非常适合中小团队的监控运维组件

2.通过服务注册发现组件实现监控

springboot admin不仅提供了admin-client方式实现客户端应用监控,事实上我们还可以借助服务注册组件,通过服务发现的方式实现监控。

2.1.启动nacos server

这里将nacos作为服务注册发现组件。稍后将admin server注册上来

2.2.改造admin server

引入nacos服务发现依赖

xml 复制代码
<!--nacos discovery依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

编写配置

yaml 复制代码
server:
  port: 8899
spring:
  application:
    name: follow-me-springboot-admin-server
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        #配置名称空间 dev
        namespace: 1a500714-6fdc-410c-8743-ae30d0edf92e
        #服务提供者8080实例,部署在广州机房
        cluster-name: GZ

重新启动admin server

图一:admin server已经注册到nacos

图二:admin server从注册中心,服务发现了自己

2.3.启动客户端应用

将之前准备的应用,启动起来,观察admin server变化

  • follow-me-spring cloud-nacos-consumer
  • follow-me-spring cloud-nacos-provider

我们看到,只需要将其它应用注册到nacos,那么admin server通过服务发现即可将其它应用监控起来了!非常方便!

本文源码:gitee.com/yanghouhua/...

相关推荐
掘金者阿豪8 小时前
SQL Server数据迁移完成后,凌晨的数据库告警该怎么查?
前端·后端
鶴哥只手遮天9 小时前
AFSIM 2.9.0 深度解析·进阶卷第 1 章 插件源码精读:16 个 WSF 插件的架构与实现
后端
愚农搬码9 小时前
低代码表单与在线问卷不是一回事:产品定位和技术边界
后端
武子康9 小时前
固定时间步已经开了,为什么游戏回放还会走出不同位置?
人工智能·后端·agent
70后写java的老码农9 小时前
换模型只改三行配置:LangChain4j + Spring Boot 3.5 实战,一次分别接入 9 家模型服务
后端·ai编程
愚农搬码9 小时前
2026 年开源表单设计器选型:哪个更好用?
后端
vipxieliang9 小时前
ValidX 正则表达式预编译优化:Pattern 复用策略
java·spring boot·后端
vipxieliang9 小时前
OpenTelemetry 生产实践:Skyscanner 24 集群管理经验与 Mastodon 小团队方案
后端
明月_清风10 小时前
为什么 Skill 很难商业化?Bot 才是 AI 时代真正的商业机会
人工智能·后端·agent
苍何10 小时前
DeepSeek 的 Super-agent 设计,和我们的工程实践
后端