Prometheus Java SpringBoot接入

接入方式对比

对比维度
Micrometer
simpleclient_hotspot
直接使用 Prometheus Java Client
易用性
高。Spring Boot 自动配置,添加依赖和简单配置即可完成基本指标收集和暴露,无需大量代码编写
低。需手动初始化和配置,代码量较多
低。需手动管理指标的创建、收集和暴露,代码编写和维护工作量大
集成度
高。与 Spring Boot Actuator 深度集成,能自动收集 Spring Boot 应用内置指标,也方便与其他 Spring 生态组件集成
低。主要专注 JVM 指标收集,与 Spring Boot 或其他框架集成度有限
低。与框架无关,缺乏与 Spring Boot 等框架的集成特性,需手动实现交互
灵活性
中。提供统一 API 创建自定义指标,支持切换监控系统,但特定场景下受抽象层限制
中。在 JVM 指标收集方面灵活性高,可精确控制 JVM 指标收集,但非 JVM 指标扩展性差
高。可完全自定义指标的创建、收集和暴露逻辑,适用于复杂场景和特殊指标需求
指标范围
广。涵盖应用层面和 JVM 层面多种指标,如 HTTP 请求、数据库操作、内存使用、线程池等
窄。主要聚焦 JVM 相关指标,如垃圾回收、堆内存使用、线程状态等
全。指标范围完全由开发者控制,可收集从应用业务指标到系统级指标的任何类型指标
适用场景
1. Spring Boot 应用快速接入 Prometheus 并获取全面指标<br>2. 需要在不同监控系统间切换的场景
1. 仅关注 JVM 层面指标,监控 JVM 性能和垃圾回收情况<br>2. 对 JVM 指标收集有特殊要求,需精确控制收集逻辑的场景
1. 非 Spring Boot 应用或需要高度自定义指标的场景<br>2. 有复杂业务指标收集需求,Micrometer 无法满足的场景

Micrometer获取指标

  1. 接入方式
  1. 全局响应返回过滤
  1. 请求地址:http://localhost:8080/actuator/prometheus
  1. 线程相关
      • executor_active_threads:执行器活动线程数,显示了applicationTaskExecutorcamundaTaskExecutor的活跃线程情况,均为0。
      • jvm_threads_live_threads:当前活动线程数,包括守护线程和非守护线程,为38.0。
      • jvm_threads_peak_threads:自JVM启动或峰值重置以来的峰值活动线程数,为44.0。
      • jvm_threads_daemon_threads:当前活动的守护线程数,为33.0。
      • jvm_threads_states_threads:当前处于不同状态(等待、终止、运行、新建、计时等待、阻塞)的线程数。
      • jvm_threads_started_threads_total:JVM中启动的应用程序线程总数,为64.0。
      • executor_pool_max_threads:执行器线程池的最大线程数。
      • executor_pool_core_threads:执行器线程池的核心线程数。
      • executor_pool_size_threads:执行器线程池中当前的线程数。
  1. 内存相关
      • jvm_memory_used_bytes:堆内存和非堆内存中不同区域(G1 Eden Space、G1 Old Gen、Metaspace等)的已使用内存量。
      • jvm_memory_committed_bytes:JVM已提交的用于内存管理的内存量。
      • jvm_memory_max_bytes:可用于内存管理的最大内存量。
      • jvm_gc_memory_promoted_bytes_total:老年代内存池GC前后大小的正增量计数。
      • jvm_gc_memory_allocated_bytes_total:年轻代堆内存池一次GC后到下一次GC前大小的增加量。
      • jvm_gc_overhead:GC活动在最近观察期或自监控开始以来使用的CPU时间百分比近似值。
      • jvm_gc_live_data_size_bytes:回收后长期存活的堆内存池大小。
      • jvm_gc_max_data_size_bytes:长期存活的堆内存池的最大大小。
      • jvm_memory_usage_after_gc:上次GC事件后长期存活堆池的使用百分比。
      • jvm_buffer_total_capacity_bytes:缓冲池的总容量估计值。
      • jvm_buffer_memory_used_bytes:JVM用于缓冲池的内存估计值。
      • jvm_buffer_count_buffers:缓冲池中的缓冲区数量估计值。
  1. 磁盘相关
      • disk_free_bytes:指定路径下的可用磁盘空间。
      • disk_total_bytes:指定路径下的磁盘总空间。
  1. 数据库连接相关
      • hikaricp_connections_active:Hikari连接池中的活动连接数。
      • hikaricp_connections_pending:Hikari连接池中的挂起线程数。
      • hikaricp_connections_max:Hikari连接池的最大连接数。
      • hikaricp_connections:Hikari连接池的总连接数。
      • hikaricp_connections_timeout_total:Hikari连接池的连接超时总数。
      • hikaricp_connections_idle:Hikari连接池中的空闲连接数。
      • hikaricp_connections_creation_seconds_max:Hikari连接池的连接创建时间最大值。
      • hikaricp_connections_acquire_seconds_max:Hikari连接池的连接获取时间最大值。
      • hikaricp_connections_usage_seconds_max:Hikari连接池的连接使用时间最大值。
      • jdbc_connections_active:当前从数据源分配的活动连接数。
      • jdbc_connections_idle:已建立但空闲的连接数。
      • jdbc_connections_max:可同时分配的活动连接的最大数量。
      • jdbc_connections_min:池中最小的空闲连接数。
  1. HTTP请求相关
      • http_server_requests_active_seconds_max:HTTP服务器请求的最大活动秒数。
      • http_server_requests_active_seconds:HTTP服务器请求活动秒数的直方图数据。
      • http_server_requests_seconds:HTTP服务器请求处理时间的直方图数据。
      • http_server_requests_seconds_max:HTTP服务器请求的最大处理时间。
  1. 应用程序相关
      • application_started_time_seconds:应用程序启动所花费的时间。
      • application_ready_time_seconds:应用程序准备好处理请求所花费的时间。
      • logback_events_total:不同日志级别的日志事件总数。
  1. 系统相关
      • process_cpu_usage:Java虚拟机进程的“最近CPU使用率”。
      • process_cpu_time_ns_total:Java虚拟机进程使用的“CPU时间”。
      • process_uptime_seconds:Java虚拟机的运行时间。
      • process_files_open_files:打开的文件描述符数量。
      • process_files_max_files:最大文件描述符数量。
      • system_cpu_count:Java虚拟机可用的处理器数量。
      • system_load_average_1m:系统在1分钟内的平均负载。
      • system_cpu_usage:应用程序运行所在系统的“最近CPU使用率”。
  1. 其他
      • jvm_classes_loaded_classes:当前在Java虚拟机中加载的类的数量。
      • jvm_classes_unloaded_classes_total:自Java虚拟机启动执行以来卸载的类的总数。
      • jvm_info:JVM的版本信息。
      • jvm_compilation_time_ms_total:编译所花费的近似累计时间。
      • tomcat_sessions_expired_sessions_total:Tomcat会话过期的会话总数。
      • tomcat_sessions_active_max_sessions:Tomcat会话的最大活动会话数。
      • tomcat_sessions_created_sessions_total:Tomcat会话创建的会话总数。
      • tomcat_sessions_alive_max_seconds:Tomcat会话的最大存活秒数。
      • tomcat_sessions_active_current_sessions:Tomcat会话当前的活动会话数。
      • tomcat_sessions_rejected_sessions_total:Tomcat会话被拒绝的会话总数。
      • lettuce_command_firstresponse_seconds:Lettuce命令首次响应时间的摘要数据。
      • lettuce_command_firstresponse_seconds_max:Lettuce命令首次响应时间的最大值。
      • lettuce_command_completion_seconds:Lettuce命令完成时间的摘要数据。
      • lettuce_command_completion_seconds_max:Lettuce命令完成时间的最大值。
Loading...
文章列表
王小扬博客
云原生
Git
Elasticsearch
Apollo
产品
Think
生活技巧
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP
AI