11 лучших инструментов мониторинга с открытым исходным кодом для Kubernetes | DATAENGINER

11 лучших инструментов мониторинга с открытым исходным кодом для Kubernetes

Kubernetes, имеющий более 58 тысяч звезд на GitHub и более 2200 участников по всему миру, фактически является стандартом оркестровки контейнеров. Решая некоторые ключевые проблемы, связанные с запуском распределенных микросервисов, он также ввел некоторые новые. Неудивительно, что, отвечая на вопрос, инженеры называют мониторинг одним из основных препятствий для внедрения Kubernetes. В конце концов, мониторинг распределенных сред никогда не был простым, а Kubernetes добавляет дополнительную сложность. Что не удивительно, так это разработка различных инструментов мониторинга с открытым исходным кодом для Kubernetes, которые помогут решить эту проблему. 

Эти инструменты решают различные аспекты проблемы. Одни помогают с логами, другие — с метриками. Некоторые из них являются сборщиками данных, а другие предоставляют интерфейс для управления Kubernetes с высоты птичьего полета. Некоторые из них являются родными для Kubernetes, другие по своей природе более агностичны. Такое разнообразие и глубина свидетельствует о силе Kubernetes как экосистемы и сообщества, и в этой статье мы рассмотрим некоторые из наиболее популярных доступных инструментов с открытым исходным кодом.

1. Prometheus

Сегодня на рынке существует длинный список баз данных временных рядов с открытым исходным кодом — например, Graphite, InfluxDB, Cassandra, но ни одна из них не пользуется такой популярностью среди пользователей Kubernetes, как Prometheus. Первоначально проект SoundCloud, а теперь часть CNCF (Cloud Native Computing Foundation), Prometheus стал де-факто стандартом с открытым исходным кодом для мониторинга Kubernetes. 

Вкратце, что выделяет Prometheus среди других баз данных временных рядов, так это его многомерная модель данных, PromQL (язык запросов Prometheus), встроенные механизмы оповещения, модель pull vs. push и, конечно же, постоянно растущее сообщество. Эти отличия делают Prometheus отличным решением для пользователей Kubernetes, и теперь эти два проекта тесно интегрированы — пользователи могут легко запускать Prometheus поверх Kubernetes с помощью оператора Prometheus . 

Плюсы : родной Kubernetes, простой в использовании, огромное сообщество.

Минусы : проблемы в масштабе, хранилище.

2. Grafana

Для нарезки и перетасовки метрик Kubernetes и построения красивых приборных панелей мониторинга, Grafana является стандартом де факто, второго такого инструмента нет. При использовании для мониторинга Kubernetes Grafana обычно располагается поверх Prometheus, хотя Grafana вместе с InfluxDB или Graphite также являются обычными установками. 

Есть ряд причин, по которым Grafana так популярна, и ее способность интегрироваться с длинным списком источников данных является одним из них. Grafana чрезвычайно надежна и имеет длинный список возможностей, таких как предупреждения, аннотации, фильтрация, запросы к источнику данных, визуализация и информационная панель, аутентификация / авторизация, межорганизационное сотрудничество и многое другое. 

Grafana также очень легко настроить на Kubernetes — существует множество спецификаций развертывания, которые по умолчанию включают контейнер Grafana, и существует множество панелей мониторинга Kubernetes для Grafana, доступных для использования.

Плюсы : большая экосистема, богатые возможности визуализации, оповещения.

Минусы : не оптимизирован для управления журналами Kubernetes. 

3. Стек ELK (также известный как Elastic Stack).

Самым популярным инструментом мониторинга с открытым исходным кодом для ведения журнала Kubernetes, конечно же, является стек ELK. ELK, аббревиатура от Elasticsearch, Logstash и Kibana, также включает четвертый компонент — Beats, которые являются облегченными поставщиками данных. Каждый компонент в стеке заботится о разных этапах конвейера ведения журнала, и все вместе они обеспечивают комплексное и мощное решение для ведения журнала для Kubernetes. 

Logstash может агрегировать и обрабатывать журналы перед отправкой их на хранение. Elasticsearch был разработан с возможностью масштабирования и будет хорошо работать даже при хранении и поиске в миллионах документов. Kibana отлично справляется с предоставлением пользователям интерфейса анализа, необходимого для анализа данных.  

Все различные компоненты стека можно легко развернуть в среде Kubernetes. Вы можете запускать компоненты как модули, используя различные конфигурации развертывания или используя диаграммы управления. И Metricbeat, и Filebeat могут быть развернуты как демоны и будут добавлять в документы метаданные Kubernetes.

Плюсы : огромное сообщество, простота развертывания и использования в Kubernetes, богатые возможности анализа.

Минусы : сложно поддерживать в масштабе.

4. Fluentd

Еще одним популярным решением, используемым пользователями Kubernetes для агрегирования и обработки журналов, является Fluentd. Написанный на Ruby, Fluentd был создан, чтобы действовать как единый уровень ведения журнала — универсальный компонент, который может агрегировать данные из нескольких источников, объединять данные в различном формате в объекты JSON и направлять их в разные места назначения вывода. Fluentd настолько широко используется, что аббревиатура ELK была заменена новой аббревиатурой — EFK Stack.

Своей популярностью среди пользователей Kubernetes Fluentd обязан ошибкам Logstash, особенно связанным с производительностью. С точки зрения дизайна — производительность, масштабируемость и надежность — некоторые из наиболее выдающихся функций Fluentd. Добавление новых входов или выходов относительно просто и мало влияет на производительность. Fluentd использует диск или память для буферизации и постановки в очередь для обработки сбоев передачи или перегрузки данных и поддерживает несколько параметров конфигурации, чтобы обеспечить более устойчивый конвейер данных. 

Более поздний побочный проект — Fluent Bit . Подобно битам ELK, Fluent Bit — это чрезвычайно легкий поставщик данных, который действует как агент на пограничных хостах, собирая и отправляя данные по конвейерам. В кластере Kubernetes Fluent Bit может быть отличной альтернативой Fluentd, если у вас ограничены возможности ЦП и ОЗУ. 

И Fluentd, и Fluent Bit также являются проектами CNCF и являются родными для Kubernetes — они предназначены для беспрепятственной интеграции с Kubernetes, обогащения данных соответствующими метаданными модулей и контейнеров и, как уже упоминалось, — все это с низким потреблением ресурсов. 

Плюсы : огромная экосистема плагинов, производительность, надежность.

Минусы : сложно настроить

5. cAdvisor

cAdvisor — это агент с открытым исходным кодом, предназначенный для сбора, обработки и экспорта информации об использовании ресурсов и производительности запущенных контейнеров. Он также встроен в Kubernetes и интегрирован в двоичный код Kubelet. 

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

cAdvisor — один из наиболее простых инструментов мониторинга Kubernetes с открытым исходным кодом. Он прост в использовании (он предоставляет метрики Prometheus «из коробки»), но определенно недостаточно надежен, чтобы считаться универсальным решением для мониторинга. 

Плюсы : встроен в Kubernetes, прост в использовании.

Минусы : Базовый, не хватает аналитической глубины, ограниченный функционал.

6. kubewatch

Как следует из названия, kubewatch отслеживает определенные события Kubernetes и отправляет уведомления об этих событиях на различные конечные точки, такие как Slack и PagerDuty. В частности, kubewatch будет искать изменения, внесенные в определенные ресурсы Kubernetes, за которыми вы просите его следить — наборы демонов, развертывания, поды, наборы реплик, контроллеры репликации, службы, секреты и карты конфигурации. kubewatch легко настроить, и его можно развернуть с помощью Helm или настраиваемого развертывания. 

Плюсы : поддерживает несколько конечных точек, легко развертывается.

Минусы : просто наблюдатель

7. kube-ops-view

В официальной документации этого проекта четко указано, что kube-ops-view сам по себе не является инструментом мониторинга, так почему он здесь указан? Что ж, хотя его нельзя использовать для мониторинга и оповещения о производственных проблемах, он может дать вам хорошую рабочую картину ваших кластеров Kubernetes — различные развернутые узлы и их статус, а также различные модули, работающие на узлах. Для этого он был построен, и только для этого. 

Источник: GitHub .

Плюсы : простота использования, простота развертывания. 

Минусы : инструмент только для чтения, не для управления ресурсами Kubernetes.

8. kube-state-metrics

Эта собственная служба метрик Kubernetes была разработана для прослушивания API Kubernetes и генерации метрик по состоянию различных объектов, таких как под, служба, развертывание, узел и т. Д. Полный список метрик, сгенерированных kube-state-metrics, может быть нашел здесь . 

Чрезвычайно простой в использовании, kube-state-metrics — это всего лишь служба метрик, и поэтому требуется еще несколько бит и частей, чтобы стать частью полного решения для мониторинга Kubernetes. kube-state-metrics экспортирует метрики конечной точки / метрик HTTP в текстовом формате. Те, кто использует Prometheus, будут рады узнать, что метрики были разработаны таким образом, чтобы их было легко использовать / извлекать.

Плюсы : простой в использовании, родной для Kubernetes, легко интегрируется с Prometheus. 

Минусы : только агент для генерации метрик.

9. Jaeger

Распределенная трассировка постепенно становится лучшей практикой мониторинга и устранения неполадок для сред Kubernetes. Среди различных доступных инструментов трассировки с открытым исходным кодом Jaeger, кажется, лидирует.

Разработанный Uber с открытым исходным кодом в 2016 году, Jaeger фактически был вдохновлен другими существующими инструментами трассировки, Zipkin и Dapper, что позволяет пользователям выполнять анализ основных причин, оптимизацию производительности и мониторинг распределенных транзакций.  

Jaeger предлагает инструменты на основе OpenTracing для приложений Go, Java, Node, Python и C ++, использует согласованную предварительную выборку с индивидуальной вероятностью для каждой службы / конечной точки и поддерживает несколько бэкэндов хранения — Cassandra, Elasticsearch, Kafka и память. 

Есть несколько способов начать работу с Jaeger в Kubernetes. Пользователи могут использовать новый Jaeger Operator или, если они предпочитают, конфигурацию набора демонов. Существует также универсальное развертывание, доступное для тестирования и демонстрации.

Плюсы : пользовательский интерфейс, различные варианты оснащения, простота развертывания.

Минусы : ограниченная интеграция с сервером.

10. Weave Scope

И последнее, но не менее важное: Weave Scope — это инструмент мониторинга, разработанный людьми из Weaveworks, который позволяет вам получить операционную информацию о вашем кластере Kubernetes. 

Это может звучать немного похоже на kube-ops-view, но Weave Scope поднимает его на несколько ступеней, предоставляя гораздо более приятный пользовательский интерфейс, но, что более важно, позволяя пользователю управлять контейнерами и запускать диагностические команды для них из этого интерфейса. . 

Изображение: GitHub .

Это эффективный инструмент для получения информации о вашем развертывании. Вы сможете увидеть приложение, инфраструктуру, в которой оно развернуто, и различные соединения между различными компонентами.

Плюсы : пользовательский интерфейс, нулевая конфигурация.

Минусы : не хватает аналитической глубины

11. Prometheus Operator

Prometheus Operator, разработанный CoreOS, представляет собой бета-проект, который охватывает и отслеживает развертывание именно кластеров Prometheus в Kubernetes. Важным отличием проекта является создание нативной для Kubernetes конфигурации Prometheus. У них также есть чарт сообщества для prometheus-operator. Версия 0.18 требует для работы как минимум Kubernetes 1.8.0.

Заключение

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

За исключением Jaeger, все остальные инструменты должны начать приносить пользу без дополнительных инструментов или излишней настройки. Все эти инструменты легко протестировать и развернуть — настройте небольшую среду песочницы, начните с малого и постарайтесь понять, подходят ли эти инструменты вам. 

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

Постоянный редактор и автор сайта

Leave a reply:

Your email address will not be published.

Site Footer