T 型信号
Semantic Conventions 采用 T 型思维处理可观测性。这会将信号分为“T”形的两种类型。
block-beta
columns 3
Broad["Broadly Applicable Signals"]:3
columns 3
space:1
Deep("Rich,\nDeep\nSignals")
space:1这符合 80/20 法则,即 80% 的用户(或用例)可以利用广泛适用的信号,而 20% 的用户(或用例)则会深入研究某个问题,使用深入的信号。
广泛适用的信号
这些约定旨在为某个域提供基础的可观测性体验。例如,HTTP 语义约定允许对 HTTP(微)服务进行通用仪表板、警报和诊断。这些信号应为可观测性提供“水平”覆盖。
例如
- 黄金信号/RED 指标(饱和度、速率、错误、持续时间)
- 高级跨度
- 错误日志、崩溃报告
- 请求/响应日志
丰富、深入的信号
这些约定旨在深入了解特定系统、库、模块、应用程序或服务。它们用于诊断该系统特有的问题。
例如
- Linux slab 内存使用情况
- 特定数据库信号,例如 MySQL 索引使用情况
- 特定语言的垃圾回收指标(JVM、Go、.NET 等)
建议
定义语义约定需要在生成广泛适用的信号与确保特定技术的丰富可观测性之间取得平衡。建议首先针对特定域,从广泛的用例和信号入手。在为该域提供一套基础信号后,再探索可能特定于供应商或实现的更深入的集成。
例如,请参阅数据库语义约定,其中提供了关于与数据库通信的跨度的通用指南,此外还提供了作为通用扩展的特定数据库指南。