Как создать метрику с несколькими значениями?
Уже прочитал это, но не повезло.
Все примеры, которые я нашел, просто показывают, как создать один тег значения следующим образом:
{
"name" : "jvm.gc.memory.allocated",
"measurements" : [ {
"statistic" : "COUNT",
"value" : 1.98180864E8
} ],
"availableTags" : [ {
"tag" : "stack",
"values" : [ "prod" ]
}, {
"tag" : "region",
"values" : [ "us-east-1" ]
} ]
}
Но мне нужно создать тег с несколькими значениями, например так:
availableTags: [
{
tag: "method",
values: [
"POST",
"GET"
]
},
Мой код до сих пор:
List<Tag> tags = new ArrayList<Tag>();
tags.add( Tag.of("test", "John") );
tags.add( Tag.of("test", "Doo") );
tags.add( Tag.of("test", "Foo Bar") );
Metrics.gauge("my.metric", tags, new AtomicLong(3) );
Как вы видите, я думаю, что я могу просто повторить ключ, но это не тот случай, а второй параметр Tag.of
является строковым, а не строковым массивом.
1 ответ
Я не думаю, что это было настоящей целью авторов этих библиотек измерений - предоставить многозначный тег для метрики.
Весь смысл тегов метрик заключается в том, чтобы предоставить "дискриминатор" - то, что может быть использовано позже для получения метрик, у тега которых есть конкретное единственное значение.
Обычно это значение используется в системах хранения метрик, таких как Prometheus, DataDog, InfluxDB и так далее. Кроме того, Grafana может включать одно значение тега в свои запросы.
Единственный возможный вариант использования такого запроса, который я вижу, состоит в том, что будет возможно увидеть значение метрик в приводе более удобным способом, но опять-таки, это не главное в этой возможности, поэтому линия я сомневаюсь, что это вообще возможно.