调度流水线在数据落库之后作为周期任务处理。若想在 intake 热路径上即时转换事件,请改为在 intake
步骤挂一个函数。
调度流水线
在图形编排器里搭建
打开 流水线 → 新建,在画布上排布 来源 → 转换 → 目标。节点可拖动,可在端点之间连线,编排器会随 时校验图(缺来源/目标、转换缺名称或脚本、流名重复、来源与目标同名等)。第一个来源和第一个数据流目标会 保存为流水线的source_stream 与 target_stream。
转换
每个转换是一段 VRL 脚本。转换检视面板的「复用」下拉里,可选用 内置预设或任意已保存的函数——选中即把脚本灌入该步骤,之后 可内联编辑。 内置预设随每个实例提供,且只读:扩展表
扩展表是一张 key → 记录的查找表,可在转换里 join。打开扩展表,新建表并添加行(一个 key 加若干 命名字段),再在 VRL 里查找:目标与 connector egress
目标可以是目标数据流(默认——事件经标准 intake 写入并可被查询),也可以是外部 connector:
在流水线 → Connectors添加 connector,再在图形编排器里选择该 connector 作为目标。一条流水线可在同一次运行里既写
数据流又向 connector egress。
把源数据流从查询中隐藏
将一个兜底源数据流扇出成每服务(或每租户)目标流时——例如用上面的route-by-service preset——源数据流
会继续堆积未分流的原始事件。要让查询和仪表盘只对准分流后的目标流,把源数据流标记为不可查询:打开
数据流 → 源数据流 → 设置,关闭 可查询。
不可查询的数据流照常采集并保留数据(也照常为本流水线供数),但会从查询选择器中隐藏,且 SQL 与 PromQL
搜索都会以 stream is not queryable 拒绝。随时可以再打开开关。
调度与回看窗口
Runner 不解析标准 cron 表达式;不符合
every: 语法的计划会被跳过。
每次触发,runner 读取源的 [now - lookback_secs, now],应用转换链并写出结果。每次运行都会记录——在流
水线的 运行 标签页查看,或通过 GET /api/v1/scheduled_pipelines/{id}/runs(state、scanned_rows、
error)。
调度 runner 是单例:分布式集群下只在 alert-manager(或 standalone)节点运行,因此启用的流水线
每个间隔只触发一次,而非每节点一次。
回填(Backfill)
要按需处理历史窗口,提交一次回填:202 带 job_id 和监控 URL;回填走异步
search-job worker——读取源窗口、应用同一条
转换链、写目标流并 egress。
权限
pipelines.read:列出流水线并读取运行历史。pipelines.create:创建流水线。pipelines.edit:修改图、转换、调度或回看窗口。pipelines.pause:启用或暂停调度执行。pipelines.run:提交回填任务。pipelines.delete:删除流水线。
流水线 API
通过 HTTP API 创建、更新、列出与回填调度流水线。