Мониторинг существует с незапамятных времен. Однако недавно в этой области произошла революция. Собственный облачный мониторинг привнес новые проблемы в старую задачу, сделав прежние решения непригодными для этой работы. При работе с облачными решениями, такими как Kubernetes, ресурсы нестабильны. Сервисы приходят и уходят по замыслу, и это нормально — пока вся система работает нормально. Классические решения для мониторинга не всегда могут изящно справиться с этой быстротой. В этом посте сравнивают два современных решения для мониторинга Prometheus и InfluxDB, исследуют их сходства и различия и определяют наилучшие варианты использования.
Прометей против InfluxDB: Обзор
Prometheus — это база данных, оптимизированная для данных временных рядов и идеальный способ хранения показателей мониторинга. Prometheus выпустила Cloud Native Computing Foundation (CNCF), что означает отличную интеграцию с другими компонентами CNCF. Он имеет встроенное обнаружение сервисов, что упрощает его использование в высокодинамичных средах. В отличие от традиционных инструментов мониторинга, Prometheus использует модель извлечения, которая позволяет лучше масштабироваться. Для доступа к данным Prometheus предлагает гибкий язык запросов под названием PromQL.
InfluxDB — это база данных временных рядов, предназначенная для быстрого и высокодоступного хранения и извлечения данных временных рядов. Он может работать как автономное решение или использоваться для обработки данных из Graphite. В дополнение к мониторингу InfluxDB можно использовать для Интернета вещей, данных датчиков и решений для домашней автоматизации. Как и Prometheus, он имеет собственный язык запросов, вдохновленный SQL. Несмотря на то, что сама база данных является проектом с открытым исходным кодом, в ней реализованы компоненты с закрытым исходным кодом для обеспечения кластеризации. Для более подробного сравнения Prometheus и Graphite ознакомьтесь с этой статьей.
Сравнение высокого уровня: Прометей против InfluxDB
Характерная черта | Прометей | InfluxDB |
Что это | Полностью интегрированная СУБД временных рядов и система мониторинга | База данных временных рядов |
Что оно делает | Сбор, хранение, запросы, построение графиков и оповещение на основе данных временных рядов; предоставляет конечные точки API для данных, которые он хранит | Хранит числовые данные временных рядов |
Реализовано на | Go | Go |
Типы данных обрабатываются | Числовой | Числовой |
Год выпуска | 2012 г. | 2013 |
Веб-сайт | prometheus.io | https://github.com/influxdata/influxdb |
Техническая документация | prometheus.io/docs | https://v2.docs.influxdata.com/v2.0/ |
API и методы доступа | RESTful HTTP и JSON | HTTP, TCP и UDP API |
Поддержка XML? | Да (можно импортировать) | Нет |
Серверные операционные системы | Linux, Windows | Linux, macOS |
Поддерживаемые языки программирования | .NET, C ++, Go, Haskell, Java, JavaScript (Node.js), Python, Ruby | C ++, Erlang, Elixir, Go, Haskell, Java, JavaScript, LISP, MATLAB, .Net, Perl, PHP, Python, R, Ruby, Rust, Scala |
Разбиение поддерживается? | Да, шардинг | Да, шардинг |
Репликация поддерживается? | Да, по федерации | Да, возможно несколько методов |
Сбор данных | Активный или Pull(настраивается) | Push или Pull |
Особенности
Сбор данных
InfluxDB — это система на основе push-уведомлений. Требуется, чтобы приложение активно передавало данные в InfluxDB.
Prometheus — это система, основанная на вытягивании. Приложение публикует метрики на заданной конечной точке, и Prometheus периодически их извлекает.
Место хранения
InfluxDB гораздо больше подходит для регистрации событий. Prometheus ориентирован на запись метрик.
Визуализация и информационные панели
И Prometheus, и InfluxDB имеют базовые визуализации и информационные панели. Чтобы они действительно стали удобными графически, их следует развертывать вместе со специальными решениями для визуализации и приборной панели, такими как Grafana или Chronograf.
Архитектура и расширяемость плагинов
Основным преимуществом Prometheus является его огромная поддержка сообщества, основанная на статусе завершенного проекта CNCF. Многие приложения, особенно облачные, уже предлагают поддержку Prometheus из коробки.
Хотя InfluxDB также имеет множество интеграций , он не так «хорошо связан», как Prometheus.
Сообщество
Prometheus и InfluxDB имеют открытый исходный код и поддерживаются активными сообществами разработчиков. По состоянию на январь 2020 года первичное репозиторий Prometheus на GitHub было разветвлено более 4600 раз по сравнению с 2600 форками InfluxDB.
Случаи использования
Prometheus был создан с учетом возможностей мониторинга — особенно распределенного, облачного мониторинга. Он выделяется в этой категории, предлагая множество полезных интеграций с другими существующими продуктами.
Хотя InfluxDB также может выполнять мониторинг, он не так популярен, как Prometheus для выполнения этой задачи. В результате вам может потребоваться написать свои собственные интеграции. Однако, если вас интересует больше, чем просто мониторинг, InfluxDB также является отличным вариантом для хранения данных временных рядов, таких как данные, поступающие из сенсорных сетей, или данные, используемые в аналитике в реальном времени (например, финансовые данные или статистика Twitter).
Визуализация с Grafana
Когда дело доходит до мониторинга и запросов, Prometheus — мощный инструмент. Что касается пользовательского интерфейса, у него есть свои недостатки. Из-за этого большинство людей большую часть времени используют Grafana с Prometheus. Поскольку Grafana имеет подключаемую модель источника данных, ее можно использовать как с Prometheus, так и с InfluxDB.
Резюме
Оба этих продукта представляют собой отличные базы данных временных рядов. Они отличаются режимом по умолчанию (push для InfluxDB, pull для Prometheus). Некоторые люди утверждают, что PromQL, язык Прометея, проще, чем язык, используемый InfluxDB, но в целом решение использовать тот или иной инструмент, вероятно, будет зависеть от вашего варианта использования. Если мониторинг — это то, что вас больше всего интересует, Prometheus — ваш самый безопасный выбор из-за его множества интеграций и масштабируемой модели. Если вы, скорее всего, будете использовать базу данных временных рядов для IoT, датчиков или аналитики, тогда вы, вероятно, захотите выбрать InfluxDB.