【问题标题】:StatsD-Exporter metrics are not being received from Java未从 Java 接收 StatsD-Exporter 指标
【发布时间】:2020-06-16 16:27:48
【问题描述】:

我将在我的 Mac 上通过 this 教程,尝试通过 StatsD-Exporter 将我的 Java 代码中的计数器指标发送到 Prometheus。

在我的本地主机上,我运行两个 Docker 容器,一个是 Prometheus,另一个是 StatsD-exporter。尽量允许,这是我的 statsd_mapping.yaml:

mappings:
- match: "*.*.*.*"
  name: "${1}_name"
  labels:
    label1: "$2"
    label2: "$3"
    label3: "$4"

所以为了向 statsd-exporter 发送一些数据,我多次使用这个 shell 命令:

echo -n 'blah.step_4.reason.new_entities:1|c' | nc -u -w0 localhost 9125

然后我浏览到http://localhost:9102/metrics,我可以在那里看到我的指标:

# HELP blah_name Metric autogenerated by statsd_exporter.
# TYPE blah_name counter
blah_name{label1="step_4",label2="reason",label3="new_entities"} 5

我的指标按预期收到了 5 次。

然后我使用 Java NonBlockingStatsDClient,发送相同的指标,我希望看到和以前一样的指标。

这是我的 Java 代码:

private static final StatsDClient statsd = new NonBlockingStatsDClient(
        "",
        "127.0.0.1",                        
        9125          
);

public static void main(String[] args) {
    statsd.incrementCounter("blah1.step_4.reason.new_entities");
}

运行上面的代码会带来随机结果。

  • 有时我只是找不到我的指标
  • 在大多数情况下,我可以找到从 Java 发送的新指标,但它停留在计数 1 上。这意味着即使我发送相同的指标 10 次,它仍会显示 1 . 然后采用相同的指标名称并将其从 shell 发送到 statsd - 并且计数器递增。

我错过了什么?

谢谢!

【问题讨论】:

    标签: java docker udp metrics statsd


    【解决方案1】:

    好的,我刚刚解决了。 问题是我使用的是 Non 阻塞客户端。由于在客户端成功发送任何内容之前主线程已死 - 我在 StatsD 上找不到任何指标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多