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信息 | 该信息和指标名称将直接上报给存储端,并在上层使用时做指标描述展示。 |
中文描述 |
用于内部理解和维护该指标。 |
公共属性
(可选)指标实现时按照该逻辑实现。
所有的指标都会自动注入这些公共的Label
,方便在多节点部署的进程或者分布式服务中做区分。
Label名称 | Label描述 | Label示例 |
---|---|---|
| 服务所在的主机节点名称。 | 本机 |
| 进程在当前系统上的的绝对路径。 |
|
文档列表
Children Display | ||||
---|---|---|---|---|
|
HTTP Server🔥
监控HTTP Server的相关指标。
指标名称
指标单位
指标类型
Help信息
指标中文描述
采集逻辑
GRPC Server🔥
监控Grpc Server的相关指标。
数据库ORM🔥
监控数据库服务的相关指标。
数据库Redis
监控Redis服务的相关指标。
配置管理
监控gcfg以及Adapter实现的相关指标。
缓存控制
监控gcache以及Adapter实现的相关指标。
命令管理
监控gcmd命令执行的指标。
日志管理
监控glog日志组件的指标。
定时任务
分为两块。
gtimer
gcron
协程池
监控grpool协程池指标。
Golang
Golang的基础指标,需要依赖比较重的第三方组件,例如prometheus SDK,所以这块通过社区组件实现。
参考链接
- 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 | ||||
---|---|---|---|---|
| ||||
|