Лучшие проекты с открытым исходным кодом для мониторинга и наблюдения Kubernetes
По мере дальнейшего развития DevOps организации постоянно пытаются улучшить производительность своего программного обеспечения и выпускать на рынок продукты самого высокого качества. И когда дело доходит до современных разговоров о DevOps, Kubernetes занимает центральное место со всей экосистемой, построенной вокруг него. Это вполне логично, учитывая, что Kubernetes и DevOps естественным образом подходят друг другу, где первый помогает оптимизировать создание, тестирование и развертывание конвейеров, а второй обеспечивает это на уровне инфраструктуры.
Мониторинг против наблюдаемости и золотой треугольник
Разница между мониторингом и наблюдаемостью заключается в том, что последняя является неотъемлемым свойством системы, а первая — тем, что кто-то делает с системой. Разработчик или операционная группа несут исключительную ответственность за наблюдаемость, тогда как мониторинг может выполняться кем угодно. В облачных многоязычных архитектурах трудно выявлять и решать проблемы с производительностью. Вот почему нужна наблюдательность.
Золотой треугольник
Золотой треугольник представляет собой три столпа мониторинга и наблюдаемости.
- Метрики: они представляют собой числовые значения, которые меняются со временем. Они являются ключевой структурой данных, используемой при мониторинге, и дают представление о состоянии системы.
- Журналы: представляют собой отдельные события и содержат метаданные. Это самый большой объем данных, который необходимо хранить.
- Трассировки: они отслеживают информацию о конкретных операциях приложения.
И, наконец, инструменты не обязательно являются частью золотого треугольника, но они не менее важны. Инструменты — это части кода, используемые для создания метрик, журналов и трассировок.
Пять лучших инструментов для мониторинга и наблюдения в Kubernetes
Kubernetes — самое популярное программное обеспечение для оркестрации контейнеров, и одной из причин этого является его модульная архитектура. В нем нет таких функций, как встроенный мониторинг; он ожидает, что администратор или пользователь настроит его с помощью легкодоступных инструментов. Мониторинг и наблюдаемость необходимы для анализа многочисленных контейнеров, работающих в Kubernetes, чтобы убедиться, что все сервисы работают безукоризненно. Таким образом, разработка различных инструментов мониторинга с открытым исходным кодом для Kubernetes неудивительна.
Прежде чем мы рассмотрим некоторые из этих инструментов, стоит упомянуть, что Prometheus является ведущим инструментом мониторинга для Kubernetes. Тем не менее, мы попытались заглянуть за его пределы и посмотреть на многообещающие проекты, которые прокладывают новые пути с помощью мониторинга. На самом деле, некоторые из этих инструментов служат для расширения функциональности Prometheus по умолчанию. Давайте рассмотрим пять таких инструментов, необходимых для мониторинга и наблюдения в Kubernetes.
1. Кора
Cortex — это системная платформа Prometheus как услуга с открытым исходным кодом, обеспечивающая сложную и безопасную многопользовательскую работу с Prometheus. По сути, это система мониторинга, которая предлагает безграничную горизонтальную масштабируемость для приложений и микросервисов. Он работает на нескольких машинах в кластере, что улучшает его хранилище и позволяет передавать метрики и запускать глобально агрегированные данные в одном месте.
У Cortex нет единой точки отказа, поскольку он может реплицировать данные между машинами при работе в кластере и поддерживать несколько платформ облачных вычислений. Он обеспечивает долгосрочное хранение настраиваемых показателей, которые позволяют вести историю поиска с диаграммами и графиками. Это позволяет командам DevOps настраивать визуализацию сетевого трафика в реальном времени и отслеживать события во время выполнения. В дополнение к быстрому ответу на запрос, Cortex обеспечивает мультиарендность как первоклассную возможность для крупных организаций с большим количеством команд.
2. Танос
Thanos — это система мониторинга с открытым исходным кодом, которая накапливает данные из различных развертываний Prometheus на основе метрик и обеспечивает централизованное глобальное представление запросов. Он использует формат хранилища Prometheus 2.0 для хранения неограниченного количества долгосрочных исторических данных. Thanos обеспечивает понижение частоты дискретизации — снижение частоты дискретизации сигнала — для ускорения и сохранения отклика запросов при запросе больших временных диапазонов. Его можно расширить на несколько кластеров Kubernetes, и у него есть удобная резервная копия для метрик.
Данные мониторинга собираются, когда два экземпляра Prometheus работают в одном кластере Kubernetes. Thanos помогает извлекать данные из реплик, дедуплицировать и сохранять их, предотвращая тем самым простои. Он легко интегрируется со всеми настройками Prometheus, его операции просты, а базовые затраты незначительны.
3. Открытая телеметрия
OpenTelemetry — это платформа наблюдения с открытым исходным кодом и набор инструментов наблюдения для облачного программного обеспечения. Хотя сам по себе он не является инструментом мониторинга, он позволяет использовать различные инструменты мониторинга, такие как Jaeger, Prometheus или любой коммерческий инструмент мониторинга, в который вы хотите отправлять данные.
OpenTelemetry предлагает готовый пакет инструментов для создания, сбора и экспорта данных из облачных приложений для анализа и понимания их производительности и работоспособности. OpenTelemtry стандартизирует процесс сбора данных, предоставляя общий формат инструментария для всех служб. С точки зрения непрофессионала, OpenTelemetry — это отправка ваших данных для наблюдения туда, где вы можете их использовать.
Данные, собираемые OpenTelemetry, относятся к типу данных, известных как данные телеметрии. Эти данные представлены в виде метрик, журналов и трассировок и анализируются для получения представления о зависимостях в распределенной системе. OpenTelemetry определяет, как собирать эти данные телеметрии, поэтому командам становится полезно с самого начала инструментировать наблюдаемость в приложении.
В основе OpenTelemetry лежат ее коллекторы. Они подобны агентам, установленным в системе, за которой необходимо наблюдать, и отсюда они отвечают за сбор и транспортировку данных в пункт назначения для потребления. Как это работает, программное обеспечение сообщает системным компонентам, какие метрики следует собирать с помощью API для инструментирования кода, а затем объединяет эти данные для передачи их для обработки. Затем он разбивает данные и фильтрует их для устранения ошибок перед преобразованием и экспортом. Анализ этих данных облегчает наблюдение за поведением многослойных систем.
4. Сетка хаоса
Chaos Mesh — это облачная платформа для создания хаоса с открытым исходным кодом, способная управлять сценариями сбоев. Инжиниринг хаоса — это, по сути, подход, который помогает выявлять сбои до того, как они вызовут проблемы, для создания устойчивых систем. Итак, Chaos Mesh — это универсальное решение для создания хаоса, которое работает путем имитации аномалий, которые могут возникнуть в реальности для сложных систем в Kubernetes. Он также обеспечивает визуализацию, помогающую разрабатывать собственные сценарии экспериментов с хаосом, и имеет несколько уровней контроля безопасности.
Высокомасштабируемая платформа состоит из двух основных компонентов: оператора хаоса, который является основным компонентом с полностью открытым исходным кодом, и панели управления хаосом, представляющей собой веб-интерфейс для разработки и мониторинга экспериментов с хаосом. Поскольку Chaos Mesh специально разработан для Kubernetes, он не требует особых зависимостей и может быть развернут непосредственно в кластерах Kubernetes. Он вносит хаос в инфраструктуру Kubernetes управляемым способом, обеспечивая автоматическую оркестровку.
5. Локи
Каждое приложение создает журналы, и возможность анализа этих журналов важна для организаций, чтобы отслеживать их производительность. Хотя существует множество инструментов для агрегации журналов, Loki выделяется своим уникальным подходом. Он индексирует только метаданные (например, метки модулей Kubernetes) из каждой строки журнала. Кроме того, он хранит неструктурированные сжатые журналы, а фактическое содержимое журналов хранится в хранилищах объектов, что упрощает агрегирование журналов и упрощает работу. Loki может легко выбирать и искать журналы временных рядов, где журналы хранятся стабильно.
Он горизонтально масштабируемый, многопользовательский и может быть легко подключен к Prometheus.
Сбор журналов в Kubernetes — огромная задача, поскольку он имеет архитектуру на основе микросервисов с сотнями модулей и еще большим количеством контейнеров. Именно здесь на помощь приходит Loki, который помогает эффективно собирать журналы из модулей Kubernetes.
Сила многих для мониторинга и наблюдения Kubernetes
Существует несколько инструментов, каждый из которых имеет свои уникальные решения, ориентированные на одну или две конкретные проблемы наблюдаемости. Таким образом, поскольку универсального решения для мониторинга и наблюдения во всех средах системы Kubernetes не существует, внедрение инструментов для конкретных задач может оказаться слишком трудоемким для команды DevOps. Тем не менее, внедрение разумной комбинации нескольких из этих инструментов после анализа требований может помочь.