Мониторинг и логирование являются одной из базовых задач для поддержания работоспособности IT-инфраструктуры, а в случае микросервисной архитектуры их важность лишь растет. Судите сами: компонентов становится больше, количество зависимостей растет, а требования к отказоустойчивости становятся все строже. И хотя Kubernetes предлагает широкие возможности для построения надежного кластера, без правильно организованного мониторинга все усилия по настройке автомасштабирования, healthckecks, persistent volumes и т.д. не гарантируют 100% доступности. В итоге не стоит удивляться, если в самый важный момент сервисы вдруг станут недоступны для конечных пользователей.

В этой статье мы рассмотрим наиболее популярные решения для мониторинга кластеров Kubernetes, исходя из следующих 5 критериев:

  • Простота установки
  • Доступность
  • Функционал: мониторинг
  • Функционал: логи
  • Функционал: уведомления (alerts)

1. Prometheus + InfluxDB + Grafana

В этом стеке используется Prometheus для сбора метрик, InfluxDB для обработки данных и Grafana для наглядного и удобного представления графиков, схем и т.д.

Prometheus уже давно стал стандартным инструментом для сбора метрик в Kubernetes, а по количеству возможностей представления данных едва ли что-то может конкурировать с Grafana.

Простота установки 4 звезды

Все компоненты устанавливаются через Helm, так что проблем с установкой нет. Правда, использовать их сразу «из коробки» не получится — придется немного поиграться с конфигурированием. Хорошие новости: Grafana уже содержит в себе ряд dashboards для мониторинга Kubernetes, так что с ней проблем возникнуть не должно.

Доступность5 звезд

Все компоненты распространяются по свободной лицензии.

Мониторинг5 звезд

Cтек позволяет мониторить состояние контейнеров, получать информацию о загруженности нод (CPU, RAM) и др. через удобный и понятный UI. Prometheus дает доступ к огромному количеству метрик, но при необходимости вы можете подключить и свои собственные экспортеры.

Логи1 звезда

К сожалению, у рассматриваемого стека есть большой минус - отсутствие возможности работы с логами.

Алерты4 звезды

Что касается оповещений, то здесь все в порядке: Prometheus имеет встроенный модуль alertmanager. Его можно настроить через файлы конфигурации либо через графический интерфейс Prometheus, правда, назвать его удобным весьма сложно.

Общая оценка4 звезды


2. Prometheus + ELK stack (ElasticSearch + Logstash + Kibana)

В этом стеке мы видим уже знакомый нам Prometheus для сбора метрик, но для индексации данных применяется уже ElasticSearch, для управления логами — Logstash, а для отображения метрик — Kibana.

Prometheus + ELK — одно из наиболее популярных и гибких решений для мониторинга, но при этом довольно сложное в конфигурировании.

Простота установки3 звезды

От средней до высокой. В отличие от Grafana и различных SaaS-решений, в этом стеке отсутствуют готовые дэшборды для Kubernetes и придется потратить некоторое время на их настройку в Kibana. Однако после того как все готово, ими очень удобно управлять.

Как и в предыдущем случае, все компоненты устанавливаются через Helm.

Доступность5 звезд

Все компоненты бесплатны и распространяются по модели open source. Elasticsearch также доступен как платный онлайн-сервис (SaaS), но, на наш взгляд, гораздо дешевле использовать его на своих вычислительных ресурсах.

Мониторинг5 звезд

Возможности Prometheus + ELK stack практически безграничны. Kibana дает доступ к большому количеству графиков и дэшбордов, позволяя просматривать практически любую информацию о состоянии кластера.

Как уже было сказано, Prometheus собирает множество метрик, и при желании в данной конфигурации также можно использовать дополнительные экспортеры.

Логи5 звезд

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

Алерты5 звезд

В данной конфигурации алерты можно настроить следующим образом:

используя модуль alertmanager в Prometheus.

используя ElasticSearch Watcher в рамках модуля X-Pack. Он позволяет легко настроить алерты, но его необходимо устанавливать отдельно, так как он не входит в стандартную поставку.

Общая оценка5 звезд


3. Datadog

Datadog — отличное SaaS-решение, если вы хотите сразу получить готовое решение «из коробки». Datadog сам собирает метрики и отображает их в виде удобных графиков, не требуя от пользователя сложной настройки.

Простота установки5 звезд

Установить Datadog очень просто — достаточно лишь скопировать yaml-файл из панели управления и запустить в своем кластере. Через пару минут вы получаете доступ к статистике о контейнерах и кластерах. А если совсем лень, Datadog можно установить и через Helm.

Доступность4 звезды

В отличие от предыдущих вариантов, Datadog — платное решение. Доступность начинается от $15 за ноду в месяц, однако сервис предлагает бесплатный тарифный план для кластеров, в которых не более 5 нод. Платная версия включает в себя функции APM (Application Performance Management)

Мониторинг5 звезд

Datadog дает доступ к различным метрикам приложений и кластера (CPU, RAM) через веб-интерфейс. Если у вас в кластере запущен Prometheus, его можно интегрировать с Datadog.

Логи4 звезды

Datadog дает возможность собирать, индексировать и просматривать логи, однако по сравнению с ELK возможности логирования скромные.

Алерты5 звезд

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

Общая оценка5 звезд


4. NewRelic

NewRelic — известная компания, предлагающая услуги мониторинга по модели SaaS для разных платформ. Мониторинг для Kubernetes находится в стадии бета-тестирования, и по сравнению с другими решениями возможности для мониторинга кажутся довольно ограниченными, однако это компенсируется невысокой Доступностью. Как и в случае c Datadog, NewRelic собирает метрики и отображает их в виде красивых графиков прямо «из коробки».

Простота установки5 звезд

Сервис легко интегрировать с кластером, как и Datadog, а в случае использования Helm chart установка сводится к выполнению пары команд.

Доступность4 звезды

Тарифы начинаются от $0,72, что делает его очень привлекательным для небольших проектов. К сожалению, APM оплачивается отдельно и стоит от $10 за ноду в месяц.

Мониторинг4 звезды

Возможности мониторинга близки к Datadog, но без возможности интеграции с Prometheus. Однако встроенных метрик должно быть достаточно для большинства пользователей.

Логи4 звезды

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

Алерты5 звезд

Есть, легко настраиваются под требования инфраструктуры.

Общая оценка4 звезды


Заключение

Мы рассмотрели самые распространенные и удобные инструменты для мониторинга кластеров Kubernetes. Разумеется, есть множество других решений, например Dynatrace, Splunk, AppDynamics и т.д., однако они менее универсальны в использовании и ориентированы на корпоративных клиентов.

Если описать рассмотренные инструменты кратко, можно сделать следующий вывод: если вам нужен быстрый мониторинг «здесь и сейчас», SaaS-решения Datadog и NewRelic подойдут лучше всего. Если же у вас есть время и ресурсы, присмотритесь к Prometheus + Grafana либо ELK — едва ли можно найти более гибкие и универсальные решения.

А какие инструменты мониторинга используете в своем кластере вы?