Метрики StatsD-Exporter не принимаются от Java - PullRequest
0 голосов
/ 16 июня 2020

Я прохожу через этот учебник на моем Ma c, пытаясь отправить метрики счетчиков из моего Java кода в Prometheus через StatsD-Exporter.

На моем локальном хосте Я запускаю два контейнера Docker, один - Prometheus, другой - StatsD-exporter. Пытаюсь сделать как можно больше разрешений, это мой statsd_mapping.yaml:

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

Итак, чтобы отправить некоторые данные в statsd-exporter, я несколько раз использую эту команду оболочки:

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

Затем я просматриваю http://localhost:9102/metrics и вижу там свои метри c:

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

Мои метри c были получены 5 раз, как ожидалось.

Затем я использую Java NonBlockingStatsDClient, отправляя тот же метри c, и я ожидаю увидеть метри c, как и раньше.

Это мой 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");
}

Выполнение приведенного выше кода дает случайные результаты.

  • Иногда я просто не могу найти свои метри c
  • В большинстве случаев я могу найти новые метри c, отправленные с Java но он застрял на счетчике 1. Это означает, что даже если я отправлю один и тот же метри c 10 раз, он все равно будет отображать 1. Затем, взяв такое же имя метри c и отправив его в statsd из оболочки - и счетчик увеличивается.

Что я пропустил?

Спасибо!

1 Ответ

0 голосов
/ 17 июня 2020

Хорошо, я только что решил. Проблема в том, что я использую не блокирующий клиент. Поскольку основной поток мертв до того, как клиент успел что-либо отправить, я не смог найти метри c в StatsD.

...