采样
OpenSearch Data Prepper 提供以下采样功能
- 时间采样
- 百分比采样
- 尾部采样
时间采样
您可以在 aggregate
处理器中使用 rate_limiter
操作来限制每秒可处理的事件数量。您可以选择丢弃多余的事件或将其延续到下一个时间段。
在以下示例中,每秒只有 100 个状态码为 200
的事件从给定 IP 地址发送到接收器。when_exceeds
选项设置为 drop
,这意味着配置时间窗口内的所有多余事件都将被丢弃。
...
processor:
- aggregate:
identification_keys: ["clientip"]
action:
rate_limiter:
events_per_second: 100
when_exceeds: drop
when: "/status == 200"
...
如果您将 when_exceeds
选项设置为 block
,则处理器将阻塞管道,直到时间窗口过去。然后它将处理被阻塞的事件。
百分比采样
在 aggregate
处理器中使用 percent_sampler
操作来限制发送到接收器的事件数量。所有多余的事件都将被丢弃。
在以下示例中,每秒只有 20% 的状态码为 200
的事件从给定 IP 地址发送到接收器
...
processor:
- aggregate:
identification_keys: ["clientip"]
duration :
action:
percent_sampler:
percent: 20
when: "/status == 200"
...
尾部采样
在 aggregate
处理器中使用 tail_sampler
操作,根据一组定义的策略对事件进行采样。此操作根据配置的等待期,等待跨不同聚合周期的聚合完成。当聚合完成并且与特定的错误条件匹配时,它将被发送到接收器。否则,只有配置百分比的事件会被发送到接收器。
以下管道将所有状态码为 2
的 OpenTelemetry 跟踪发送到接收器。它只会将不符合此错误条件的 20% 的跟踪发送到接收器。
...
processor:
- aggregate:
identification_keys: ["traceId"]
action:
tail_sampler:
percent: 20
wait_period: "10s"
condition: "/status == 2"
...
如果您将错误条件设置为 false
或不包含它,则只有配置百分比的事件被允许通过,这由概率结果决定。
由于很难准确确定何时应进行尾部采样,因此可以使用 wait_period
选项来测量自上次接收到事件以来的空闲时间。