Flink MetricReporter获得什么度量标准?

时间:2019-06-26 00:06:10

标签: apache-flink

我有几个Apache Flink(批处理,而不是流式传输)工作流,我的目标是将一些自定义指标从Flink引入Cloudwatch。我很确定该过程将如下所示:

  1. 在我的Flink代码中,创建一些指标对象,例如getRuntimeContext().getMetricGroup().getCounter("numInputElements");

  2. 实施自定义MetricReporter并注册它,以便Flink将我的Counter从第1步发送到Reporter

  3. 汇总MetricReporter中的指标:应该对所有称为“ numInputElements”的指标求和,以便最后MetricReporter仅需在Cloudwatch中放置一个“ numInputElements”指标。 / p>

  4. MetricReporter,当report()时,将“ numInputElements”放入Cloudwatch。

我的问题与步骤3有关:

  1. 我将有多少个MetricReporter实例?如果每个Flink工作流大于1,则需要在Cloudwatch和MetricReporter逻辑中汇总指标。如果运行我的工作流时每个切片只有一个,那么我就需要在Cloudwatch中进行汇总,因为我将有n个切片,每个切片创建一个“ numInputElements”指标和n {{ 1}} s各自获得一个“ numInputElements”发送给Cloudwatch。

  2. 如果我有1个以上的MetricsReporter实例,是什么决定将哪些度量标准发送到每个MetricReporter

1 个答案:

答案 0 :(得分:0)

作业和任务管理器都有各自的指标报告器实例。用户功能的每个并行部分都将具有其自己的指标,以及每个子任务名称的单独名称。通常,指标聚合是在Flink外部完成的,查询会聚合指标名称(您可以通过其作用域格式进行控制)。

指标报告者非常简单-看看源代码中的一些内容。