【发布时间】:2019-04-19 03:06:04
【问题描述】:
我有一个从 Kafka (v0.9) 读取并写入 Redis 的 Flink 作业。我想监控 Flink 应该能够转发的 Kafka 发出的 records-consumed-rate 和 records-lag-max 指标。在这种情况下,我将转发给 Datadog。
当我以 1 的并行度开始工作时,我看到这个指标发出得很好。但是,如果我使并行度大于 1,则不再转发此指标。该作业在并行度 > 1 时运行,因为我可以看到正在写入 Redis 的条目。
我在 AWS EMR 上运行 Flink (v1.6.2):
- 主节点:(1) m4.large
- 核心节点:(1) c4.2xlarge
- num.task.managers: 1
- slots.per.task.manager: 7
- 并行度:7
并行度由 streamExecutionEnvironment.setParallelism() 设置。每个 Kafka Consumer 都使用相同的 group.id 和唯一的 client.id 进行实例化。
DD 代理在集群上运行良好。正在发出许多指标,例如 numberOfCompletedCheckpoints 和 upTime 等。
如果并行度大于 1,Flink 是否有任何理由不会从 Kafka 转发这些指标?
更新:
我还尝试从 Redis RichSinkFunction 发送自定义 DD 指标 (counter.inc())。当并行度=1 时,度量标准发送良好。当并行度 = 7 时,不会发送度量标准,但会调用它(添加了调试行)。因此,它似乎不仅限于来自 Kafka 的转发指标。
【问题讨论】:
-
不确定 DataDog 是如何工作的,因为我从未使用过它,但是当您设置并行度 > 1 时,Flink 会为处理中涉及的每个 TaskManager 发送单独的指标,所以这可能是您的问题案子?我一直在使用 Flink 和 Prometheus,并行度 > 1 没有问题。