OpenObserve 与观测云:小样本验证记录

验证日期:2026-10-09。本文附件记录实际执行范围,不构成两产品端到端性能横评。

环境与范围

OpenObserve 原始二进制: 官方下载

下载包 SHA-256:eed4f77e44dcdf1cee7850b48792514642a4fafdc6faf0ef2c04cca7c66598c5。

执行及实际结果

验证 实际结果
原始 JSON 的 timestamp 不映射到 _timestamp 写入成功 6;事件窗口查询 0;接收时间窗口查询 6
timestamp 映射至 _timestamp 事件窗口查询 6
字符串 duration_ms > '900' 0 条
显式 CAST 为 DOUBLE 后比较 > 900 e-001、e-002
写入前转成数值,再比较 > 900 e-001、e-002
错误日志 count(*) / count(duration_ms) 3 / 2
超过 24 小时准入的历史样本 HTTP 200,响应 successful=0、failed=1,原因是 Too old data
人为漏 e-003、重复 e-001 两边各 6 条;唯一 ID 分别 6、5;多重集合差异能找到具体事件
观测云 Pipeline 六条样本 success=true,6 条均无 run_error、均未 dropped
WARN 大小写转换后比对 OpenObserve 写入并读回 warn;Pipeline 输出 warning
OpenObserve 侧统一 warn→warning 后 六条查询结果与 Pipeline 输出的业务字段和事件时间相同
四条 DQL,补充固定绝对时间窗口后 全部 valid=true

OpenObserve 的写入与查询实验完整执行两轮,核心八项检查均通过;第二轮增加字段逐条比较。没有把微型数据集返回的延迟写成产品性能结论。

时间对齐

第一条事件:2026-10-09T10:00:00.123456+08:00。

OpenObserve Search API 的固定窗口使用 start_time=1791511200000000、end_time=1791511500000000;DQL 示例窗口使用毫秒 [1791511200000:1791511500000]。本轮没有专门验证位于右边界恰好 10:05:00 的记录,生产分桶对账还应核对包含/排除边界。

实验中主动修正的地方

  1. DQL 未写时间窗口时,本地检查器返回 time window is required;补齐绝对窗口后通过。未把默认窗口当成对账依据。
  2. 单纯将 WARN 转为小写,会与 Pipeline 的 warning 不同;补齐级别映射后再比较。
  3. count(duration_ms) 会排除缺失耗时的错误事件,不能用它替换错误事件总数。

数据与结果文件

查询结果附件保留请求、HTTP 状态、返回记录和总数;省略内部请求追踪标识及耗时等无关信息。全部测试凭据为本地临时生成,未包含在附件中。临时 OpenObserve 进程已停止。

复核方法

在独立测试环境使用同版本及上述配置。通过 JSON API 将原始样本写入 raw_checkout;复制 timestamp 为 _timestamp 后写入 time_checkout;再转换 duration_ms 为数值、补 status 后写入 checkout。查询附件中保存了完整 SQL 和绝对时间窗口。

canonical_checkout 在 checkout 样本上进一步将 warn 映射为 warning;corrupt_checkout 故意去掉 e-003、重复 e-001。对账以 event_id 为键比较出现次数,再比较字段与事件时间。此处没有启用产品去重功能,也不把人为样本差异归因于产品故障。

在观测云 Pipeline 调试入口使用 checkout.p 与同一组原始 JSON,类别为 message、时区 Asia/Shanghai。调试输出测点名 pipeline 不代表已经建立生产 source=checkout;实际接入与 DQL 查询须另行配置并验证。

固定日期样本会随时间超过写入准入范围。复现时应在隔离环境明确调整准入范围,或将全部样本与查询窗口同步移动到近期;不要只改查询时间或只改事件时间。