通过JMX监控Spring Boot应用

简介:

Spring Boot应用的健康监控一文中,我们通过Spring Boot Actuator对外暴露应用的监控信息,除了使用HTTP获取JSON格式 的数据之外,还可以通过JMX监控应用,Spring Boot也提供了对JMX监控的支持。JMX监控对外暴露的信息相同,不过是使用MBeans容器将应用数据封装管理。

接下来我们看下如何利用JMX获取应用状态信息,以及如何使用Jolokia JMX库对外暴露MBeans的HTTP访问URL。

Get Ready

在BookPub应用的pom文件中添加jolokia-core依赖

<!-- JMX monitor -->
<dependency>
   <groupId>org.jolokia</groupId>
   <artifactId>jolokia-core</artifactId>
</dependency>

How Do

  1. 启动BookPub应用,然后在命令行中执行jconsole命令启动“Java管理和监视控制台”,然后选择org.springframework.boot节点下的Endpoint,可以看到如下信息


    Java管理和监视控制台
  2. Tomcat节点下选择ThreadPool,然后在选择http-nio-8080节点,在这个节点下选择maxThreads属性,可以看到如下信息


    查看应用的最大并发线程数
  3. 除了通过JMX获取信息,也暴露了对应的HTTP接口访问Mbeans对象的信息,例如,我们在postman中访问http://localhost:8080/jolokia/read/Tomcat:type=ThreadPool,name=%22http-nio-8080%22/maxThreads,也可以得到对应的信息


    通过HTTP访问应用的最大并发线程数

分析

只要添加了Spring Boot Actuator库,所有相关的endpoint和管理服务都打开了,包括JMX,我们可以通过设置endpoints.jmx.enabled=false禁止对外提供基于JMX的endpoints;或者通过设置spring.jmx.enabled=false禁止对外提供Spring MBeans。

在类路径中存在的Jolokia库会触发Spring Boot的JolokiaAutoConfiguration,这个自动配置类会自动配置可以接受/jolokia请求的JolokiaMvcEndPoint;也可以通过在application.properties中设置jolokia.config.系列的属性配置不同的Jolokia配置。完整的Jolokia配置地址在:https://jolokia.org/reference/html/agents.html#agent-war-init-params。如果你希望定制自己的Jolokia配置,则可以通过设置endpoints.jolokia.enabled=false*让Spring Boot应用忽略自身提供的配置。


    相关文章
    |
    10月前
    |
    监控 Java API
    Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
    Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
    1403 3
    |
    9月前
    |
    SQL Java 数据库连接
    Spring Data JPA 技术深度解析与应用指南
    本文档全面介绍 Spring Data JPA 的核心概念、技术原理和实际应用。作为 Spring 生态系统中数据访问层的关键组件,Spring Data JPA 极大简化了 Java 持久层开发。本文将深入探讨其架构设计、核心接口、查询派生机制、事务管理以及与 Spring 框架的集成方式,并通过实际示例展示如何高效地使用这一技术。本文档约1500字,适合有一定 Spring 和 JPA 基础的开发者阅读。
    819 0
    |
    8月前
    |
    消息中间件 缓存 Java
    Spring框架优化:提高Java应用的性能与适应性
    以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
    663 8
    |
    9月前
    |
    Prometheus 监控 Java
    日志收集和Spring 微服务监控的最佳实践
    在微服务架构中,日志记录与监控对系统稳定性、问题排查和性能优化至关重要。本文介绍了在 Spring 微服务中实现高效日志记录与监控的最佳实践,涵盖日志级别选择、结构化日志、集中记录、服务ID跟踪、上下文信息添加、日志轮转,以及使用 Spring Boot Actuator、Micrometer、Prometheus、Grafana、ELK 堆栈等工具进行监控与可视化。通过这些方法,可提升系统的可观测性与运维效率。
    780 1
    日志收集和Spring 微服务监控的最佳实践
    |
    10月前
    |
    Java 应用服务中间件 开发者
    Spring Boot 技术详解与应用实践
    本文档旨在全面介绍 Spring Boot 这一广泛应用于现代企业级应用开发的框架。内容将涵盖 Spring Boot 的核心概念、核心特性、项目自动生成与结构解析、基础功能实现(如 RESTful API、数据访问)、配置管理以及最终的构建与部署。通过本文档,读者将能够理解 Spring Boot 如何简化 Spring 应用的初始搭建和开发过程,并掌握其基本使用方法。
    695 2
    |
    10月前
    |
    人工智能 监控 安全
    如何快速上手【Spring AOP】?核心应用实战(上篇)
    哈喽大家好吖~欢迎来到Spring AOP系列教程的上篇 - 应用篇。在本篇,我们将专注于Spring AOP的实际应用,通过具体的代码示例和场景分析,帮助大家掌握AOP的使用方法和技巧。而在后续的下篇中,我们将深入探讨Spring AOP的实现原理和底层机制。 AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的核心特性之一,它能够帮助我们解决横切关注点(如日志记录、性能统计、安全控制、事务管理等)的问题,提高代码的模块化程度和复用性。
    |
    10月前
    |
    安全 算法 Java
    在Spring Boot中应用Jasypt以加密配置信息。
    通过以上步骤,可以在Spring Boot应用中有效地利用Jasypt对配置信息进行加密,这样即使配置文件被泄露,其中的敏感信息也不会直接暴露给攻击者。这是一种在不牺牲操作复杂度的情况下提升应用安全性的简便方法。
    1502 10
    |
    11月前
    |
    Java Linux 网络安全
    Linux云端服务器上部署Spring Boot应用的教程。
    此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
    997 13
    |
    11月前
    |
    NoSQL Java Redis
    Redis基本数据类型及Spring Data Redis应用
    Redis 是开源高性能键值对数据库,支持 String、Hash、List、Set、Sorted Set 等数据结构,适用于缓存、消息队列、排行榜等场景。具备高性能、原子操作及丰富功能,是分布式系统核心组件。
    785 2
    |
    11月前
    |
    安全 Java Nacos
    0代码改动实现Spring应用数据库帐密自动轮转
    Nacos作为国内被广泛使用的配置中心,已经成为应用侧的基础设施产品,近年来安全问题被更多关注,这是中国国内软件行业逐渐迈向成熟的标志,也是必经之路,Nacos提供配置加密存储-运行时轮转的核心安全能力,将在应用安全领域承担更多职责。

    热门文章

    最新文章