Удивительно, но об этой подающей большие надежды 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)
mynameisdaniil
14.07.2015 14:44to chemistmail: Сырое, да. Но я использую его с ранних версий и жизни без не представляю. Слишком заманчива идея писать сырые данные и постфактум решать, что именно я хочу проанализировать. Может быть для среднестатистического веб-проекта или уже устоявшегося продукта оно не так здорово как мне кажется, но я использую influxdb, фактически, как профайлер и это прекрасно, скажу я вам (там же и логи).
weirded Автор
14.07.2015 14:57Аналогично, слежу с его помощью за временем исполнения скриптов в проекте, позволяет очень быстро вылавливать тормоза.
chemistmail
14.07.2015 15:15+1Способов записать сырые данные и потом проанализировать масса. Вся фишка influxdb в SQL запросах, а вот это к сожалению находится весьма в плачевном состоянии. Сам проект интересен, но не более. В общем когда они реализуют тот набор SQL который они заявили, тогда можно смотреть, а сейчас это игрушка не более. Это мое сугубо личное мнение.
weirded Автор
14.07.2015 15:25С первой частью согласен, а вот про игрушку даже не знаю — той части агрегирующих функций, которая работает вполне хватает для моих скромных потребностей, заводится дело с полпинка. Буду считать её сравнительно хорошо работающей игрушкой. :)
mynameisdaniil
14.07.2015 15:26Какие, например? Я с радостью заменю influxdb на что то менее сырое и более удобное.
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
и прочее.mynameisdaniil
14.07.2015 22:41Думаете я не гуглил?) Гуглил и даже был готов сесть и написать самостоятельно. Но решил дать шанс этой бд.
Тот же OpenTSDB не умеет гистограмы, перцентили и прочие функции над данными выполнять, которые умеет influxdb. А это самое главное. Запросы можно хоть на брейнфаке слать; в частности, у меня на клиенте транслятор с «моего языка запросов» (назовем это так, на самом деле просто YAML конфиг) на «SQL» который использует influxdb. Конечно, признаюсь, я на клиенте кое какие метрики считаю т.к. в инфлюксе их нет, но делаю это не с сырыми данными.
А вот за vaultaire — спасибо! Посмотрю повнимательнее. Он на хаскелле, и это уже само по себе здорово.
Bluefox
15.07.2015 15:45А windows версию сделали?
weirded Автор
16.07.2015 22:29Но… зачем?
Делать не делали, но говорят что собираться под windows должно, ибо на чистом Go.Bluefox
16.07.2015 22:38Я разрабатываю платформу, которая идёт под linux, osx и windows. Моя среда разработки Windows.
InfluxDB классная штука, но не камильфо урезать функционал под виндой…
Я смог собрать под Windows. При запуске посыпались ошибки, а это было выше моих сил, а главное времени. :(
reji
15.07.2015 19:57Было бы интересно увидеть сравнение с Prometheus.
weirded Автор
16.07.2015 07:22prometheus.io/docs/introduction/comparison
Они сами давно уже всё написали :)
weirded Автор
16.07.2015 22:30Кстати, как раз в выходные планировал активно Prometheus прощупать, а на следующих OpenTSDB.
Глядишь — действительно обзор и сравнение всех этих новомодных штук накидаю :)reji
21.07.2015 13:31Одно дело, когда разработчики сравнивают, а другое дело, когда пользователи :)
Интересно было бы прочитать.
chemistmail
Оно чертовски сырое, базовый функционал не пашет.
Пока можно ничего про это не писать.
{s: `SELECT field1 FROM myseries ORDER BY DESC`, err: `only ORDER BY ASC supported at this time`}
выдержка из тестов.
weirded Автор
А зачем вообще DESC для метрик, если использовать их для графиков? (я не фанатик influxdb (хотя, начал сомневаться), просто сейчас попытался представить сценарий использования и не смог).
chemistmail
Набор вариантов использования не исчерпывается графиками. Система мониторинга, нужно выбрать последние 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
]
]
}
]
}
]
}%
Опять косяк, время выставлено на начало эпохи(в коде куча заглушек + баги)
Таких примеров на самом деле очень много.
weirded Автор
Как вам удалось записать метрику без времени? Или как-то само вышло?
chemistmail
Время есть, только оно не может быть полем для запроса, и в него может попадать мусор