遇见过那么多Dashboard,你可曾见揭过她们的面纱。
简述几类常见的监控工具关于 Metrics 的定义和使用场景。
Java Metrics
典型的工具 dropwizard.metrics 为例说明:
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>4.1.0</version>
</dependency>
Gauge
Gauge 能做的就是返回一个变量的瞬时值,在此基础上还提供了 RatioGauge \ CachedGauge \ DerivativeGauge \ JmxAttributeGauge
的使用。
Meter
Meter 用来度量事件并发的数量和速度。
Counter
Counter 度量类型是一种特殊的 Gauge 度量,因为其持有的值就是一个 AtomicLong,可以递增也可以递减。
Histgram
Histogram 度量类型用于测量一个数据流各值的统计分布。其除了能够测量最大值、最小值、平均值外,还可以测量中位数(50)、75、90、95、98、99和99.9%等。Histogram 支持四种数据采样方式 ExponentiallyDecayingReservior , UniformReservoir , SlidingTimeWindowReservior , SlidingWindowReservior
。
Timer
Timer 度量类型包含了 Meter 和 Histogram 的统计,即比率和统计信息的综合。
Reporter
使用 Reporter 可以输出测量结果,支持 ConsoleReporter , CsvReporter , Slf4Reporter , JmxReporter
等等。
参考
Prometheus
Prometheus 定义了4种指标类型(metric type):Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)、Summary(摘要)。
Counter:只增不减的计数器
Counter类型的指标其工作方式和计数器一样,只增不减(除非系统发生重置)。常见的监控指标,如 http_requests_total ,thread_started_total 都是 Counter 类型的监控指标。
Gauge:可增可减的仪表盘
Gauge 类型的指标侧重于反应系统的当前状态
Histogram:自带 buckets
区间用于统计分布统计图
主要用于在指定分布范围内(Buckets
)记录大小(如http request bytes
)或者事件发生的次数。
Summary:客户端定义的数据分布统计图
对比 Histogram 指标,Histogram可以通过 histogram_quantile()
函数计算出其值的分位数。而 Sumamry 的分位数则是直接在客户端计算完成。
参考
Grafana 展现 Metrics
常见可视化支持类型如下,数据来源以及图表依赖的结构结合上面 Metrics 有关
image.png
网友评论