
Vector 如何用 sample 转换器按采样率丢弃事件以降低数据量【免费下载链接】vectorA high-performance observability data pipeline.项目地址: https://gitcode.com/GitHub_Trending/vect/vector日志、trace 流量过大时可以先在管道里按比例丢弃大部分事件只把采样后的数据送到下游 sink。Vector 的sample转换器就干这件事按你配置的采样率转发事件未命中采样策略的事件被直接丢弃。它的开发状态为 stable支持 log 和 trace 事件不支持 metrics见 sample 组件元数据。选择采样策略rate还是ratio配置sample转换器时rate和ratio必须且只能设置其中一个rate以1/N表达。例如rate 1500表示每 1500 个事件转发 1 个其余丢弃。ratio以百分比表达。例如ratio 0.13表示转发流中 13% 的事件其余丢弃。它支持比rate更精确的取值也能保留超过 50% 的事件。最简配置如下取自仓库生成的示例配置 minimal.yamltransforms: my_transform_id: type: sample inputs: - my-source-or-transform-id ratio: 0.13inputs中的my-source-or-transform-id是占位符需要替换为你管道里真实存在的 source 或 transform 的 ID替换后配置即可被vector validate校验。如果想让下游知道每个事件实际按什么速率被采样可以配置sample_rate_key命中的事件会被写入这个字段默认值为sample_rate设为空字符串则不把采样率写进事件。完整配置示例下面是一条完整的采样管道示例rate: 100表示只保留约 1/100 的事件保留的事件写入sample_rate字段inputs和 sink 的type按你的实际组件替换transforms: sample-100: type: sample inputs: - my-source-or-transform-id # 替换为真实的 source/transform ID rate: 100 sample_rate_key: sample_rate sinks: my-sink: type: blackhole inputs: - sample-100验证采样是否生效校验配置。用 validate 命令检查配置路径换成你自己的配置文件vector validate /etc/vector/vector.yaml启动 Vectorvector --config /etc/vector/vector.yaml同样替换为你的配置路径。检查保留事件。下游收到的每个事件都会带有sample_rate字段值为该事件实际生效的采样率例如配置ratio 0.1时字段值为0.1配置rate 25时为25以上为 测试代码 中的示例值。如果你的日志里出现带sample_rate字段、且数量约为原来的 1/100 的事件说明采样在正常工作。确认丢弃行为。每个被丢弃的事件都会触发一个内部指标ComponentEventsDroppedreason 为Sample discarded.标记为 intentional见 src/internal_events/sample.rs。在 Vector 的遥测输出里能看到该指标持续计数即可确认事件确实被按预期丢弃而不是卡住或误路由。可选按字段分组或按键采样基础配置之外sample还有几个可选配置项来自 sample 生成配置定义group_by模板字符串如{{ service }}或{{ hostname }}-{{ service }}。每个渲染后的取值形成一个独立桶采样率独立地在每个桶内应用适合让每个 service 各自按同一比例采样。key_field指定一个字段名示例值message。该字段的每个唯一值会哈希成一个桶采样率作用在桶上而不是单个事件上——例如可以让同一笔交易的所有日志要么全保留、要么全丢弃。注意如果字段取值分布不均匀整体采样率可能与配置值有偏差key_field不能与rate_field/ratio_field同时使用。exclude一个逻辑条件命中该条件的事件不做采样、直接放行。通过exclude放行的事件不会写入sample_rate字段适合保留少量必须全量留存的关键事件如错误日志。可选按事件字段动态调整采样率如果希望采样率随事件内容变化可以用rate_field或ratio_field指定事件中的字段名逐事件取值作为采样率rate_field字段值必须是正整数或可解析为正整数的字符串按1/N生效浮点数会被拒绝。ratio_field字段值必须是(0, 1]区间内的数字例如0.25保留 25%。两者只能选一个且字段缺失或取值非法时会回退到静态的rate/ratio配置。group_by也可以与它们组合让不同分组各自独立应用动态采样率。配置错误的识别方式以下错误信息在配置校验阶段vector validate或启动时直接给出对应实现见 src/transforms/sample/config.rs错误信息触发条件Only one value can be provided for either rate or ratio, but not bothrate和ratio同时配置Exactly one value must be provided for either rate or ratio to configure static samplingrate和ratio都未配置Only non-zero numbers are allowed values for raterate为 0Only positive, non-zero numbers are allowed values for ratio, value: ...ratio小于或等于 0Only one value can be provided for either ratio_field or rate_field, but not both两个动态字段同时配置key_field cannot be combined with ratio_field or rate_field because dynamic values can vary per event and break key-based coherencekey_field与动态字段混用限制输入输出只支持 log 和 trace 事件metrics 事件不能进入sample转换器。使用key_field时若字段取值分布不均匀整体保留率可能与配置值不一致未配置key_field或事件缺少该字段时事件按独立方式采样。exclude命中事件全量保留会部分抵消采样率配置时要预估这部分流量。参考文档sample 转换器参考、sample 配置生成定义、配置校验。【免费下载链接】vectorA high-performance observability data pipeline.项目地址: https://gitcode.com/GitHub_Trending/vect/vector创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考