ProCloud Yandex
14.06.2023
читать 6 минут

Знакомство с InfluxDB и базами данных временных рядов

/upload/iblock/693/dvj1lgrn031f1d88rdhuxzxnkse0x8kn/1668318343_2.jpeg

Influxdb create database – это база данных временных рядов с доступом к исходному коду. Она разработана с применением языка GO и отлично подходит для мониторинга ресурсов. У нее довольно богатый функционал, а наличие исходного кода позволяет допилить базу под себя с учетом индивидуальных потребностей. Стоит подробнее рассмотреть, что это за временная база данных, и в чем заключаются ее особенности.

Общая информация

InfluxDB является относительно новым продуктом, который активно набирает популярность. Первый релиз относится к 2013 году. Основная ее задача заключается в хранении временных файлов, метрик и информационных событий.

Вот основные достоинства InfluxDB:

  • из-за использования языка программирования GO нет никаких зависимостей;
  • можно работать в различных режимах, в том числе и в кластерном;
  • есть библиотеки для большого количества языков программирования;
  • SQL- подобный язык запросов понятен и прост;
  • удобный и интуитивно понятный интерфейс для работы с базой данных.

Для хранения пар «ключ-значение» используется БД Level DB или Rocks DB. Согласно данным от разработчиков, эти хранилища показывают наилучшую производительность при работе с данным софтом.

Запись ведется одним из следующих способов:

  • передача json файлов в http API;
  • использование протокола Carbon;
  • передача через UDP.

Также данный софт можно применять для бэкенда для Graphite, что позволяет значительно увеличить производительность.

Сегодня InfluxDB отличается высокой совместимостью с другими программами, которые используются для мониторинга, хранения статистики, обработки логов и так далее.

Программисты продолжают развивать InfluxDB, постоянно появляются новые возможности. В частности, планируется:

  • добавление бинарного протокола для обмена данными;
  • появление интерфейса «издатель-подписчик»;
  • индексирование столбцов;
  • добавление новых функций благодаря новым сценариям, которые появятся на языке Lua;
  • возможность объединять хранимую информацию;
  • повышение уровня безопасности.

Все это делает InfluxDB весьма популярным ПО для хранения временных файлов и статистики.

Не все понимают, зачем требуется база данных временных рядов. Преимущество в скорости приема данных. С помощью этого ПО удается записывать до 100 тысяч строк в секунду, что является отличным показателем (учитывая, что без InfluxDB этот показатель редко превышает 20 000 строк в секунду). Также подобные базы позволяют автоматизировать процесс удаления информации. В обычных базах файлы хранятся до момента их ручного удаления. Здесь же удается задать временной отрезок, в течение которого информация будет актуальна, а потом будет удаляться автоматически.

База данных временных рядов работает в другой экосистеме, не в той, которая привычна рядовым пользователям. Однако она позволяет эффективнее использовать ресурсы.

Установка

Стоит понимать, что установка может отличаться в зависимости от используемой операционной системы. Таким образом, необходимо изучать официальную документацию, чтобы понимать, как инсталлировать софт в конкретно взятом случае.

Установка начинается через командную строку. Требуется использовать соответствующие команды, которые будут отличаться в разных ОС. Также существует разделение команд, исходя из того, используется 32 или 64 битная версия системы.

После завершения установки требуется запустить софт. По умолчанию используются порты 8083, 8086, 8090 и 8099, но в настройках это можно легко исправить. Стоит рассмотреть подробнее особенности настройки InfluxDB.

Настройка и конфигурирование

Все настройки требуется совершать через файл config.toml. Все конфигурации можно разделить на отдельные группы:

  • управление логами;
  • настройка веб-интерфейса;
  • настройка HTTP API;
  • работа с вводом данных из внешних источников;
  • протокол согласования RAFT;
  • общие настройки;
  • работа в кластерном режиме;
  • опережающее ведение журнала.

В Influxdb настройка понятная, софт можно настроить под себя, учитывая текущие задачи конкретно взятого проекта. За счет наличия исходного кода компания также может с помощью программистов допилить программу, создав новые возможности для реализации проекта.

Создаем базу данных

Для начала работы требуется открыть в браузере страницу localhost:8083. По умолчанию логин и пароль root,  однако это можно изменить в настройках (настоятельно рекомендуется это сделать). Далее нажимается кнопка Connect и появляется новое окно.

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

  1. Для упрощения и ускорения чтения информации при поступлении запроса стоит разделять файлы на небольшие части равного объема. Такие файлы называют шардами, а их формирование на основе определенного принципа зовется шардовым пространством.
  2. Во время создания базы обязательно указывается, какие именно шардовые пространства будут использоваться. Retention указывает, как долго шарды должны храниться в базе. Также через настройки можно задать и другие параметры.
  3. Допускается хранение шардов для каждого пользователя или по другим параметрам.
  4. В графе RF указывается, на скольких узлах информация должна сохраняться, что позволяет работать с ней даже на кластерном уровне. Рекомендуется использовать формулу RF = NoS/Split, чтобы можно было быстро записать в кластере новую информацию в любое время.

Вот как происходит деление информации на шарды в этой базе данных:

  1. Происходит изучение всех шардовых пространств, которые есть в базе.
  2. Изучение каждого шарда циклично, чтобы понять, какому именно шарду соответствуют новые данные, которые поступили в систему.
  3. Просмотр шардов, которые подходят для данного отрезка времени.
  4. При отсутствии шардов создаются новые в соответствии с числом, указанным в графе split.
  5. Осуществление записи новой информации.

Лучше, чтобы шарды сохранились недолго, чтобы не переполнять базу. Но в некоторых случаях требуется хранить информацию в течение долгого времени. Тогда можно указать в настройках значение inf. Тогда данный шард не будет удален автоматически системой, удаление будет происходить только вручную.

Работа в кластере

В кластерном режиме серверы InfluxDB выглядят, как единая система, поэтому каждый кластер может отвечать на запросы и сохранять поступающую информацию. При работе используется протокол RAFT.

Важно. На данный момент работа в кластерном режиме доступна только в качестве теста. Это значит, что могут возникать различные баги, а сама работа не отличается стабильностью. Но уже скоро эта возможность будет реализована полноценно.

Для начала работы требуется выполнить следующие действия:

  1. Запустить узел InfluxDB с подходящими настройками, но не использовать параметр seed-servers, который находится в разделе cluster.
  2. На остальных узлах нужно указывать IP-адрес первого сервера в значении seed-servers.

Важно. Во время добавления нового узла допускается указывать IP адрес любого сервера, который уже входит в кластер. Используется порт 8090 по умолчанию, но это можно изменить при необходимости.

Управление правами пользователей

На данный момент определение прав пользователей очень ограничено, если использовать графический интерфейс. Так, администраторы могут только выполнять наиболее простые функции, среди которых добавление и удаление других пользователей, наделенных правами администратора.

Если требуется выполнить другие настройки, то необходимо использовать API. Там можно выполнять требуемые настройки, а доступ к метрике реализован через регулярные выражения.

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

Интеграция с Grafana

Grafana – это простой и понятный дашборд, используемый для просмотра метрик. Стоит отметить, что публикаций об этом софте на русском языке в Интернете практически нет. Однако есть возможность найти сведения о том, как работает InfluxDB и Grafana совместно. Соответствующая информация размещена в открытом доступе.

Для тестового запуска требуется клонировать репозиторий и указать IP-адреса устройств, которые будут входить в кластер.

Заключение

Программное обеспечение InfluxDB в России только начинает набирать популярность, но оно очень перспективное. Есть высокая вероятность, что в будущем его будут активно использовать в разных проектах. Этому способствуют:

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

Таким образом, InfluxDB – интересный софт, который стоит вашего внимания. Рекомендуется установить это ПО, «поиграть» с полями, чтобы понять, на что способна эта программа. Только опытным путем удастся узнать все ее достоинства и понять, насколько она подходит в конкретно взятом случае.

Новости
18 апреля 202418.04.2024
читать 2 минутычитать 2 мин
Дайджест обновлений продуктов Q1
5 апреля 202405.04.2024
читать 1 минутучитать 1 мин
ProCloud CPO Диана Беда в рейтинге ИТ-лидеров от Global CIO
28 марта 202428.03.2024
читать 1 минутучитать 1 мин
Запуск новой локации: Казахстан