资讯专栏INFORMATION COLUMN

Spring Boot应用监控实战

mtunique / 2362人阅读

摘要:概述之前讲过容器的可视化监控,即监控容器的运行情况,包括使用率内存占用网络状况以及磁盘空间等等一系列信息。实战一下中添加依赖启动应用程序之后,只要在浏览器中输入端点信息就能获得应用的一些状态信息。

概述

之前讲过Docker容器的可视化监控,即监控容器的运行情况,包括 CPU使用率、内存占用、网络状况以及磁盘空间等等一系列信息。同样利用SpringBoot作为微服务单元的实例化技术选型时,我们不可避免的要面对的一个问题就是如何实时监控应用的运行状况数据,比如:健康度、运行指标、日志信息、线程状况等等。本文就该问题做一点探索并记录试验过程。

注: 本文首发于 My 公众号 CodeSheep ,可 长按扫描 下面的 小心心 来订阅 ↓ ↓ ↓

入门使用:Actuator插件

Actuator插件是SpringBoot原生提供的一个服务,可以通过暴露端点路由,用来输出应用中的诸多 端点信息。实战一下!

pom.xml中添加依赖:


    org.springframework.boot
    spring-boot-starter-actuator

启动Spring Boot应用程序之后,只要在浏览器中输入端点信息就能获得应用的一些状态信息。

常用端点列举如下,可以一个个详细试一下:

/info        应用基本信息

/health       健康度信息

/metrics      运行指标

/env        环境变量信息

/loggers      日志相关

/dump       线程相关信息

/trace       请求调用轨迹

当然此时只能使用/health/info端点,其他因为权限问题无法访问。想访问指定端点的话可以在yml配置中添加相关的配置项,比如/metrics端点则需要配置:

endpoints:
  metrics:
    sensitive: false

此时浏览器访问/metrics端点就能得到诸如下面所示的信息:

{
    "mem": 71529,
    "mem.free": 15073,
    "processors": 4,
    "instance.uptime": 6376,
    "uptime": 9447,
    "systemload.average": -1.0,
    "heap.committed": 48024,
    "heap.init": 16384,
    "heap.used": 32950,
    "heap": 506816,
    "nonheap.committed": 23840,
    "nonheap.init": 160,
    "nonheap.used": 23506,
    "nonheap": 0,
    "threads.peak": 25,
    "threads.daemon": 23,
    "threads.totalStarted": 28,
    "threads": 25,
    "classes": 6129,
    "classes.loaded": 6129,
    "classes.unloaded": 0,
    "gc.copy.count": 74,
    "gc.copy.time": 173,
    "gc.marksweepcompact.count": 3,
    "gc.marksweepcompact.time": 88,
    "httpsessions.max": -1,
    "httpsessions.active": 0
}

当然也可以开启全部端点权限,只需如下配置即可:

endpoints:
  sensitive: false

由于Actuator插件提供的监控能力毕竟有限,而且UI比较简陋,因此需要一个更加成熟一点的工具

Spring Boot Admin监控系统

SBA则是基于Actuator更加进化了一步,其是一个针对Actuator接口进行UI美化封装的监控工具。我们来实验一下。

首先来创建一个Spring Boot Admin Server工程作为服务端

pom.xml中加入如下依赖:


    de.codecentric
    spring-boot-admin-server
    1.5.7



    de.codecentric
    spring-boot-admin-server-ui
    1.5.7

然后在应用主类上通过加注解来启用Spring Boot Admin

@EnableAdminServer
@SpringBootApplication
public class SpringbtAdminServerApplication {

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

启动程序,浏览器打开 localhost:8081 查看Spring Boot Admin主页面:

此时Application一栏空空如也,等待待监控的应用加入

创建要监控的Spring Boot应用

pom.xml中加入以下依赖


    de.codecentric
    spring-boot-admin-starter-client
    1.5.7

然后在yml配置中添加如下配置,将应用注册到Admin服务端去:

spring:
  boot:
    admin:
      url: http://localhost:8081
      client:
        name: AdminTest

Client应用一启动,Admin服务立马推送来了消息,告诉你AdminTest上线了:

此时去Admin主界面上查看,发现Client应用确实已经注册上来了:

查看Detail

查看 Metrics

查看 Enviroment

查看JMX

查看Threads

查看Trace与详情

点击最上方JOURNAL,会看到被监控应用程序的事件变化:

图中可以清晰地看到,应用从 REGISTRATION → UNKNOWN → UP 的状态跳转。

这样就将Actuator插件提供的所有端点信息在SBA中全部尝试了一遍。

参考文献

http://codecentric.github.io/...

后记

作者更多的原创文章在此,欢迎观赏

My Personal Blog

作者更多的SpringBt实践文章在此:

Spring Boot应用监控实战

SpringBoot应用部署于外置Tomcat容器

ElasticSearch搜索引擎在SpringBt中的实践

初探Kotlin+SpringBoot联合编程

Spring Boot日志框架实践

SpringBoot优雅编码之:Lombok加持

如果有兴趣,也可以抽点时间看看作者一些关于容器化、微服务化方面的文章:

利用K8S技术栈打造个人私有云 连载文章

从一份配置清单详解Nginx服务器配置

Docker容器可视化监控中心搭建

利用ELK搭建Docker容器化应用日志中心

RPC框架实践之:Apache Thrift

RPC框架实践之:Google gRPC

微服务调用链追踪中心搭建

Docker容器跨主机通信

Docker Swarm集群初探

高效编写Dockerfile的几条准则

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69259.html

相关文章

  • spring boot - 收藏集 - 掘金

    Spring Boot 揭秘与实战(九) 应用监控篇 - HTTP 健康监控 - 掘金Health 信息是从 ApplicationContext 中所有的 HealthIndicator 的 Bean 中收集的, Spring Boot 内置了一些 HealthIndicator。 博客地址:http://blog.720ui.com/ 内... Spring Boot 揭秘与实战(...

    rollback 评论0 收藏0
  • Spring Boot Admin 2.0开箱体验

    概述 在我之前的 《Spring Boot应用监控实战》 一文中,讲述了如何利用 Spring Boot Admin 1.5.X 版本来可视化地监控 Spring Boot 应用。说时迟,那时快,现在 Spring Boot Admin 都更新到 2.0 版本了,并且可以对当下热门的 Spring Boot 2.0 ...

    CastlePeaK 评论0 收藏0
  • Spring Cloud Admin 实战

    Spring Cloud Admin 简介 Spring Boot Admin 用于监控基于 Spring Boot应用,它是在 Spring Boot Actuator 的基础上提供简洁的可视化 WEB UI。Spring Boot Admin 提供了很多功能,如显示 name、id 和 version,显示在线状态,Loggers 的日志级别管理,Thr...

    MrZONT 评论0 收藏0
  • 2021 年最新基于 Spring Cloud 的微服务架构分析

    Spring Cloud 是一个相对比较新的微服务框架,2016 年才推出 1.0 的 release 版本. 虽然 Spring Cloud 时间最短, 但是相比 Dubbo 等 RPC 框架, Spring Cloud 提供的全套的分布式系统解决方案。 Spring Cloud 是...

    cikenerd 评论0 收藏0
  • 写这么多系列博客,怪不得找不到女朋友

    ...址为:http://www.54tianzhisheng.cn/2018/03/27/blogs/ 系列文章合集 Spring Boot 系列文章 1、Spring Boot系列文章(一):SpringBoot Kafka 整合使用 2、Spring Boot系列文章(二):SpringBoot Admin 使用指南 3、Spring Boot系列文章(三):SpringBoot RabbitMQ 整...

    JerryWangSAP 评论0 收藏0

发表评论

0条评论

mtunique

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<