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

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

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

  • Простота установки

  • Доступность

  • Функционал: мониторинг

  • Функционал: логи

  • Функционал: уведомления (alerts)

1. Prometheus + InfluxDB + Grafana

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

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

Простота установки ⭐⭐⭐⭐

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

Доступность ⭐⭐⭐⭐⭐

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

Мониторинг ⭐⭐⭐⭐⭐

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

Логи

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

Алерты ⭐⭐⭐⭐

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

Общая оценка ⭐⭐⭐⭐

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

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

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

Простота установки ⭐⭐⭐

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

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

Доступность ⭐⭐⭐⭐⭐

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

Мониторинг ⭐⭐⭐⭐⭐

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

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

Логи ⭐⭐⭐⭐⭐

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

Алерты ⭐⭐⭐⭐⭐

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

  1. Используя модуль alertmanager в Prometheus.
  2. Используя ElasticSearch Watcher в рамках модуля X-Pack. Он позволяет легко настроить алерты, но его необходимо устанавливать отдельно, так как он не входит в стандартную поставку.
Общая оценка ⭐⭐⭐⭐⭐
Kubernetes как сервис с сертификацией CNCF
Беспроблемная доставка ваших приложений

3. Datadog

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

Простота установки ⭐⭐⭐⭐⭐

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

Доступность ⭐⭐⭐⭐

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

Мониторинг ⭐⭐⭐⭐⭐

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

Логи ⭐⭐⭐⭐

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

Алерты ⭐⭐⭐⭐⭐

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

Общая оценка ⭐⭐⭐⭐⭐

4. NewRelic

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

Простота установки ⭐⭐⭐⭐⭐

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

Доступность ⭐⭐⭐⭐

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

Мониторинг ⭐⭐⭐⭐

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

Логи ⭐⭐⭐⭐

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

Алерты ⭐⭐⭐⭐⭐

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

Общая оценка ⭐⭐⭐⭐

Заключение

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

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

MCS — единственный в России сертифицированный Cloud Native Computing Foundation провайдер Kubernetes. На нашей облачной платформе можно запустить уже настроенные кластеры за 10 минут.