如何创建多值标签度量标准?

How to create a multi-value tag metric gauge?

已阅读 但运气不佳。

我找到的所有示例都只是展示了如何创建这样的单个值标签:

{
  "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 的第二个参数是字符串而不是字符串数组。

我认为这不是这些计量库作者的真正意图 - 为指标提供多值标记。

metrics 标签的全部意义在于提供一个 "discriminator" - 稍后可以用来检索其标签具有特定、单一值的指标。

通常,这个值用于度量存储系统,如 Prometheus、DataDog、InfluxDB 等。上面这个 Grafana 可以在它的查询中包含一个单一的标签值。

我看到的这种请求的唯一可能用例是可以以一种更方便的方式查看执行器中的指标值,但这同样不是整个功能的重点在这里,所以,底线我怀疑它根本不可能。