普罗米修斯未显示Flink指标

时间:2020-07-03 14:51:50

标签: apache-flink prometheus

我的flink工作中包含以下代码;

    @Override
    public void open(Configuration config) {
          this.counter = getRuntimeContext()
                        .getMetricGroup()
                        .counter("myCounter");
    }

    @Override
    public Tuple2<String, String> map(String s) throws Exception {
            this.counter.inc();
            Thread.sleep(5000);
            return new Tuple2<String, String>(s, s.toUpperCase());
    }

在prometheus发行版的prometheus.yml中,我有以下内容:

- job_name: 'flink-prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9999']
    metrics_path: /

在flink发行版的flink-conf.yaml中:

metrics.reporters: prom
  metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter
  metrics.reporter.prom.host: 127.0.0.1
  metrics.reporter.prom.port: 9999

在prometheus板上,我可以看到localhost:9999作为目标,以及各种度量标准日志。但是我在代码中添加的计数器没有日志。我搜索了字符串“ myCounter”和“ flink-prometheus”,但结果为零。

要显示我的指标还需要做些什么?

1 个答案:

答案 0 :(得分:1)

我在https://github.com/mbode/flink-prometheus-example中的示例和您自己的配置之间看到的主要区别是,该示例正在抓取作业管理器和任务管理器:

scrape_configs:
- job_name: 'flink'
  static_configs:
  - targets: ['job-cluster:9249', 'taskmanager1:9249', 'taskmanager2:9249']

在我自己的示例中-参见Flink Timing Explorer-我发现也有必要这样做。这是对我有用的东西:

flink-conf.yaml

metrics.reporters: prom
metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter
metrics.reporter.prom.port: 9250-9260

prometheus.yaml

global:
  scrape_interval: 5s
  evaluation_interval: 5s

scrape_configs:
  - job_name: 'flink'
    static_configs:
      - targets: ['host.docker.internal:9250', 'host.docker.internal:9251']