Link Search Menu Expand Document Documentation Menu

采样

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 选项来测量自上次接收到事件以来的空闲时间。

剩余 350 字符

有问题?

想做贡献?