miller
发布于

可观测性

可观测性中使用的主要数据类是指标、日志、链路。它们通常被称为“可观测性的三大支柱”。

指标(Metric):指标是连续时间下的系统的值的记录,基础指标通常用于描述两种数据类型,一种是计数(Count),一种是计量(Gauge)。
日志(Log):系统 / 应用输出的时间相关的记录,通常由系统 / 软件开发人员输出,方便定位系统的错误和状态。
链路(Tracing):基于有向无环图构建的软件各个模块直接地调用关系。
三大支柱至关重要,开发者正是通过这三个维度的数据来判定应用系统的状况。和传统监控相比,可观测体系拥有诸多优势。


目前最为流行的 metrics 库是来自 Coda Hale 的 dropwizard/metrics。这是java的。 golang也有基于此山寨的go-metrics

Gauges 最简单的度量指标,只有一个简单的返回值,例如,我们想衡量一个待处理队列中任务的个数
Counter 就是计数器,Counter 只是用 Gauge 封装了 AtomicLong
Meter 度量一系列事件发生的速率(rate),例如TPS。Meters会统计最近1分钟,5分钟,15分钟,还有全部时间的速率。
Histograms 统计数据的分布情况。比如最小值,最大值,中间值,还有中位数,75百分位, 90百分位, 95百分位, 98百分位, 99百分位, 和 99.9百分位的值(percentiles)。 Histogram计算分位数的方法是先对整个数据集进行排序,然后取排序后的数据集中特定位置的值(比如p99就是取倒序1%位置的值)。这种方式适合于小数据集或者批处理系统,不适用于要求高吞吐量、低延时的服务。

对于数据量较大,系统对吞吐量、时延要求较大的场景,我们可以采用抽样的方式获取数据。通过动态地抽取程序运行过程中的能够代表系统真实运行情况的一小部分数据来实现对整个系统运行指标的近似度量,这种方法叫做蓄水池算法(reservoir sampling)。

Timer 其实是 Histogram 和 Meter 的结合, histogram 某部分代码/调用的耗时, meter统计TPS。

java : https://www.cnblogs.com/mindforward/p/15792132.html

golang: https://tonybai.com/2021/07/06/add-metrics-for-go-application-using-go-metrics/

浏览 (531)
点赞
收藏
评论