我有几个Apache Flink(批处理,而不是流式传输)工作流,我的目标是将一些自定义指标从Flink引入Cloudwatch。我很确定该过程将如下所示:
在我的Flink代码中,创建一些指标对象,例如getRuntimeContext().getMetricGroup().getCounter("numInputElements");
实施自定义MetricReporter
并注册它,以便Flink将我的Counter
从第1步发送到Reporter
汇总MetricReporter
中的指标:应该对所有称为“ numInputElements”的指标求和,以便最后MetricReporter
仅需在Cloudwatch中放置一个“ numInputElements”指标。 / p>
MetricReporter
,当report()
时,将“ numInputElements”放入Cloudwatch。
我的问题与步骤3有关:
我将有多少个MetricReporter
实例?如果每个Flink工作流大于1,则需要在Cloudwatch和MetricReporter
逻辑中汇总指标。如果运行我的工作流时每个切片只有一个,那么我仅就需要在Cloudwatch中进行汇总,因为我将有n
个切片,每个切片创建一个“ numInputElements”指标和n
{{ 1}} s各自获得一个“ numInputElements”发送给Cloudwatch。
如果我有1个以上的MetricsReporter
实例,是什么决定将哪些度量标准发送到每个MetricReporter
?
答案 0 :(得分:0)
作业和任务管理器都有各自的指标报告器实例。用户功能的每个并行部分都将具有其自己的指标,以及每个子任务名称的单独名称。通常,指标聚合是在Flink外部完成的,查询会聚合指标名称(您可以通过其作用域格式进行控制)。
指标报告者非常简单-看看源代码中的一些内容。