我正在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");
}
运行上面的代码会带来随机结果。
我想念什么?
谢谢!
好的,我解决了。问题是我正在使用Non阻止客户端。由于在客户端成功发送任何内容之前主线程已死-我在StatsD上找不到任何度量标准。