未从Java接收到StatsD-Exporter指标

问题描述 投票:0回答:1

我正在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");
}

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

  • 有时我只是找不到我的指标
  • 在大多数情况下,我can都找到了一个从Java发送的新指标,但停留在计数1上。这意味着即使我发送相同的指标10次,它仍会显示1。度量标准的相同名称,然后将其从shell发送到statsd-计数器递增。

我想念什么?

谢谢!

java docker udp metrics statsd
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.