Мониторинг Kubernetes
Это руководство поможет вам собирать логи и метрики из вашего кластера Kubernetes и отправлять их в ClickStack для визуализации и анализа. Для демонстрационных данных при необходимости используется форк официального демо OpenTelemetry от ClickStack.
Предварительные требования
Для выполнения этого руководства вам потребуется:
- Кластер Kubernetes (рекомендуется v1.20+) как минимум с 32 GiB оперативной памяти и 100 GB дискового пространства, доступного на одном узле для ClickHouse.
- Helm v3+
kubectl, настроенный для взаимодействия с кластером
Варианты развертывания
Вы можете следовать этому руководству, используя один из следующих вариантов развертывания:
-
Самостоятельное развертывание (self-hosted): Разверните ClickStack полностью внутри вашего кластера Kubernetes, включая:
- ClickHouse
- HyperDX
- MongoDB (используется для хранения состояния и конфигурации дашбордов)
-
Облачное развертывание (cloud-hosted): Используйте ClickHouse Cloud, при этом HyperDX управляется вне вашего кластера. Это устраняет необходимость запускать 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, либо использовать ClickHouse Cloud, где HyperDX также доступен в виде управляемого сервиса.
Самостоятельное развертывание
Следующая команда устанавливает ClickStack в пространство имен otel-demo. Helm-чарт разворачивает:
- Экземпляр ClickHouse
- HyperDX
- Дистрибутив OTel collector от ClickStack
- MongoDB для хранения состояния приложения HyperDX
Вам может потребоваться настроить параметр storageClassName в соответствии с конфигурацией кластера Kubernetes.
Пользователи, которые не развертывают демонстрацию OTel, могут изменить пространство имен, выбрав подходящее.
Этот chart также устанавливает ClickHouse и OTel collector. Для продакшен-среды рекомендуется использовать операторы ClickHouse и OTel collector и/или ClickHouse Cloud.
Чтобы отключить ClickHouse и OTel collector, задайте следующие значения:
Использование ClickHouse Cloud
Если вы предпочитаете использовать ClickHouse Cloud, вы можете развернуть ClickStack и отключить входящий в состав ClickHouse.
На данный момент chart всегда разворачивает и HyperDX, и MongoDB. Хотя эти компоненты предоставляют альтернативный способ доступа, они не интегрированы с аутентификацией ClickHouse Cloud. В этой модели развертывания они предназначены для администраторов, предоставляя доступ к защищённому ключу ингестии, необходимому для приёма данных через развернутый OTel collector, и не должны быть доступны конечным пользователям.
Чтобы проверить статус развертывания, выполните следующую команду и убедитесь, что все компоненты находятся в состоянии Running. Обратите внимание, что для пользователей ClickHouse Cloud компонент ClickHouse будет отсутствовать в этом списке:
Доступ к интерфейсу HyperDX
Даже при использовании ClickHouse Cloud локальный экземпляр HyperDX, развёрнутый в кластере Kubernetes, всё равно необходим. Он предоставляет ключ ингестии, управляемый сервером OpAMP, входящим в состав HyperDX, который обеспечивает безопасный приём данных через развёрнутый OTel collector — возможность, которая в настоящее время недоступна в версии, размещённой в ClickHouse Cloud.
В целях безопасности сервис использует ClusterIP и по умолчанию не предоставляется для внешнего доступа.
Чтобы получить доступ к интерфейсу 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 Demo Application, чтобы учесть ключ 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 для централизованного анализа.
Сначала установите коллектор в виде Deployment:
k8s_deployment.yaml
Далее разверните коллектор в виде ДемонСета для сбора метрик и логов на уровне узлов и подов:
k8s_daemonset.yaml
k8s_daemonset.yamlИсследование данных Kubernetes в HyperDX
Перейдите в интерфейс HyperDX — используя экземпляр, развёрнутый в Kubernetes, или через ClickHouse Cloud.
Если вы используете ClickHouse Cloud, просто войдите в свой сервис ClickHouse Cloud и выберите «HyperDX» в левом меню. Аутентификация произойдёт автоматически, и вам не потребуется создавать пользователя. Когда будет предложено создать источник данных, сохраните все значения по умолчанию в модальном окне создания источника, заполнив поле Table значением Вам также потребуется создать источник данных для трассировок и метрик. Например, чтобы создать источники для трассировок и метрик OTel, пользователи могут выбрать Отсюда выберите требуемый тип источника, а затем соответствующую таблицу, например для трассировок выберите таблицу Обратите внимание, что различные источники данных в ClickStack — такие как логи и трассировки — могут быть скоррелированы между собой. Для этого требуется дополнительная настройка для каждого источника. Например, в источнике логов вы можете указать соответствующий источник трассировок, и наоборот — в источнике трассировок. Дополнительную информацию см. в разделе «Коррелированные источники». Чтобы получить доступ к локально развернутому HyperDX, вы можете выполнить локальную команду В продуктивной среде мы рекомендуем использовать входной шлюз с TLS, если вы не используете HyperDX в ClickHouse Cloud. Например:Использование ClickHouse Cloud
otel_logs, чтобы создать источник логов. Все остальные настройки должны быть автоматически определены, после чего вы сможете нажать Save New Source.
Create New Source в верхнем меню.
otel_traces. Все настройки должны быть автоматически определены.
Использование самостоятельного развертывания
port-forward и затем открыть HyperDX по адресу http://localhost:8080.
Для просмотра данных Kubernetes перейдите на специальную панель мониторинга по адресу /kubernetes, например http://localhost:8080/kubernetes.
Каждая из вкладок — Поды, Узлы и Пространства имен — должна содержать данные.
