Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
背景介绍
目前Opentelemtry
的Metrics
标准以及go
实现已经稳定,可以对接到框架中,以便框架组件对外暴露组件指标。
指标梳理
字段说明:注意事项
- 指标、属性命名使用
OpenTelemetry
规范。 - 在
OpenTelemetry
里面的Attribute
,在Prometheus
里面叫做Label
。 - 由于
OpenTelemetry Metrics
里面的数据类型较多且复杂,框架参考Prometheus
的数据类型做了封装,简化使用。底层依旧使用OpenTelemery
规范。 - 指标值底层存储统一使用的是
float64
数据格式,因此在指标设计时指标值请尽量避免使用小数,以免出现精度问题。
字段说明
字段名称 | 字段说明 |
---|---|
指标名称 |
该名称将直接上报给存储端。默认使用 | |
指标类型 | 参考
|
指标单位 | 用于定义该指标的单位,例如 |
指标类型
我们只用3
种类型:Counter
、Gauge
、Histogram
。Prometheus
或Opentelemetry
中的其他数据类型在没有痛点的前提下我们暂不做考虑。
Counter
: (常用)只增不减的数值指标。例如请求数、错误数等。Gauge
:(常用)可增可减的数值指标。例如:CPU
、Memory
等。Histogram
: 直方图,用于按照buckets
对统计数据在采集时做分类采集。例如:按照请求耗时对请求数量进行分段。https://prometheus.io/docs/practices/histograms/
Help信息
该信息和指标名称将直接上报给存储端,并在上层使用时做指标描述展示。
指标中文描述
(可选)用于内部理解和维护该指标。
采集逻辑
(可选)指标实现时按照该逻辑实现。
ghttp.Server
指标名称
指标单位
指标类型
Help信息
指标中文描述
Help信息 | 该信息和指标名称将直接上报给存储端,并在上层使用时做指标描述展示。 |
中文描述 | 用于内部理解和维护该指标。 |
公共属性
所有的指标都会自动注入这些公共的Label
,方便在多节点部署的进程或者分布式服务中做区分。
Label名称 | Label描述 | Label示例 |
---|---|---|
| 服务所在的主机节点名称。 | 本机 |
| 进程在当前系统上的的绝对路径。 |
|
文档列表
Children Display | ||||
---|---|---|---|---|
|
参考链接
- https://opentelemetry.io/docs/specs/otel/metrics/data-model/
- https://github.com/open-telemetry/opentelemetry-go/tree/main/metric
- https://github.com/hertz-contrib/obs-opentelemetry/blob/main/README_CN.md
- https://www.cloudwego.io/zh/docs/hertz/tutorials/observability/open-telemetry/
Panel | ||||
---|---|---|---|---|
| ||||
|