Как группировать и агрегировать в openTSDB, как RDBMS?

У меня есть данные в формате ниже, хранящемся в openTSDB:

src_ip dst_ip protocol value timestamp 1.1.1.1 2.2.2.1 tcp 100 100000001 1.1.1.1 2.2.2.2 tcp 100 100000001 1.1.1.1 2.2.2.3 udp 100 100000002 1.1.1.4 2.2.2.4 icmp 100 100000003

Все они принадлежат к одной метрике, скажем, metric01.

Я хочу получить результат как: select sum(value) from metric01 group by src_ip

Есть ли способ получить результат из http api?

3 ответа

Решение

Теперь способ openTSDB сделать это. Также, если есть такое требование, то openTSDB может быть не вашим выбором. openTSDB - это временной ряд db, также для kariosDB. Я попробовал в openTSDB и kariosDB и обнаружил, что они оба не могут.

Потому что в openTSDB группировка - это одно, а совокупность - это другое. В отличие от RDBMS, агг работает в группе. В openTSDB agg работает на основе примера

Как и OpenTSDB, база данных временных рядов Axibase основана на HBase/HDFS и в то же время поддерживает запросы SQL. Ваш групповой запрос будет работать нормально: https://axibase.com/docs/atsd/sql/

ATSD Community Edition бесплатно.

EDIT20160619: Обновлены ссылки на документацию. Кроме того, ATSD поддерживает GROUP BY с предложением HAVING для фильтрации сгруппированных результатов. Кроме того, оконная функция ROW_NUMBER может использоваться для применения LIMIT к разделам набора результатов.

Раскрытие информации: я работаю на Axibase

Да, есть способ. OpenTSDB предоставляет API отдыха, вы можете использовать это. Для этого вам нужны следующие вещи.

  1. IP-адрес компьютера, на котором работает OpenTSDB.
  2. Порт Opentsdb, по умолчанию 4242.
  3. Начальное время
  4. Агрегатор т.е. сумма, средняя и т. Д.
  5. Метрическое название.
  6. Теги Поскольку вы хотите агрегировать на основе "src_ip", вам не нужно об этом упоминать. Образец приведен ниже. Предполагая, что вы используете OpenTSDB на вашем локальном компьютере.

    http://127.0.0.1:4242/api/query?start=10d-ago&m=sum:metric01{dst_ip = *, protocol = *}

Другие вопросы по тегам