
Vector 0.12 升级指南encoding.codec 强制化、check_fields 弃用与 VRL 迁移实战【免费下载链接】vectorA high-performance observability data pipeline.项目地址: https://gitcode.com/GitHub_Trending/vect/vectorVector 0.12 是一次以「破坏性变更极少、弃用项显著」为特征的版本升级sink 级别的encoding.codec从可选变为必填、check_fields条件被弃用并转向 VRLVector Remap Language布尔表达式、generatorsource 新增了format选项同时一批传统 transform 被弃用、filesource 的start_at_beginning选项被ignore_checkpoints与read_from取代。读完本文你将能够逐项对照修改现有配置完成升级并理解每项变更背后的设计动机与当前仓库中的源码实现。变更总览0.12 的升级涉及三类内容升级前建议先通读一遍以便定位自己配置中受影响的组件类别变更项影响范围Breakingsink 级encoding.codec必填aws_s3、file、humio、kafka、nats、new_relic_logs、pulsar、splunk_hec等 sinkBreakingcheck_fields条件需显式声明type使用route/filter/reduce等基于check_fields语法的路由配置Breakinggeneratorsource 要求format选项使用generatorsource 的测试配置Deprecation17 个 transform 被弃用推荐迁移到remap所有使用旧 transform 的配置文件Deprecationfilesource 的start_at_beginning被弃用文件采集相关配置下面逐项展开并在结尾给出可直接执行的升级检查清单。破坏性变更一所有相关 sink 必须显式指定encoding.codec0.12 移除了 sink 级encoding.codec选项的默认值。此前各 sink 都带有「有主见的」编码默认值如默认text或默认json用户若未显式指定实际输出格式可能出乎意料显式必填后编码行为完全由配置决定杜绝了这类隐式行为。受影响的 sink 及其旧默认值如下aws_s3原默认textfile原默认texthumio原默认jsonkafka原默认textnats原默认textnew_relic_logs原默认jsonpulsar原默认textsplunk_hec原默认text升级方式很简单在受影响 sink 中补上encoding.codec取值为你期望的格式json或text[sinks.backup] type aws_s3 inputs [...] bucket my-bucket compression gzip region us-east-1 encoding.codec json如何选择json与texttext丢弃全部结构化数据仅传递message字段的值。它面向「Vector 作为透传代理、不应改写数据」的场景json保留全部结构化数据对绝大多数使用场景都更合适也是官方推荐。仓库自带的示例配置也印证了「显式声明编码」的规范写法例如 file_to_prometheus.yaml 中 sink 段即包含独立的encoding:配置块vector.yaml 的示例配置同样在 sink 下显式给出encoding:段。升级后可对照这些示例检查自己的配置。破坏性变更二check_fields条件弃用需显式type或迁移到 VRL 表达式伴随 VRL 的发布0.12 弃用了check_fields条件语法转而推荐使用 VRL 布尔表达式。旧语法受限于 TOML 这类配置语言本身不擅长表达布尔条件用户能用来路由route、过滤filter、归约reduce数据的方式十分有限存在多处配置语法陷阱。check_fields虽然被弃用但仍受支持升级只需显式加入type选项「opt-in」该特性[transforms.route] type route lanes.errors.type check_field lanes.errors.level.eq error更推荐的做法是迁移到 VRL 语法条件从「key-path 风格的 TOML 键值对」变成一行字符串表达式[transforms.route] type route -lanes.errors.level.eq error lanes.errors .level error在 VRL 中.level error是一个直接可求值为布尔量的比较表达式route的每条 lane 只要给出这样的布尔表达式即可表达能力远超旧的check_fields键值模式如level.eq、message.contains等受限组合。一个值得注意的现状在当前仓库的src/源码中已经搜索不到check_fields相关实现——从源码结构看这一弃用语法在后续版本中已被完全移除而非停留在「弃用但仍可用」的状态。也就是说如果你的配置还停留在check_fields写法迁移到 VRL 表达式已不是「建议」而是「必须」。破坏性变更三generatorsource 要求format选项generatorsource 常用于测试与压测0.12 为其引入了format选项用于指定产生日志的格式。按原文档描述该选项为必填升级示例为[sources.generator] type generator format apache_common # or apache_error or syslog当前仓库中该 source 的实现位于 demo_logs.rs其中OutputFormat枚举定义了可产生的日志格式源码注释标明包括Apache common 格式Apache error 格式Syslog 格式分别对应 RFC 5424 与 RFC 3164以及 JSON 格式的 HTTP server 日志等扩展格式。可见当前版本支持的格式比 0.12 发布时更多若你从 0.12 直接升级至今日版本format的可选值可以对照 demo_logs.rs 中的OutputFormat枚举确认。弃用项一17 个 transform 被弃用推荐统一迁移到remap0.12 将以下 transform 整体弃用官方推荐的替代方案是新的remaptransformadd_fields、add_tags、ansi_stripperaws_cloudwatch_logs_subscription_parsercoercer、concatgrok_parser、json_parser、key_value_parser、logfmt_parsermerge、regex_parserremove_fields、remove_tags、rename_fieldssplit、tokenizer这些旧 transform 的功能在 VRL 中大多可以用一行函数调用表达。原文档给出的json_parser迁移示例transforms: remap: type: remap source: | . merge(., parse_json!(.message))即「解析.message中的 JSON 并合并回根对象」替代了整个json_parsertransform 的声明式配置。类似的字段增删改名对应 VRL 的直接赋值与删除语法解析类 transform 对应parse_grok、parse_regex、parse_key_value、parse_logfmt等 VRL 函数split/tokenizer对应字符串切分函数coercer对应 VRL 的类型强转函数。原文档同时说明这些 transform 不会立即被移除计划保留到 Vector 1.0 才删除0.12 发布时官方预计 2022 年末达到 1.0 里程碑。若配置庞大可优先迁移高频、复杂度高的 transform如json_parser、regex_parser、grok_parser收益最明显。弃用项二filesource 的start_at_beginning被ignore_checkpointsread_from取代start_at_beginning选项已被移除语义上的替代者新选项ignore_checkpoints与read_from组合表达相同的意图且粒度更细。迁移方式[sources.file] type file -start_at_beginning true ignore_checkpoints false # default read_from beginning # default上述两个新值即为默认值通常无需显式写出。当前仓库中这一迁移逻辑有明确的源码佐证file.rs 中的reconcile_position_options函数约 L694-L715会检测到旧选项并打印弃用警告Use of deprecated option start_at_beginning. Please use ignore_checkpoints and read_from options instead同时按以下规则推导新选项的取值start_at_beginning true时ignore_checkpoints回退为true、read_from回退为Beginning未设置或为false时两者分别回退为false与默认读取位置直接设置的新选项优先于由旧选项推导出的值。从源码结构看旧选项在当前版本中依然被解析保持向后兼容但会触发告警并逐步退场建议尽早替换为ignore_checkpoints与read_from的显式配置。升级检查清单完成 0.12 升级可按以下清单逐项核对全部通过后再重启 VectorSink 编码检查所有 sink重点是aws_s3、file、humio、kafka、nats、new_relic_logs、pulsar、splunk_hec确认均已显式声明encoding.codec条件语法搜索配置中的check_field键路径写法要么补type check_field要么改写为 VRL 布尔表达式推荐考虑到当前仓库已无check_fields实现直接迁移是更安全的选择generator source为generatorsource 补上format选项旧 transform盘点仍在使用的 17 个弃用 transform优先把解析/合并类 transform 改写为remapfile source将start_at_beginning替换为ignore_checkpointsread_from注意默认值语义详见 file.rs 中的reconcile_position_options推导规则。对照 vector.yaml 与 config/examples 目录下的示例配置可以快速核对自己升级后的写法是否符合当前规范。【免费下载链接】vectorA high-performance observability data pipeline.项目地址: https://gitcode.com/GitHub_Trending/vect/vector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考