Мониторинг Kubernetes
Это руководство поможет вам собирать логи и метрики из вашего кластера Kubernetes и отправлять их в ClickStack для визуализации и анализа. Для демонстрационных данных при необходимости используется форк официального демо OpenTelemetry от ClickStack.
Предварительные требования
Для выполнения этого руководства вам потребуется:
- Кластер Kubernetes (рекомендуется v1.20+) как минимум с 32 GiB оперативной памяти и 100 GB дискового пространства, доступного на одном узле для ClickHouse.
- Helm v3+
kubectl, настроенный для взаимодействия с кластером
Варианты развертывания
Вы можете следовать этому руководству, используя один из следующих вариантов развертывания:
-
Open Source ClickStack: Разверните ClickStack полностью внутри вашего кластера Kubernetes, включая:
- ClickHouse
- HyperDX
- MongoDB (используется для хранения состояния и конфигурации дашбордов)
-
Managed ClickStack, при котором ClickHouse и UI ClickStack (HyperDX) управляются в ClickHouse Cloud. Это устраняет необходимость запускать ClickHouse или HyperDX внутри вашего кластера.
Чтобы имитировать трафик приложения, вы можете дополнительно развернуть форк ClickStack для OpenTelemetry Demo Application. Он генерирует телеметрию, включая логи, метрики и трейсы. Если у вас уже есть рабочие нагрузки в кластере, вы можете пропустить этот шаг и отслеживать существующие поды, узлы и контейнеры.
Установка cert-manager (опционально)
Если вашей конфигурации требуются TLS-сертификаты, установите cert-manager с помощью Helm:
Развертывание демо-приложения OpenTelemetry (необязательно)
Этот шаг необязателен и предназначен для пользователей, у которых нет подов для мониторинга. Пользователи с уже развёрнутыми сервисами в своей среде Kubernetes могут его пропустить, однако данная демонстрация включает инструментированные микросервисы, которые генерируют данные трассировки и воспроизведения сеансов, позволяя пользователям изучить все возможности ClickStack.
Далее описывается развертывание форка OpenTelemetry Demo Application от ClickStack в кластере Kubernetes, предназначенного для тестирования обсервабилити и демонстрации инструментирования. В состав входят микросервисы бэкенда, генераторы нагрузки, конвейеры телеметрии, поддерживающая инфраструктура (например, Kafka, Redis) и интеграции SDK с ClickStack.
Все сервисы развёртываются в пространстве имён otel-demo. Каждое развёртывание включает:
- Автоматическое инструментирование с использованием OTel и SDKS ClickStack для трейсов, метрик и логов.
- Все сервисы отправляют свою телеметрию в сборщик OpenTelemetry
my-hyperdx-hdx-oss-v2-otel-collector(не развернут) - Проброс ресурсных тегов для корреляции логов, метрик и трассировок с помощью переменной окружения
OTEL_RESOURCE_ATTRIBUTES.
После развертывания демонстрационного примера убедитесь, что все поды успешно созданы и находятся в состоянии Running:
Архитектура демо
Демо состоит из микросервисов, написанных на разных языках программирования, которые взаимодействуют друг с другом по gRPC и HTTP, а также генератора нагрузки, использующего Locust для имитации пользовательского трафика. Исходный код этого демо был изменён для использования инструментации ClickStack.

Источник: https://opentelemetry.io/docs/demo/architecture/
Дополнительные сведения о демо приведены в:
Добавьте репозиторий Helm-чартов ClickStack
Для развертывания ClickStack используется официальный Helm-чарт.
Для этого необходимо добавить Helm-репозиторий HyperDX:
Развертывание ClickStack
После установки Helm-чарта можно развернуть ClickStack в кластере. Можно либо запустить все компоненты, включая ClickHouse и HyperDX, в среде Kubernetes, либо развернуть только коллектор и использовать управляемый ClickStack для ClickHouse и интерфейса HyperDX.
ClickStack Open Source (самоуправляемое развертывание)
Следующая команда устанавливает ClickStack в пространство имён otel-demo. Helm-чарт разворачивает:
- Экземпляр ClickHouse
- HyperDX
- Дистрибутив OTel collector от ClickStack
- MongoDB для хранения состояния приложения HyperDX
Вам может потребоваться настроить параметр storageClassName в соответствии с конфигурацией кластера Kubernetes.
Пользователи, которые не развертывают демонстрацию OTel, могут изменить пространство имён, выбрав подходящее.
Этот Helm-чарт также устанавливает ClickHouse и OTel collector. Для продуктивной среды рекомендуется использовать операторы ClickHouse и OTel collector и/или Managed ClickStack.
Чтобы отключить ClickHouse и OTel collector, задайте следующие значения:
Управляемый ClickStack
Если вы предпочитаете использовать управляемый ClickStack, вы можете развернуть ClickStack и отключить включённый в него ClickHouse.
На данный момент чарт всегда разворачивает и HyperDX, и MongoDB. Хотя эти компоненты предоставляют альтернативный способ доступа, они не интегрированы с аутентификацией ClickHouse Cloud. В этой модели развертывания они предназначены для администраторов, так как предоставляют доступ к защищённому ключу ингестии, необходимому для приёма данных через развернутый OTel collector, и не должны быть доступны конечным пользователям.
Чтобы проверить статус развертывания, выполните следующую команду и убедитесь, что все компоненты находятся в состоянии Running. Обратите внимание, что при использовании управляемого ClickStack компонент ClickHouse будет отсутствовать:
Доступ к интерфейсу HyperDX
Даже при использовании Managed ClickStack локальный экземпляр HyperDX, развёрнутый в кластере Kubernetes, всё равно необходим. Он предоставляет ключ ингестии, управляемый сервером OpAMP, входящим в состав HyperDX, который обеспечивает безопасный приём данных через развёрнутый OTel collector — возможность, которая в настоящее время недоступна в Managed ClickStack.
В целях безопасности сервис использует Кластерный IP и по умолчанию не доступен извне.
Чтобы получить доступ к интерфейсу HyperDX, настройте переадресацию с порта 3000 на локальный порт 8080.
Перейдите по адресу http://localhost:8080 для доступа к интерфейсу HyperDX.
Создайте пользователя, указав имя пользователя и пароль, соответствующие требованиям сложности.

Получение ключа API для приёма данных
Ингестия данных в OTel collector, развёрнутый с помощью ClickStack, защищена ключом ингестии.
Перейдите в Team Settings и скопируйте Ingestion API Key из раздела API Keys. Этот ключ API обеспечивает безопасный приём данных через коллектор OpenTelemetry.

Создание секрета Kubernetes для API-ключа
Создайте новый Kubernetes secret с ключом API для приёма данных и config map, содержащую расположение OTel collector, развёрнутого с помощью Helm-чарта ClickStack. Последующие компоненты будут использовать их для приёма данных в collector, развёрнутый с помощью Helm-чарта ClickStack:
Перезапустите поды демонстрационного приложения OpenTelemetry, чтобы учесть ключ API для приёма данных.
Данные трассировки и журналов из демонстрационных сервисов теперь должны начать поступать в HyperDX.

Добавьте репозиторий Helm для OpenTelemetry
Для сбора метрик Kubernetes мы развернём стандартный OTel collector, настроив его на безопасную отправку данных в наш ClickStack collector с использованием указанного выше ключа API для приёма данных.
Для этого необходимо установить Helm-репозиторий OpenTelemetry:
Развертывание компонентов коллектора Kubernetes
Для сбора логов и метрик как с самого кластера, так и с каждого узла, необходимо развернуть два отдельных коллектора OpenTelemetry, каждый со своим манифестом. Два предоставленных манифеста — k8s_deployment.yaml и k8s_daemonset.yaml — работают совместно для сбора исчерпывающих телеметрических данных из вашего кластера Kubernetes.
-
k8s_deployment.yamlразворачивает единственный экземпляр коллектора OpenTelemetry, отвечающий за сбор событий и метаданных во всём кластере. Он собирает события Kubernetes, метрики кластера и обогащает телеметрические данные метками и аннотациями подов. Этот коллектор работает как отдельное развертывание с одной репликой, чтобы избежать дублирования данных. -
k8s_daemonset.yamlразворачивает коллектор на основе ДемонСета, который запускается на каждом узле вашего кластера. Он собирает метрики на уровне узлов и подов, а также логи контейнеров, используя компонентыkubeletstats,hostmetricsи процессоры Kubernetes Attribute Processor. Эти коллекторы обогащают логи метаданными и отправляют их в HyperDX с помощью экспортера OTLP.
Вместе эти манифесты обеспечивают полную обсервабилити всего стека в кластере — от инфраструктуры до телеметрии на уровне приложений — и отправляют обогащённые данные в ClickStack для централизованного анализа.
Сначала установите коллектор в виде Развертывания:
k8s_deployment.yaml
Далее разверните коллектор в виде ДемонСета для сбора метрик и логов на уровне узлов и подов:
k8s_daemonset.yaml
k8s_daemonset.yamlИсследование данных Kubernetes в HyperDX
Перейдите в интерфейс HyperDX — используя экземпляр, развёрнутый в Kubernetes, или через Managed ClickStack.
Если вы используете Managed ClickStack, просто войдите в свой сервис ClickHouse Cloud и выберите «ClickStack» в левом меню. Аутентификация произойдёт автоматически, и вам не потребуется создавать пользователя. Источники данных для логов, метрик и трассировок будут автоматически созданы для вас. Чтобы получить доступ к локально развернутому экземпляру HyperDX, выполните локальную команду В продуктивной среде мы рекомендуем использовать входной шлюз с TLS, если вы не используете Managed ClickStack. Например:Управляемый ClickStack
ClickStack с открытым исходным кодом
port-forward, а затем откройте HyperDX по адресу http://localhost:8080.
Для просмотра данных Kubernetes перейдите на специальную панель мониторинга по адресу /kubernetes, например http://localhost:8080/kubernetes.
Каждая из вкладок — Поды, Узлы и Пространства имен — должна содержать данные.
