4 инструмента для мониторинга кластеров kubernetes

7 минут

Мониторинг и логирование являются одной из базовых задач для поддержания работоспособности 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 является управление логами. Возможностей хватит для большинства задач: стек обеспечивает фильтрацию, группировку логов, корреляцию с ошибками и многое другое.

Алерты

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

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

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

Общая оценка


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 — едва ли можно найти более гибкие и универсальные решения.