类型
Counter(计数器)
Counter 类型代表一种样本数据单调递增的指标,即只增不减,除非监控系统发生了重置。例如,你可以使用 counter 类型的指标来表示服务的请求数、已完成的任务数、错误发生的次数等。 Counter 类型数据可以让用户方便的了解事件产生的速率的变化,在 PromQL 内置的相关操作函数可以提供相应的分析,比如以 HTTP 应用请求量来进行说明:
//通过rate()函数获取HTTP请求量的增长率
rate(http_requests_total[5m])
//查询当前系统中,访问量前10的HTTP地址
topk(10, http_requests_total)
不要将 counter 类型应用于样本数据非单调递增的指标
Gauge(仪表盘)
Gauge 类型代表一种样本数据可以任意变化的指标,即可增可减。Gauge 通常用于像温度或者内存使用率这种指标数据,也可以表示能随时增加或减少的“总数”,例如:当前并发请求的数量。 对于 Gauge 类型的监控指标,通过 PromQL 内置函数 delta() 可以获取样本在一段时间内的变化情况。
# 计算 CPU 温度在两小时内的差异
delta(cpu_temp_celsius{host="zeus"}[2h])
# 基于 2 小时的样本数据,来预测主机可用磁盘空间在 4 个小时之后的剩余情况
predict_linear(node_filesystem_free{job="node"}[2h], 4 * 3600) < 0
Histogram(直方图)
Histogram 在一段时间范围内对数据进行采样(通常是请求持续时间或响应大小等),并将其计入可配置的存储桶(bucket)中,后续可通过指定区间筛选样本,也可以统计样本总数,最后一般将数据展示为直方图。
histogram_quantile(0.9, rate(employee_age_bucket_bucket[10m]))
Summary(摘要)
与 Histogram 类型类似,用于表示一段时间内的数据采样结果(通常是请求持续时间或响应大小等),但它直接存储了分位数(通过客户端计算,然后展示出来),而不是通过区间来计算。
各类型下的指标定义
指标命名定义: io.micrometer.prometheus.PrometheusNamingConvention#name
COUNTER 指标
| name |def name| 类型| 帮助说明| 单位| | -|-|-|-| |tomcat_sessions_rejected_sessions_total|tomcat.sessions.rejected| COUNTER| null| sessions| |tomcat_sessions_created_sessions_total|tomcat.sessions.created| COUNTER| null| sessions| |jvm_gc_memory_promoted_bytes_total|jvm.gc.memory.promoted| COUNTER| GC之前到GC之后,老年代的大小正向增加的计数| bytes| |tomcat_global_error_total|tomcat.global.error| COUNTER| null| null| |jvm_gc_memory_allocated_bytes_total|jvm.gc.memory.allocated| COUNTER| 在一个GC之后到下一个GC之前增加年轻代内存池的大小| bytes| |tomcat_global_sent_bytes_total|tomcat.global.sent| COUNTER| null| bytes| |tomcat_cache_hit_total|tomcat.cache.hit| COUNTER| null| null| |tomcat_sessions_expired_sessions_total|tomcat.sessions.expired| COUNTER| null| sessions| |tomcat_cache_access_total|tomcat.cache.access| COUNTER| null| null| |jvm_classes_unloaded_classes_total|jvm.classes.unloaded| COUNTER|自Java虚拟机开始执行以来已卸载的类总数| classes| |tomcat_global_received_bytes_total|tomcat.global.received| COUNTER| null| bytes| |tomcat_servlet_error_total|tomcat.servlet.error| COUNTER| null| null|
TIMER 指标
| name | def name | 类型 | 帮助说明 | 单位 |
|---|---|---|---|---|
| tomcat_global_request_seconds | tomcat.global.request | TIMER | null | seconds |
| tomcat_servlet_request_seconds | tomcat.servlet.request | TIMER | null | seconds |
| jvm_gc_pause_seconds | jvm.gc.pause | TIMER | Time spent in GC pause | seconds |
GAUGE 指标
| name | def name | 类型 | 帮助说明 | 单位 |
|---|---|---|---|---|
| tomcat_threads_current_threads | tomcat.threads.current | GAUGE | null | threads |
| system_cpu_count | system.cpu.count | GAUGE | Java虚拟机可用的处理器数量 | null |
| process_uptime_seconds | process.uptime | GAUGE | Java虚拟机的正常运行时间 | seconds |
| jvm_threads_states_threads | jvm.threads.states | GAUGE | 当前处于NEW状态的线程数 | threads |
| jvm_memory_committed_bytes | jvm.memory.committed | GAUGE | 可供Java虚拟机使用的已提交的内存量 | bytes |
| tomcat_global_request_max_seconds | tomcat.global.request.max | GAUGE | null | seconds |
| tomcat_servlet_request_max_seconds | tomcat.servlet.request.max | GAUGE | null | seconds |
| system_cpu_usage | system.cpu.usage | GAUGE | 最近的cpu利用率 | null |
| jvm_threads_peak_threads | jvm.threads.peak | GAUGE | 自Java虚拟机启动或重置峰值以来的活动线程峰值 | threads |
| jvm_memory_used_bytes | jvm.memory.used | GAUGE | 已用内存量 | bytes |
| jvm_threads_daemon_threads | jvm.threads.daemon | GAUGE | 当前活动的守护程序线程数 | threads |
| tomcat_sessions_alive_max_seconds | tomcat.sessions.alive.max | GAUGE | null | seconds |
| process_cpu_usage | process.cpu.usage | GAUGE | JVM的CPU利用率 | null |
| process_start_time_seconds | process.start.time | GAUGE | 进程的开始时间 | seconds |
| jvm_classes_loaded_classes | jvm.classes.loaded | GAUGE | 当前加载的类数 | classes |
| jvm_memory_max_bytes | jvm.memory.max | GAUGE | 最大内存量 | bytes |
| tomcat_sessions_active_current_sessions | tomcat.sessions.active.current | GAUGE | null | sessions |
| jvm_gc_max_data_size_bytes | jvm.gc.max.data.size | GAUGE | 老年代的最大内存量 | bytes |
| jvm_gc_live_data_size_bytes | jvm.gc.live.data.size | GAUGE | full GC老年代的大小 | bytes |
| jvm_buffer_total_capacity_bytes | jvm.buffer.total.capacity | GAUGE | 缓冲区总容量 | bytes |
| jvm_threads_live_threads | jvm.threads.live | GAUGE | 当前活动线程数,包括守护程序线程和非守护程序线程 | threads |
| jvm_buffer_memory_used_bytes | jvm.buffer.memory.used | GAUGE | 已使用缓冲池大小 | bytes |
| tomcat_threads_busy_threads | tomcat.threads.busy | GAUGE | null | threads |
| tomcat_threads_config_max_threads | tomcat.threads.config.max | GAUGE | null | threads |
| jvm_buffer_count_buffers | jvm.buffer.count | GAUGE | 缓冲区数量 | buffers |
| tomcat_sessions_active_max_sessions | tomcat.sessions.active.max | GAUGE | null | sessions |
度量值来源
| name | 来源 |
|---|---|
| process.files.open | OperatingSystemMXBean.getOpenFileDescriptorCount |
| process.files.max | OperatingSystemMXBean.getMaxFileDescriptorCount |
| system.cpu.count | Runtime::availableProcessors |
| system.load.average.1m | OperatingSystemMXBean::getSystemLoadAverage |
| process.start.time | RuntimeMXBean::getStartTime |
| process.uptime | RuntimeMXBean::getUptime |
| jvm.classes.loaded | ClassLoadingMXBean::getLoadedClassCount |
| jvm.classes.unloaded | ClassLoadingMXBean::getUnloadedClassCount |
| jvm.gc.max.data.size | GarbageCollectionNotificationInfo... |
| jvm.buffer.memory.used | BufferPoolMXBean::getMemoryUsed |
| jvm.buffer.total.capacity | BufferPoolMXBean::getTotalCapacity |
| jvm.memory.used | MemoryPoolMXBean.getUsage().getUsed() |
| jvm.memory.committed | MemoryPoolMXBean.getUsage().getCommitted() |
| jvm.memory.max | MemoryPoolMXBean.getUsage().getMax() |
| jvm.buffer.count | BufferPoolMXBean::getCount |
| jvm.threads.live | ThreadMXBean::getThreadCount |
| jvm.threads.peak | ThreadMXBean::getPeakThreadCount |
| tomcat.threads.busy | MBeanServer.currentThreadsBusy |
| tomcat.threads.current | MBeanServer.currentThreadCount |
| tomcat.threads.config.max | MBeanServer.maxThreads |
| tomcat.cache.access | MBeanServer.accessCount |
| tomcat.cache.hit | MBeanServer.hitCount |
| tomcat.servlet.error | MBeanServer.errorCount |
| tomcat.servlet.request | MBeanServer.requestCount |
| tomcat.servlet.request.max | MBeanServer.maxTime |
| tomcat.global.sent | MBeanServer.bytesSent |
| tomcat.global.sent | MBeanServer.bytesSent |
| tomcat.global.received | MBeanServer.bytesReceived |
| tomcat.global.error | MBeanServer.errorCount |
| tomcat.global.request | MBeanServer.requestCount |
| tomcat.global.request.max | MBeanServer.maxTime |
常用监控指标
#1. 服务的tomcat每小时报错量
sort_desc(sum(delta(tomcat_global_error_total[1h])) by(application))
















