【发布时间】: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