У меня работает сервер BOSUN , настроенный для работы на OPENTSDB . Я отправляю данные на OPENTSDB , используя SCOLLECTOR каждую минуту. То, что я ищу, - это способ получить все возможные Tag_Values для данного Tag_Key и Metric_Name , который присутствует в OPENTSDB .
Например, предположим, у меня есть,
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_not не имеет метрической точки между start_time и end_time, она не будет
прийти в ответ.
- Это дает много данных в ответ, я могу агрегировать, но я не думаю, что это
лучший способ получить значения тегов.
Мне нужен API, где я могу дать Metric_Name и Tag_Key , и я должен получить данные JSON, имеющие все возможные Tag_Values , присутствующие в OPENTSDB для этого Metric_Name , Tag_Key .
После поиска я нашел частичные решения:
BOSUN есть API для получения всех значений тегов , но только для тех метрик, которые передаются через BOSUN.
API: / api / tagv / {tagk} / {metric}
Этот API принимает Tag_key и Metric_Name и для этой комбинации дает все значения Tag_Values .
eg: http://bosun-host:port/api/tagv/{tagk}/{metric}
response:
[
"tag_value1",
"tag_value2"
]
Тем не менее, у меня нет решения, чтобы получить Tag_values для метрики, которые не передаются через BOSUN , но напрямую в OPENTSDB .
Решение может не включать BOSUN , это может быть OPENTSDB API тоже.