向Kafka排放器添加可配置的度量取样
说明
在Kafka排放物群落扩展中添加可配置的取样机制。 该机制应允许运营商在生产到卡夫卡之前有选择地降低一定比例的ServiceMetric Events.
KafkaEmitterConfig 建议的配置属性 :
- 属性 * 类型 * 默认 * 说明 * | -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
=================================================================================================================================================================================================== " 100 " 保留所有匹配活动; " 0 " 放弃所有匹配活动。 |
druid.emitter.kafka.sampled Metrics ' Set 需要取样的计量名称,如`query/time'。 如果为空,采样适用于所有度量标准。 | `druid.emitter.kafka.samped NodeTypes ' set <String > > 需要取样的节点类型',如`服务/经纪人'。 如果为空,抽样适用于所有服务。 |
预期过滤行为 :
- 只有 " 服务事件 " 实例才有资格进行取样。
- 如果 " 抽样计量 " 是非空的,则抽样仅适用于该套中包含的计量名称。
- 如果`抽样NodeTypes'是非空的,则取样仅适用于该组中存在事件的节点类型。
- 为了匹配事件,采用假随机选择,保留大约`抽样'事件的百分比。
- 必须保留不符合所配置的度量或节点型过滤器的事件。
- 警报、分元数据和请求事件在配置时必须免于取样,并继续以100%的速度排放。
- 在活动到达卡夫卡生产者缓冲器之前,应放弃活动,以降低卡夫卡生产量、网络流量和基础设施成本。
动机
高流量的Druid部署可产生数百万个计量事件。 高临界度的衡量标准,如 " 平时/平时 " ,即使事件主要用于趋势分析或异常检测,也可产生大量的卡夫卡吞吐量。
例如,保留10%的每克耐用度量可以提供有用的统计分布,如p50和p99,同时可大大减少Kafka摄入、储存和网络间接费用。 消费者侧过滤不能提供同样的好处,因为整个事件量已经 生产和储存在卡夫卡。
这一功能将使运营商在保持完整发出警报和其他关键事件类型的同时,选择衡量颗粒性和基础设施成本之间的取舍。
理由
与消费者侧过滤相比,在排放器上取样更为可取,因为它避免了序列化、生产、传输和储存最终将被丢弃的事件的成本。 拟议的匹配操作是O(1)设置后进行随机选择,与事件序列化相比,其间接费用应该微不足道.
100的默认采样率为不配置特性的用户保留了已存在的行为.
业务影响
这种修改之所以生效是因为默认为`100',意思是 . . . . . . .
内容来源: apache/druid