ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Vector 0.27 增强型指标标签:metric_tag_values 的 single 与 full 模式如何配置

2026/9/14 6:32:33 拓冰建站 浏览量
Vector 0.27 增强型指标标签:metric_tag_values 的 single 与 full 模式如何配置 Vector 0.27 增强型指标标签metric_tag_values 的 single 与 full 模式如何配置【免费下载链接】vectorA high-performance observability data pipeline.项目地址: https://gitcode.com/GitHub_Trending/vect/vector如果你的 Vector 管道在 0.27.0 之后出现带多值标签或裸标签只有 key 没有 value的指标脚本和 sink 编码看到的标签形态可能不符合预期。0.27.0 引入了增强型指标标签数据模型并新增了metric_tag_values配置项用来控制lua、remap这两个脚本组件以及 sink 的 codec 如何暴露标签值。本文基于仓库中的发布说明与配置参考说明single与full两种模式分别在哪里配置、如何判断当前模式是否生效。适用版本Vector 0.27.0 及以上。该特性是 0.27.0 的主要增强项见发布亮点 2022-12-22-enhanced-metric-tags.md。先弄清楚0.27 的标签模型改了什么旧模型中一个指标的标签是字符串 key 到单个字符串 value的简单映射。0.27.0 之后同一个 key 的标签值可以是一个值的集合每个元素可以是字符串也可以是null——null表示一个bare标签即没有值的标签区别于空字符串值。发布说明中明确了三条对配置有直接影响的规则新的标签集合只存唯一值重复标签没有意义每个标签 name/value 组合只会出现一次为兼容旧版本该值集合同时记录每个标签最后被看到或分配的值大多数组件尤其是 sink只能对每个标签使用单个值它们使用的就是这个最后值正因为组件侧默认取最后值才需要metric_tag_values来额外控制脚本与 codec 看到的形态。在 remap 或 lua 转换中配置 single / fullmetric_tag_values是lua与remap转换组件上的一个可选项默认值为singlesingle标签值以单个字符串形式暴露与引入该选项之前的行为完全一致多值标签显示最后分配的值null值被忽略。如果你的脚本是 0.27 之前写的保持默认即可不需要改脚本full每个标签的所有值都以字符串或null构成的数组形式暴露。两种模式下脚本都可以给某个标签赋值一个单值也可以赋一个值的数组。下面的 remap 配置取自仓库中的示例 remap/advanced.yaml文档示例把metric_tag_values改为full即可让脚本看到完整的多值标签transforms: my_transform_id: type: remap inputs: - my-source-or-transform-id drop_on_abort: true drop_on_error: false metric_tag_values: full source: |- . parse_json!(.message) .new_field new value .status to_int!(.status) .duration parse_duration!(.duration, s) .new_name del(.old_name)其中inputs里的my-source-or-transform-id是文档示例占位符需要替换为你拓扑中实际的 source 或 transform idsource里的 VRL 程序同样按你的实际加工逻辑替换。lua转换组件上配置方式相同选项名、取值和默认值一致。single是默认值所以大多数场景下这个选项可以整行省略只有当你需要在脚本中遍历某个 key 的全部取值例如多值标签、bare 标签时才需要显式写full。发布说明中给出的脚本赋值示例如下三种写法在两种模式下都合法.tags.host localhost # Assign a single string value .tags.bare null # Create a single-valued bare tag .tags.complex [remotehost, null, otherhost] # Creates three tag values注意第三行给一个标签赋数组就会创建三个标签值。在single模式下读回该标签只会看到最后分配的值在full模式下才会看到完整数组。在 sink 的 codec 配置中设置 metric_tag_values同一个metric_tag_values选项也出现在 sink 的codecencoding配置里控制能编码指标的 codec 如何输出标签。设为full时jsoncodec标签的所有值以数组形式输出textcodec每个标签以重复实例的形式输出即同一个 tag 出现多次。使用json或text编码的 sink如果希望下游看到完整多值标签需要在对应 sink 的encoding:段中加入该选项sinks: my_sink_id: type: your_sink_type inputs: - my-transform-id encoding: format: json metric_tag_values: full这是一个可选分支仅当你的 sink 使用json/text编码且需要保留多值标签时才需要配置type和inputs按你的实际拓扑填写。一个明确的边界该选项不适用于native和native_jsoncodec这两个 codec 始终暴露全部标签值以便把值无缝传输到其他 Vector 实例无需也无法通过metric_tag_values控制。如何判断当前配置是否生效仓库文档没有给出专门的验证命令但可以按发布说明描述的行为核对观察结果在脚本中读取某个标签值若拿到的是字符串多值标签取最后值null被忽略说明当前是single若拿到的是数组说明full已生效查看 sink 的编码输出json编码下多值标签应呈现为数组text编码下同一标签应出现重复实例若仍是单值检查 sink 的encoding段是否漏配metric_tag_values: full使用native/native_jsoncodec 时无论配置如何输出都应包含全部标签值——这不是配置错误。另外记住兼容性规则只消费单值的组件典型是大多数 sink始终使用最后看到或分配的值。这意味着即便上游产生了多值标签单值消费端拿到的也是最后一个值这是设计行为而不是丢数据。边界说明0.27.0 发布亮点中定义的取值只有single与full两个。仓库中较新的 remap 配置参考 还列出了auto取值单值标签以字符串、多值标签以数组暴露而 lua 配置参考 目前只有single/full。如果你运行的是 0.27.x按single/full配置即可auto属于后续版本引入的内容两处参考文档的取值范围不一致建议以你所运行版本的实际配置校验结果为准。metric_to_log转换同样带有metric_tag_values选项见 metric_to_log/advanced.yaml如果你需要在标签转日志时保留多值配置思路与本文一致。0.27.0 的完整发布说明与升级注意事项见 0.27.0 升级指南其中也提到了通过可选地把标签值编码为数组来承载多值标签的机制。【免费下载链接】vectorA high-performance observability data pipeline.项目地址: https://gitcode.com/GitHub_Trending/vect/vector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考