Мониторинг показателей с помощью Java, графита и микрометра / dropwizard - PullRequest
0 голосов
/ 27 марта 2020

Я немного запутался в том, как метрики из приложения представлены в Grafana из Graphite.

Я использую Dropwizard на стороне клиента, который отправляет метрики в Graphite.

Мой случай - мониторинг размера запроса, поэтому метрика - ".request..size". Я использую MetricRegistry # histogram # update для записи значений

Dropwizard (который также используется внутри Micrometer) отправляет метрики в классе GraphiteReporter, а вот код, который сообщает значения гистограммы:

private void reportHistogram(String name, Histogram histogram, long timestamp) throws IOException {
    final Snapshot snapshot = histogram.getSnapshot();
    sendIfEnabled(COUNT, name, histogram.getCount(), timestamp);
    sendIfEnabled(MAX, name, snapshot.getMax(), timestamp);
    sendIfEnabled(MEAN, name, snapshot.getMean(), timestamp);
    sendIfEnabled(MIN, name, snapshot.getMin(), timestamp);
    sendIfEnabled(STDDEV, name, snapshot.getStdDev(), timestamp);
    sendIfEnabled(P50, name, snapshot.getMedian(), timestamp);
    sendIfEnabled(P75, name, snapshot.get75thPercentile(), timestamp);
    sendIfEnabled(P95, name, snapshot.get95thPercentile(), timestamp);
    sendIfEnabled(P98, name, snapshot.get98thPercentile(), timestamp);
    sendIfEnabled(P99, name, snapshot.get99thPercentile(), timestamp);
    sendIfEnabled(P999, name, snapshot.get999thPercentile(), timestamp);
}

Полагаю, идея в том, что вместо отправки 1'000'000 чисел в массиве он объединяет все вызовы в ~ 10 значений, которые дают хорошую статистическую информацию.

Но в результате в Grafana я вижу следующие метрики:

<node>.request.<endpoint>.size.count
<node>.request.<endpoint>.size.max
<node>.request.<endpoint>.size.mean
...
<node>.request.<endpoint>.size.p999

и мне это кажется странным. Я думал, что все эти 'count', 'max' и процентили рассчитываются с помощью функций Graphite и что Graphite должен каким-то образом деагрегировать значения.

Также я очень растерялся, когда пытаюсь получить средние числа для всех узлов или всех конечных точек -> какую метрику c мне следует использовать -> .request. .size.avg + некоторую функцию агрегирования?

Поэтому мне интересно, должно ли это быть нравится? Может быть, это нехватка конфигурации Graphite (или просто мое отсутствие навыков Grafana). Потому что я думаю, что должен доверять тому, что Dropwizard & Micrometer (и, следовательно, Spring) отправили данные.

...