Skip to content
On this page
技术
2024-7-23

解密可观测行业中的语义规范 — 代码世界中的“语言艺术”

语义约定标准化了可观测性中的命名,以确保监控数据的清晰性和一致性。它们有助于避免误解并提高工具的互操作性。本文详细解释了可观测性中的语义约定及其重要性。

可观测行业中的语义规范

语义规范可以说在我们生活中无处不在,它为某种语言或文化中的单词和短语提供了一致的意义,以促进更清晰的交流。

而在计算机世界中,语义规范也同样甚至更加关键,因为屏幕上的文本缺乏更丰富的对话环境——没有语调或肢体语言可以解读,这使得误解更容易发生,也让接手他人代码变得具有挑战性。

在可观测领域,语义规范同样重要,它可以确保一致性和清晰度。

定义和示例

在可观测领域,语义规范指的是遥测数据及其属性的命名标准。它们定义了用户在监控常见软件或库时应该如何命名其可观测数据。

例如,在典型的使用数据库驱动的应用中,语义规范定义了标准名称和值的枚举,如:

  • db.system:数据库类型(例如,mysqlpostgresql
  • db.operation.name:数据库操作(例如,SELECT

这些标准化名称可以用于各种可观测数据类型:

  • 指标(Metrics):作为指标名称或标签名称和值
  • 日志/事件(Logs/Events):作为字段名称和值
  • 跟踪(Traces):作为事件字段或属性字段名称和值

行业标准

行业中几种广泛采用的语义规范包括:

  • Elastic Common Schema
  • OpenTelemetry Semantic Conventions
  • Datadog Conventions

概念架构:V-Model

为了说明各种可观测概念之间的关系,我们可以使用 V 模型架构。

如下图,V 字母的左半边代表数据采集链路,右半边代表数据应用链路。数据从左上方经过采集、传输,进入存储,再由存储经过查询语言、API 最终应用在监控产品上,如大盘、告警等系统。

Observability V-model
(图 1:可观测概念架构 V-Model)

语义层

  • 负责收集数据并提供数据应用(分析、仪表盘、告警)
  • 理解数据及其含义
  • 示例:名为 db.connection.pool.active 的指标代表应用程序连接池中的活动连接数
  • 使构建特定领域的应用程序用于数据洞察和分析成为可能

协议层

  • 增加抽象,并负责通过网络从 API/SDK 移动数据到收集器
  • 通常不需要理解特定值的含义
  • 处理指标(计数器、直方图)、日志和跟踪概念
  • 定义查询语言和数据提取的传输 API
  • 大多数 OpenTelemetry 规范集中于这一层

存储层

  • 更简单,甚至与可观测数据本身解耦
  • 按模型(时间序列或表格)和数据类型(字符串、浮点数)查看数据
  • 可观测专用数据库可包含用于高效查询和数据检索的功能

为什么语义规范很重要

在之前,可观测行业缺乏广泛认可的语义层标准。这导致了一些问题的出现:

  • 组织或公司自行定义自己的指标名称和标签
  • 需要自行定制仪表盘和警报程序,缺乏可以共享的标准程序
  • 更容易被供应商锁定(例如,Datadog 的专有规范)

因此,提供标准语义层会提供几个好处:

  • 互操作性:在不同后端之间共享代理和应用程序
  • 一致性和生态系统:为常见中间件和基础设施构建标准观测解决方案
  • 简化采用:组织可以使用理解这些语义规范的预构建仪表盘、警报和分析工具
  • 优化数据存储和计算:在其他层中实现数据存储和计算的优化

GreptimeDB 支持语义规范

GreptimeDB 是一个适用于存储和分析各种类型可观测数据的时间序列数据库(包括指标、事件和日志等),也得益于行业中建立的明确语义规范。

例如,GreptimeDB 内置 ETL 引擎可将非结构化日志解析为标准事件。我们建议用户以 OpenTelemetry 标准规范命名字段,这样将来也可以很方便地接入标准化的仪表盘和分析工具。

未来,我们也将在云端为符合语义规范的数据提供标准化的上层应用,敬请期待!

关于 Greptime

Greptime 格睿科技专注于为可观测、物联网及车联网等领域提供实时、高效的数据存储和分析服务,帮助客户挖掘数据的深层价值。目前基于云原生的时序数据库 GreptimeDB 已经衍生出多款适合不同用户的解决方案,更多信息或 demo 展示请联系下方小助手(微信号:greptime)。

欢迎对开源感兴趣的朋友们参与贡献和讨论,从带有 good first issue 标签的 issue 开始你的开源之旅吧~期待在开源社群里遇见你!添加小助手微信即可加入“技术交流群”与志同道合的朋友们面对面交流哦~

Star us on GitHub Now: https://github.com/GreptimeTeam/greptimedb

官网:https://greptime.cn/

文档:https://docs.greptime.cn/

Twitter: https://twitter.com/Greptime

Slack: https://greptime.com/slack

LinkedIn: https://www.linkedin.com/company/greptime/

加入我们的社区

获取 Greptime 最新更新,并与其他用户讨论。