Apache Flink 仪表盘未显示指标数据。

3
我有一个非常简单的Apache Flink管道,我想通过Apache Flink仪表板获取一些指标,如Apache Flink文档中所述:
import org.apache.flink.api.common.functions.RichMapFunction;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.metrics.Counter;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.functions.source.RichSourceFunction;

public class Pipeline {

    public static void main(String[] args) throws Exception {
        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        env.addSource(new RichSourceFunction<String>() {
            private static final long serialVersionUID = 3990963645875188158L;
            private boolean notCanceled = true;

            @Override
            public void run(SourceContext<String> ctx) throws Exception {
                while (notCanceled) {
                    ctx.collect("test");
                }
            }

            @Override
            public void cancel() {
                notCanceled = false;
            }
        }).map(new RichMapFunction<String, String>() {
            private static final long serialVersionUID = 1L;
            private transient Counter counter;

            @Override
            public void open(Configuration parameters) throws Exception {
                super.open(parameters);
                this.counter = getRuntimeContext()
                        .getMetricGroup()
                        .counter("myCounter");
            }

            @Override
            public String map(String value) throws Exception {
                this.counter.inc();
                return "mappedtext";
            }
        }).print();

        env.execute();
    }

}

我使用Docker-Hub提供的Docker设置来运行该管道。所有内容都使用Apache Flink 1.10.0。管道可以正常运行,但是当我尝试查看指标时,我只得到以下结果:Metric is not showing。现在我在想我做错了什么?我是否缺少某些配置参数或者这不是在仪表板中查看该指标的正确位置?请问有人能够提供建议或者至少指向一个资源,让我能够获得更多信息吗?
1个回答

3

我认为问题出在你将操作度量标准添加到了映射操作符上,但Web UI显示的是任务指标。(在这个简单的、令人尴尬的并行作业中,源、映射和汇聚操作符已被链接成一个单一的任务。)

要检查你添加的这个度量标准,你可以使用REST API或任何度量报告器。如果你通过禁用操作符链接来实现,我认为它也可能出现在Web UI中。

    env.disableOperatorChaining();

嗨。谢谢,那个方法可行。我之前不知道任务的概念。如果有人偶然看到这个帖子并需要了解这个主题,文档在这里:https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/stream/operators/#task-chaining-and-resource-groups - ali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接