我有一个Flink工作,从Kafka(v0.9)读取并写入Redis。我想监视Kafka发出的records-consumed-rate
和records-lag-max
指标,Flink应该能够转发。在这种情况下,我转发到Datadog。
当我以1的并行度开始工作时,我看到这个指标发射得很好。但是,如果我使并行度大于1,则不再转发此度量标准。当并行度> 1时,作业正在运行,因为我可以看到正在写入Redis的条目。
我在AWS EMR上运行Flink(v1.6.2):
并行性由streamExecutionEnvironment.setParallelism()设置。每个Kafka使用者都使用相同的group.id和唯一的client.id进行实例化。
DD代理在群集上运行正常。正在发出许多指标,例如numberOfCompletedCheckpoints和upTime等。
如果并行度大于1,Flink是否会从Kafka转发这些指标?
更新:我还尝试从Redis RichSinkFunction发送自定义DD指标(counter.inc()
)。当并行度= 1时,度量标准被正确发送。当parallelism = 7时,不会发送度量值,但会调用它(添加调试行)。所以它似乎不仅限于来自Kafka的转发指标。
问题是HTTPRequest的大小越大,并行性就越有意义。我回来了“Request Entity Too Large”,但异常没有正确登出,所以我错过了。
似乎Flink DatadogHttpReporter在构建时不考虑请求的大小。我修改了Reporter,将每个请求的指标数限制为1000.现在指标显示得很好。