当并行度大于 1 时,Flink 不转发 Kafka 指标



我有一个 Flink 作业,它从 Kafka (v0.9) 读取并写入 Redis。我想监控 Kafka 发出的records-consumed-raterecords-lag-max指标,Flink 应该能够转发这些指标。在这种情况下,我转发给Datadog。

当我以并行度 1 启动作业时,我看到这个指标发出得很好。但是,如果我使并行度大于 1,则不再转发此指标。当并行度> 1 时,作业正在运行,因为我可以看到正在写入 Redis 的条目。

我在 AWS EMR 上运行 Flink (v1.6.2):

  • 主节点:(1)m4.大
  • 核心节点:1 个 C4.2x大型
  • 任务经理数: 1
  • slots.per.task.manager: 7
  • 并行度:7

并行性由 streamExecutionEnvironment.setParallelism() 设置。每个 Kafka 使用者都使用相同的 group.id 和唯一的 client.id 进行实例化。

DD 代理在群集上运行良好。正在发出许多指标,例如已完成检查点的数量和正常运行时间等。

如果并行度大于 1,Flink 有什么理由不从 Kafka 转发这些指标吗?

更新:我还尝试从Redis RichSinkFunction发送自定义DD指标(counter.inc())。当并行度 = 1 时,指标发送正常。当并行度 = 7 时,不会发送指标,但会调用它(添加了调试行)。因此,它似乎不仅限于来自 Kafka 的转发指标。

问题是HTTPRequest的大小越大,并行性就越高,这是有意义的。我正在返回"请求实体太大",但是异常未正确注销,所以我错过了它。

似乎 Flink DatadogHttpReporter 在构建请求时没有考虑请求的大小。我修改了报告器,将每个请求的指标数限制为 1000。现在指标显示得很好。

相关内容

  • 没有找到相关文章

最新更新