1

我有一个BOSUN服务器正在运行,它被配置为在OPENTSDB上运行。我每分钟都使用SCOLLECTOR向OPENTSDB发送数据。我正在寻找的是一种获取OPENTSDB 中存在的给定Tag_KeyMetric_Name的所有可能Tag_Values的方法

例如假设我有,

metric: data.queue.capacity
tags: queue={queue1,queue2,queue3...}

我正在存储一定数量的队列的容量。这些数据在OPENTSDB中。我可以使用查询查询 BOSUN 的metric=data.queue.capacity值:

q("sum:data.queue.capacity{queue=*}{}","start_time","end_time")

这给出了输出:

{queue:queue1} :{"timestamp1":"value1","timestamp2":"value2",...}
{queue:queue2} :{"timestamp1":"value1","timestamp2":"value2",...}
.
.
.

返回的结果按不同的 Queue 值分组。很难使用上述响应数据来获取所有可能的队列名称,因为:

  1. 它只返回开始时间和结束时间之间的数据,因此如果队列名称说 queue_not 在 start_time 和 end_time 之间没有度量点,它将不会出现在响应中。
  2. 这会提供大量数据作为响应,我可以汇总,但我认为这不是获取标签值的最佳方式。

我想要的是一个 API,我可以在其中提供Metric_NameTag_Key,并且我应该得到一个 JSON 数据,其中包含OPENTSDB中针对Metric_Name和Tag_Key存在的所有可能的Tag_Values


经过搜索,我找到了部分解决方案: BOSUN有 API 来获取所有Tag_values,但仅适用于通过 BOSUN 中继的那些指标。

API:/api/tagv/{tagk}/{metric}

此 API 接受的Tag_keyMetric_Name并为此组合提供Tag_Values的所有值。

eg: http://bosun-host:port/api/tagv/{tagk}/{metric}
response:
[
  "tag_value1",
  "tag_value2"
]

我仍然没有解决方案来获取不通过BOSUN转发而是直接转发给OPENTSDB的指标的Tag_values。该解决方案可能不涉及BOSUN它也可能是OPENTSDB API。

4

1 回答 1

1

就 Bosun 而言,将数据点中继到 Bosun 以获取该标签元数据是标准方式。您可以使用tsdbrelay将指标复制到 Bosun,但不会流经 Bosun(这样,如果 Bosun 重新启动或关闭,指标流不会中断)。

使用 OpenTSDB 本身,您可以查看OpenTSDB 元数据- 但 Bosun 不使用 OpenTSDB 的此功能。

于 2018-05-02T11:18:55.740 回答