解密可观测行业中的语义规范 — 代码世界中的“语言艺术”
可观测行业中的语义规范
语义规范可以说在我们生活中无处不在,它为某种语言或文化中的单词和短语提供了一致的意义,以促进更清晰的交流。
而在计算机世界中,语义规范也同样甚至更加关键,因为屏幕上的文本缺乏更丰富的对话环境——没有语调或肢体语言可以解读,这使得误解更容易发生,也让接手他人代码变得具有挑战性。
在可观测领域,语义规范同样重要,它可以确保一致性和清晰度。
定义和示例
在可观测领域,语义规范指的是遥测数据及其属性的命名标准。它们定义了用户在监控常见软件或库时应该如何命名其可观测数据。
例如,在典型的使用数据库驱动的应用中,语义规范定义了标准名称和值的枚举,如:
-
db.system
:数据库类型(例如,mysql
或postgresql
) -
db.operation.name
:数据库操作(例如,SELECT
)
这些标准化名称可以用于各种可观测数据类型:
-
指标(Metrics):作为指标名称或标签名称和值
-
日志/事件(Logs/Events):作为字段名称和值
-
跟踪(Traces):作为事件字段或属性字段名称和值
行业标准
行业中几种广泛采用的语义规范包括:
-
Elastic Common Schema
-
OpenTelemetry Semantic Conventions
-
Datadog Conventions
概念架构:V-Model
为了说明各种可观测概念之间的关系,我们可以使用 V 模型架构。
如下图,V 字母的左半边代表数据采集链路,右半边代表数据应用链路。数据从左上方经过采集、传输,进入存储,再由存储经过查询语言、API 最终应用在监控产品上,如大盘、告警等系统。
(图 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/