求可存储元数据的开源OpenTelemetry原生指标存储后端
以下是几个能完整存储OTel指标元数据(包括指标类型、计量单位)的开源方案,同时支持和Grafana集成实现可视化自动适配:
TimescaleDB(带OTel官方集成)
作为PostgreSQL的时序扩展,TimescaleDB的官方OTel集成方案支持完整解析OTLP协议中的元数据字段,将metric_type(counter/gauge等)、unit等信息与时间序列数据关联存储。在Grafana中使用TimescaleDB数据源时,可直接查询这些元数据,实现可视化面板自动填充Y轴单位,并且根据指标类型自动推荐合适的聚合函数(比如对counter类型自动应用rate计算)。自定义OTel Collector + PostgreSQL
通过OTel Collector的自定义接收器或postgresqlexporter,可以将指标数据和元数据分别存储到PostgreSQL的不同表中(比如一个表存时序数据,一个表存元数据映射)。自行实现元数据查询接口后,Grafana可通过PostgreSQL数据源读取元数据,结合变量功能实现查询构建的自动补全,以及可视化时的单位自动显示。VictoriaMetrics(OTel增强配置)
VictoriaMetrics的vmagent原生支持OTLP数据 ingestion,通过配置可以将OTel指标的unit和metric_type作为附加标签存储,或者单独存入元数据索引。在Grafana中使用VictoriaMetrics数据源时,可通过查询元数据标签来获取单位信息,动态设置面板的显示参数,同时根据指标类型自动调整查询逻辑。Cortex社区分支(OTel完整数据模型支持)
部分Cortex社区维护的分支已经扩展了对OTel完整数据模型的支持,不再局限于Prometheus数据模型的限制,能够存储unit、metric_type等元数据。通过OTLP写入后,可通过兼容PromQL的接口查询指标,同时单独提供元数据查询端点,Grafana可通过该端点获取元数据来简化查询构建和可视化配置。
可视化工具补充建议
除了Grafana,也可以考虑使用OTel官方Web UI,但Grafana通过自定义变量配置或轻量脚本面板,依然是最灵活的选择——比如可以编写简单逻辑自动从存储后端拉取元数据,快速设置面板的单位和聚合方式。
内容的提问来源于stack exchange,提问作者Matthijs Kooijman

