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

相关推荐
duan847几秒前
CentOS 7 离线安装 Docker
后端
AronTing6 分钟前
09-RocketMQ 深度解析:从原理到实战,构建可靠消息驱动微服务
后端·面试·架构
方块海绵7 分钟前
RabbitMQ总结
后端
星辰大海的精灵9 分钟前
Python 中利用算法优化性能的方法
后端·python
雷渊10 分钟前
深度分析Scroll API(滚动搜索)方案
后端
AronTing10 分钟前
11-Spring Cloud OpenFeign 深度解析:从基础概念到对比实战
后端·spring cloud·架构
yifuweigan10 分钟前
J2Cache 实现多级缓存
后端
洛神灬殇13 分钟前
【Redis技术进阶之路】「原理分析系列开篇」探索事件驱动枚型与数据特久化原理实现(时间事件驱动执行控制)
redis·后端
Java中文社群15 分钟前
SpringAI版本更新:向量数据库不可用的解决方案!
java·人工智能·后端
日月星辰Ace17 分钟前
蓝绿部署
运维·后端