Мониторинг помогает обеспечить бесперебойную работу приложений Kubernetes и далее устранить любые проблемы, которые могут возникнуть в процессе его работы.
Например, он позволяет в любой момент времени узнать, сколько сейчас в наличии памяти, дискового пространства и как активно используется CPU, узнать о распределении ресурсов между контейнерами и состоянии приложений, работающих в кластере. Очень часто для этих целей используется Prometheus, в этой статье мы рассмотрим шесть альтернативных инструментов мониторинга для Kubernetes.
Prometheus — это популярный инструмент мониторинга с открытым исходным кодом, который многие компании используют для мониторинга своей ИТ-инфраструктуры. Prometheus изначально был разработан в компании SoundCloud для сбора многомерных данных и запросов. Сервер Prometheus имеет собственный автономный блок, который не зависит от сетевого хранилища или внешних служб. Так что, он не требует большой работы по развёртыванию дополнительной инфраструктуры или программного обеспечения.
Основные преимущества Prometheus — тесная интеграция с Kubernetes и многими доступными экспортерами и клиентскими библиотеками, а также быстрый язык запросов и API. Основными недостатками Prometheus можно считать отсутствие шифрования и стандартную модель данных с метрикой на основе ключа, которая может не совпадать с моделью сторонней системы. В этом случае нужно использовать экспортеры для преобразования метрик. Prometheus работает с данными по модели Pull, то есть для получения данных он сам опрашивает конечные точки.
Однако существует множество других инструментов, рассмотрим их.
Альтернативные инструменты мониторинга
Эти инструменты, как и Prometheus, могут работать в связке с Kubernetes. Каждый из них имеет свои преимущества и недостатки.
1. Grafana
Grafana — это open source платформа для визуализации, мониторинга и анализа метрик. Grafana специализируется на аналитике временных рядов. Она может визуализировать результаты своей работы по мониторингу в виде линейных графиков, тепловых карт и гистограмм. Когда отслеживаемый показатель превысит установленный порог, вы получите соответствующее оповещение.
Ключевые особенности:
- Оповещения. Вы можете получать оповещения по различным каналам, включая SMS, электронную почту, Slack или PagerDuty. Если предпочитаете другие варианты, вы можете добавить собственные оповещения вручную, написав небольшое количество кода.
- Шаблоны дашбордов. Вы можете создавать информационные панели (дашборды) для разных задач. Например, можно использовать одну и ту же панель мониторинга для рабочего и тестового сервера.
- Автоматизация. Вы можете автоматизировать работу в Grafana с помощью скриптов. Например, можно автоматически раскрутить Grafana и новый кластер Kubernetes с помощью скрипта, который содержит предустановленные IP-адрес, сервер и источники данных.
- Аннотации. Если что-то пойдет не так, вы можете сопоставить по времени события из разных дашбордов и источников, чтобы проанализировать причину сбоя. Можно создать аннотации вручную, добавив комментарии к нужным точкам и фрагментам графиков. На графике аннотация отображается в виде вертикальной красной линии. При наведении курсора на аннотацию можно получить описание события — например, информацию об ответе сервера или перезапуске системы.
2. cAdvisor
cAdvisor собирает, обрабатывает и экспортирует информацию о производительности и использовании ресурсов работающих контейнеров. cAdvisor имеет встроенную поддержку Kubernetes, потому что он интегрирован в Kubelet (агент, запущенный на нодах).
Ключевые особенности:
- Автоматическое обнаружение. Автоматическое обнаружение всех контейнеров в узле и сбор статистики, включая использование памяти, CPU, сети и файловой системы.
- Плагины для хранения метрик. Чаще всего, применяются для экспорта статистики хранилища Elasticsearch и InfluxDB.
- Веб-интерфейс. Вы можете отслеживать метрики в графическом веб-интерфейсе, который отображает актуальную информацию обо всех контейнерах на машине.
* Есть мнение, что cAdvisor нельзя рассматривать как самостоятельное решение, так как он по сути встроен в Kubernetes.
3. Fluentd
Fluentd отделяет источники данных от бэкэнд-систем, обеспечивая единое централизованное логирование. Это позволяет выполнять сбор и конвертацию логов из разных приложений, написанных на разных языках. Данные, полученные из разных источников, Fluentd переводит в формат JSON.
Ключевые особенности:
- Использование формата JSON. Позволяет унифицировать обработку данных логов на этапах буферизации, фильтрации и передачи.
- Расширяемая архитектура. Гибкая система плагинов позволяет расширять функциональность Fluentd путем подключения нескольких источников данных и выходов.
- Экономия системных ресурсов. Для нормальной работы Fluentd вполне достаточно 30-40 Мб оперативной памяти. Скорость обработки при этом составляет 13 000 событий в секунду. Если вам нужно больше памяти, вы можете использовать облегчённый лог-форвардер Fluent Bit.
- Надёжность. Для предотвращения потери данных позволяет использовать файловую буферизацию, а также буферизацию с использованием оперативной памяти. Кроме того, Fluentd позволяет добиться высокой отказоустойчивости, а также поддерживает механизм аварийного переключения.
4. Jaeger
Jaeger — бэкэнд, написанный на Go. Он занимается сбором, хранением, анализом и отображением трейсов. Jaeger использует распределённую трассировку для отслеживания пути запроса через различные микросервисы. Инструмент позволяет получить визуальное представление потоков запросов. Распределённая трассировка — это способ управления и наблюдения за микросервисами. Она запускается, «встраиваясь» в сервисную сетку (service mesh).
Ключевые особенности:
- Высокая масштабируемость. Позволяет решить проблему единой точки отказа (SPOF) и масштабироваться в соответствии с потребностями бизнеса.
- Поддержка нескольких хранилищ. Поддерживает две базы данных NoSQL с открытым исходным кодом, Elasticsearch и Cassandra. Для тестовых целей Jaeger также предоставляет простое in-memory хранилище.
- Облачное развертывание. Поддерживает различные методы конфигурации, включая переменные окружения, параметры командной строки и конфигурационные файлы. Использует шаблоны, операторы Kubernetes и диаграммы Helm.
- Мониторинг. Бэкэнд-компоненты Jaeger по умолчанию предоставляют метрики и логи в формате Prometheus.
5. Telepresence
Telepresence — это инструмент с открытым исходным кодом, который позволяет создать «иллюзию» работы с локальным контейнером в удалённом кластере Kubernetes. Telepresence разворачивает в поде двусторонний сетевой прокси, который собирает данные для окружений Kubernetes, включая соединения TCP, переменные окружения и тома.
Ключевые особенности:
- Совместимость. Работает как в Linux, так и в Mac OS, используя нативные пакеты для каждой операционной системы.
- Воркфлоу для разработки. Быстрый воркфлоу для создания мультиконтейнерных приложений, разрабатываемых в Kubernetes. Вы можете запустить локальный Docker-контейнер, «передав» его в кластер.
- Локальная отладка службы Kubernetes. Вы, например, можете запустить службу локально, когда у вас есть ошибка в промежуточном кластере. В этом режиме Telepresence позволяет не только запускать, но и отлаживать код.
- Подключение к удалённому кластеру Kubernetes. Вы можете получить доступ к удалённому кластеру из локального процесса. Это позволяет использовать для взаимодействия с процессами внутри кластера локальные инструменты, установленные, например, на вашем ноутбуке.
6. Zabbix
Zabbix предназначен для мониторинга состояния серверов, а также большого количества сетевых параметров и предлагает множество функций визуализации и создания отчётов на основе хранимых данных. Для мониторинга ИТ-инфраструктуры Zabbix могут использовать как небольшие организации с малым количеством серверов, так и крупные предприятия с большой, разветвлённой инфраструтурой.
Ключевые особенности:
- Гибкие пороги проблем. Вы можете установить порог проблемы в триггере, который будет использовать значения из базы данных.
- Визуализация в режиме реального времени. Вы можете сразу увидеть отслеживаемые данные, используя встроенные графические функции.
- Автообнаружение. У Zabbix есть несколько способов автоматизации управления большими окружениями. Все ваши новые файловые системы и сетевые интерфейсы будут автоматически добавлены. Удаление также происходит автоматически.
- Сканирование сети. Инструмент регулярно сканирует сеть на наличие внешних служб или агентов Zabbix и после обнаружения выполнять предварительно определённые вами действия.
- Распределенный мониторинг. Обеспечивает эффективный способ мониторинга распределённой инфраструктуры с использованием Zabbix Proxy. Вы можете использовать прокси для локального сбора данных, а затем сообщать о них на сервер.
Вывод
Prometheus вместе с встроенным менеджером предупреждений интегрирован в Kubernetes по умолчанию. Однако, как видите, существуют и другие решения для мониторинга, которые как минимум позволяют дополнить и улучшить собственный инструментарий Kubernetes.
На правах рекламы
VDSina предлагает виртуальные и физические серверы под любые задачи, огромный выбор операционных систем для автоматической установки, есть возможность установить любую ОС с собственного ISO, удобная панель управления собственной разработки и посуточная оплата. А еще у нас есть вечные серверы ;)