使用Graphite插件收集度量标准会导致“名称为[..]的度量标准已存在”错误

时间:2018-08-14 23:17:50

标签: apache-flink

当我配置 flink-conf.yaml 来使用石墨插件收集指标时, 在大多数情况下,只会发送不完整的指标。在Taskmanager输出上,发生多个错误,例如:

    2018-08-15 00:58:59,016 WARN  org.apache.flink.runtime.metrics.MetricRegistryImpl           - Error while registering metric.
    java.lang.IllegalArgumentException: A metric named mycomputer.taskmanager.8ceab4c3dfbf9fc5fa2af0447f1373a1.State machine job.Source: Custom Source.0.numRecordsOut already exists
        at com.codahale.metrics.MetricRegistry.register(MetricRegistry.java:91)
        at org.apache.flink.dropwizard.ScheduledDropwizardReporter.notifyOfAddedMetric(ScheduledDropwizardReporter.java:131)
        at org.apache.flink.runtime.metrics.MetricRegistryImpl.register(MetricRegistryImpl.java:329)
        at org.apache.flink.runtime.metrics.groups.AbstractMetricGroup.addMetric(AbstractMetricGroup.java:379)
        at org.apache.flink.runtime.metrics.groups.AbstractMetricGroup.counter(AbstractMetricGroup.java:312)
        at org.apache.flink.runtime.metrics.groups.AbstractMetricGroup.counter(AbstractMetricGroup.java:302)
        at org.apache.flink.runtime.metrics.groups.OperatorIOMetricGroup.<init>(OperatorIOMetricGroup.java:41)
        at org.apache.flink.runtime.metrics.groups.OperatorMetricGroup.<init>(OperatorMetricGroup.java:48)
        at org.apache.flink.runtime.metrics.groups.TaskMetricGroup.addOperator(TaskMetricGroup.java:146)
        at org.apache.flink.streaming.api.operators.AbstractStreamOperator.setup(AbstractStreamOperator.java:174)
        at org.apache.flink.streaming.api.operators.AbstractUdfStreamOperator.setup(AbstractUdfStreamOperator.java:82)
        at org.apache.flink.streaming.runtime.tasks.OperatorChain.<init>(OperatorChain.java:143)
        at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267)
        at org.apache.flink.runtime.taskmanager.Task.run(Task.java:711)
        at java.lang.Thread.run(Thread.java:748)

我已经在完全新鲜的flink-1.6.0发行版中尝试过此操作,该发行版具有以下配置和示例文件夹中预编译的“状态机作业”:

    metrics.reporters: grph
    metrics.reporter.grph.class: org.apache.flink.metrics.graphite.GraphiteReporter
    metrics.reporter.grph.host: localhost
    metrics.reporter.grph.port: 2003
    metrics.reporter.grph.interval: 1 SECONDS
    metrics.reporter.grph.protocol: TCP

我使用在默认配置上运行的官方石墨docker映像(https://hub.docker.com/r/graphiteapp/docker-graphite-statsd/)。

有任何想法,我该如何解决此问题?

最诚挚的问候

更新

为排除特定的本地设置对此行为负责,我在干净的EC2实例上重复了该过程。这里有完全一样的错误。

如何复制:

  1. 启动EC2 t2.xlarge
  2. 已安装的Java
  3. https://www.apache.org/dyn/closer.lua/flink/flink-1.6.0/flink-1.6.0-bin-scala_2.11.tgz上下载flink
  4. 将flink-metrics-graphite-1.6.0.jar添加到lib
  5. 按照我之前的文章中的说明配置了flink-yaml.conf
  6. ./ bin / start-cluster.sh
  7. ./ bin / flink运行示例/streaming/StateMachineExample.jar

在这种情况下,我没有安装石墨,因为错误显然已经存在 发生之前。 作业开始后,您可以在任务管理器->日志

下的flink仪表板中查看错误。

0 个答案:

没有答案