image

Удивительно, но об этой подающей большие надежды Time Series DB довольно мало статей на хабре, всего 10, причём она упоминается там вскользь. А ведь версия 0.9 вышла довольно давно, больше месяца назад и была весьма ожидаемой. Итак, что же нового?

Новые фичи


Новое API

Обращения к API стало куда проще вклинивать в уже имеющиеся приложения, благодаря отказу от передачи данных в виде json. Это было, конечно круто и всё такое, но вот вручную отправить метрику с помощью curl выходило довольно проблематично. Сейчас отправка в самом простом виде выглядит следующим образом:

curl "http://influxdb:8086/write?db=база_данных" -d "метрика value=значение"


Старое API из версии 0.8 более не поддерживается, что, наверное и к лучшему.

non_negative_derivative()


Очень полезная агрегирующая функция, которая скрывает отрицательные значения, что спасает графики прирастания растущих, но обнуляющихся величин от внезапных огромных пиков идущих вниз. (пример такой метрики — счётчик missed / dropped пакетов на сетевом интерфейсе в Linux). Когда я только знакомился с проектом, это пожалуй первое что я пытался сделать и убил довольно много времени, пока не узнал от знакомого про наличие этой функции в grafite и не наткнулся на задачу на github о добавлении этой функции в influxdb 0.9.

Прочее

  • Поддержка протокола grafite. Если уж решились стать «убийцей grafite» нужно думать как grafite. Скорее всего это здорово поможет ребятам хотя бы заставить людей попробовать их базу.
  • Новый web UI. Здесь в принципе мало что изменилось, в основном вёрстка.


Сейчас ребята готовят к релизу версию 0.9.2, в которой:

  • Сделали конфигурируемым таймауты между записями на диск. Вот эта штука довольно важна, на мой взгляд, так 0.9.0 выдавала довольно много дискового I/O (за день около 100гб c трёх серверов, шлющих данные об интерфейсах, CPU, памяти и дисковом пространстве через collectd), думаю хоть какая-то агрегация будет полезна. До этого 5 секунд таймаута были захардкодены.
  • Снизили высокую нагрузку на CPU в некоторых случаях.


Помимо всего прочего недавно команда influxdb подготовила два связанных с influxdb проекта:

Telegraf — сборщик метрик для InfluxDB на Go
Chronograf — визуализатор метрик для InfluxDB

Источники


ChangeLog
Release Notes

Комментарии (19)


  1. chemistmail
    14.07.2015 14:34

    Оно чертовски сырое, базовый функционал не пашет.
    Пока можно ничего про это не писать.

    {s: `SELECT field1 FROM myseries ORDER BY DESC`, err: `only ORDER BY ASC supported at this time`}

    выдержка из тестов.


    1. weirded Автор
      14.07.2015 15:11

      А зачем вообще DESC для метрик, если использовать их для графиков? (я не фанатик influxdb (хотя, начал сомневаться), просто сейчас попытался представить сценарий использования и не смог).


      1. chemistmail
        14.07.2015 15:35

        Набор вариантов использования не исчерпывается графиками. Система мониторинга, нужно выбрать последние 3 значения для вычисления состояния сервиса.

        Ну и по текущему состоянию.
        Примеры запросов -> ответов:
        curl -G 'http://fixmon:8086/query?db=fixmon&pretty=true' --data-urlencode «q=SELECT last(time) from system»
        {
        «results»: [
        {
        «error»: «unknown field or tag name in select clause: time»
        }
        ]
        }%
        time есть, но его нет

        curl -G 'http://fixmon:8086/query?db=fixmon&pretty=true' --data-urlencode «q=SELECT last(free) from system»
        {
        «results»: [
        {
        «series»: [
        {
        «name»: «system»,
        «columns»: [
        «time»,
        «last»
        ],
        «values»: [
        [
        «1970-01-01T00:00:00Z»,
        1.28894459e+08
        ]
        ]
        }
        ]
        }
        ]
        }%
        Опять косяк, время выставлено на начало эпохи(в коде куча заглушек + баги)

        Таких примеров на самом деле очень много.


        1. weirded Автор
          14.07.2015 20:53

          Как вам удалось записать метрику без времени? Или как-то само вышло?


          1. chemistmail
            15.07.2015 09:42

            Время есть, только оно не может быть полем для запроса, и в него может попадать мусор


  1. mynameisdaniil
    14.07.2015 14:44

    to chemistmail: Сырое, да. Но я использую его с ранних версий и жизни без не представляю. Слишком заманчива идея писать сырые данные и постфактум решать, что именно я хочу проанализировать. Может быть для среднестатистического веб-проекта или уже устоявшегося продукта оно не так здорово как мне кажется, но я использую influxdb, фактически, как профайлер и это прекрасно, скажу я вам (там же и логи).


    1. weirded Автор
      14.07.2015 14:57

      Аналогично, слежу с его помощью за временем исполнения скриптов в проекте, позволяет очень быстро вылавливать тормоза.


      1. chemistmail
        14.07.2015 15:15
        +1

        Способов записать сырые данные и потом проанализировать масса. Вся фишка influxdb в SQL запросах, а вот это к сожалению находится весьма в плачевном состоянии. Сам проект интересен, но не более. В общем когда они реализуют тот набор SQL который они заявили, тогда можно смотреть, а сейчас это игрушка не более. Это мое сугубо личное мнение.


        1. weirded Автор
          14.07.2015 15:25

          С первой частью согласен, а вот про игрушку даже не знаю — той части агрегирующих функций, которая работает вполне хватает для моих скромных потребностей, заводится дело с полпинка. Буду считать её сравнительно хорошо работающей игрушкой. :)


        1. mynameisdaniil
          14.07.2015 15:26

          Какие, например? Я с радостью заменю influxdb на что то менее сырое и более удобное.


          1. chemistmail
            14.07.2015 15:57

            Зависит от объемов данных, но тот же opentsdb гораздо более зрелый проект.
            opentsdb.net/docs/build/html/user_guide/query/examples.html

            Но это не так наглядно и удобно как SQL + сложнее в установке и требования к окружению совсем другие.

            www.anchor.com.au/blog/2014/06/vaultaire-ceph-based-immutable-tsdb
            Это другой вариант от австралийцев.

            А если объемы небольшие, то можно писать в текст и гонять по нему sql запросы
            keithsheppard.name/txt-sushi

            + Есть еще postgres с его hstore + их последние фишки в www.postgresql.org/about/news/1596
            и прочее.


            1. mynameisdaniil
              14.07.2015 22:41

              Думаете я не гуглил?) Гуглил и даже был готов сесть и написать самостоятельно. Но решил дать шанс этой бд.
              Тот же OpenTSDB не умеет гистограмы, перцентили и прочие функции над данными выполнять, которые умеет influxdb. А это самое главное. Запросы можно хоть на брейнфаке слать; в частности, у меня на клиенте транслятор с «моего языка запросов» (назовем это так, на самом деле просто YAML конфиг) на «SQL» который использует influxdb. Конечно, признаюсь, я на клиенте кое какие метрики считаю т.к. в инфлюксе их нет, но делаю это не с сырыми данными.
              А вот за vaultaire — спасибо! Посмотрю повнимательнее. Он на хаскелле, и это уже само по себе здорово.


  1. Bluefox
    15.07.2015 15:45

    А windows версию сделали?


    1. weirded Автор
      16.07.2015 22:29

      Но… зачем?
      Делать не делали, но говорят что собираться под windows должно, ибо на чистом Go.


      1. Bluefox
        16.07.2015 22:38

        Я разрабатываю платформу, которая идёт под linux, osx и windows. Моя среда разработки Windows.
        InfluxDB классная штука, но не камильфо урезать функционал под виндой…
        Я смог собрать под Windows. При запуске посыпались ошибки, а это было выше моих сил, а главное времени. :(


  1. reji
    15.07.2015 19:57

    Было бы интересно увидеть сравнение с Prometheus.


    1. weirded Автор
      16.07.2015 07:22

      prometheus.io/docs/introduction/comparison

      Они сами давно уже всё написали :)


    1. weirded Автор
      16.07.2015 22:30

      Кстати, как раз в выходные планировал активно Prometheus прощупать, а на следующих OpenTSDB.
      Глядишь — действительно обзор и сравнение всех этих новомодных штук накидаю :)


      1. reji
        21.07.2015 13:31

        Одно дело, когда разработчики сравнивают, а другое дело, когда пользователи :)
        Интересно было бы прочитать.