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获取指标
- 接入方式‣
- 全局响应返回过滤
- 线程相关
executor_active_threads
:执行器活动线程数,显示了applicationTaskExecutor
和camundaTaskExecutor
的活跃线程情况,均为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
:执行器线程池中当前的线程数。
- 内存相关
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
:缓冲池中的缓冲区数量估计值。
- 磁盘相关
disk_free_bytes
:指定路径下的可用磁盘空间。disk_total_bytes
:指定路径下的磁盘总空间。
- 数据库连接相关
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
:池中最小的空闲连接数。
- 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服务器请求的最大处理时间。
- 应用程序相关
application_started_time_seconds
:应用程序启动所花费的时间。application_ready_time_seconds
:应用程序准备好处理请求所花费的时间。logback_events_total
:不同日志级别的日志事件总数。
- 系统相关
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使用率”。
- 其他
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...