Мониторинг Kubernetes
Этот гид позволяет вам собирать логи и метрики из вашей системы Kubernetes и отправлять их в ClickStack для визуализации и анализа. Для демо-данных мы используем, при желании, форк ClickStack официального демо Open Telemetry.
Предварительные требования
Этот гид требует наличия:
- Kubernetes кластера (рекомендуемая версия v1.20+) с минимум 32 ГиБ ОЗУ и 100 ГБ дискового пространства, доступного на одном узле для ClickHouse.
- Helm версии v3+
kubectl
, настроенного для взаимодействия с вашим кластером
Варианты развертывания
Вы можете следовать этому гиду, используя один из следующих вариантов развертывания:
-
Саморазмещение: Разверните ClickStack полностью внутри вашего кластера Kubernetes, включая:
- ClickHouse
- HyperDX
- MongoDB (используется для состояния и конфигурации панели)
-
Облачное размещение: Используйте ClickHouse Cloud, при этом HyperDX управляется внешне. Это устраняет необходимость запускать ClickHouse или HyperDX внутри вашего кластера.
Чтобы смоделировать трафик приложения, вы можете по желанию развернуть форк ClickStack OpenTelemetry Demo Application. Это генерирует телеметрические данные, включая логи, метрики и трассировки. Если у вас уже есть рабочие нагрузки в вашем кластере, вы можете пропустить этот шаг и мониторить существующие поды, узлы и контейнеры.
Установить cert-manager (Опционально)
Если в вашей настройке требуются TLS-сертификаты, установите cert-manager с помощью Helm:
Развернуть OpenTelemetry Demo (Опционально)
Этот шаг является опциональным и предназначен для пользователей, у которых нет существующих подов для мониторинга. Хотя пользователи с уже развернутыми службами в их среде Kubernetes могут пропустить этот шаг, это демо включает в себя инструментированные микросервисы, которые генерируют данные трассировки и воспроизведения сессий - позволяя пользователям исследовать все функции ClickStack.
Следующее развертывает форк ClickStack OpenTelemetry Demo приложения в рамках кластера Kubernetes, адаптированного для тестирования наблюдаемости и демонстрации инструментирования. В него входят микросервисы бэкенда, генераторы нагрузки, телеметрические каналы, поддерживающая инфраструктура (например, Kafka, Redis) и интеграции SDK с ClickStack.
Все сервисы развернуты в пространстве имен otel-demo
. Каждое развертывание включает:
- Автоматическое инструментирование с помощью OTel и ClickStack SDKS для трассировок, метрик и логов.
- Все сервисы отправляют свое инструментирование в 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
- ClickStack дистрибуцию OTel collector
- MongoDB для хранения состояния приложения HyperDX
Вам может потребоваться настроить storageClassName
в соответствии с конфигурацией вашего кластера Kubernetes.
Пользователи, не развертывающие OTel демо, могут изменить это, выбрав соответствующее пространство имен.
Эта диаграмма также устанавливает ClickHouse и OTel collector. Для производства рекомендуется использовать операторов ClickHouse и OTel collector и/или использовать ClickHouse Cloud.
Чтобы отключить ClickHouse и OTel collector, установите следующие значения:
Используя ClickHouse Cloud
Если вы предпочитаете использовать ClickHouse Cloud, вы можете развернуть ClickStack и отключить включенный ClickHouse.
Данная диаграмма в настоящее время всегда разворачивает как HyperDX, так и MongoDB. Хотя эти компоненты предлагают альтернативный путь доступа, они не интегрированы с аутентификацией ClickHouse Cloud. Эти компоненты предназначены для администраторов в этой модели развертывания, обеспечивая доступ к безопасному ключу приема данных, необходимому для приема через развернутый OTel collector, но не должны быть доступны конечным пользователям.
Чтобы проверить статус развертывания, выполните следующую команду и подтвердите, что все компоненты находятся в состоянии Running
. Обратите внимание, что ClickHouse будет отсутствовать для пользователей, использующих ClickHouse Cloud:
Доступ к интерфейсу HyperDX
Даже при использовании ClickHouse Cloud, локальный экземпляр HyperDX, развернутый в кластере Kubernetes, все еще требуется. Он предоставляет ключ для приема данных, управляемый сервером OpAMP, встроенным в HyperDX, что обеспечивает безопасный прием через развернутый OTel collector - возможность, которая в настоящее время недоступна в версии ClickHouse, размещенной в облаке.
Для обеспечения безопасности служба использует ClusterIP
и по умолчанию не доступна извне.
Чтобы получить доступ к интерфейсу HyperDX, пересылайте порты с 3000 на локальный порт 8080.
Перейдите на http://localhost:8080 для доступа к интерфейсу HyperDX.
Создайте пользователя, предоставив имя пользователя и пароль, которые соответствуют требованиям к сложности.

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

Создать секрет Kubernetes с ключом API
Создайте новый секрет Kubernetes с ключом API приема данных и конфигурационной картой, содержащей местоположение OTel collector, развернутого с помощью диаграммы 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 Collector, ответственный за сбор глобальных событий и метаданных кластера. Он собирает события Kubernetes, метрики кластера и обогащает телеметрические данные метками и аннотациями подов. Этот коллектор работает как самостоятельное развертывание с одной репликой, чтобы избежать дублирования данных. -
k8s_daemonset.yaml
развертывает коллектор на основе DaemonSet, который работает на каждом узле вашего кластера. Он собирает метрики на уровне узлов и подов, а также логи контейнеров, используя такие компоненты, какkubeletstats
,hostmetrics
и процессоры атрибутов Kubernetes. Эти коллекторы обогащают логи метаданными и отправляют их в HyperDX с помощью экспортера OTLP.
Вместе эти манифесты обеспечивают полную наблюдаемость стеки от инфраструктуры до телеметрии уровня приложения и отправляют обогащенные данные в ClickStack для централизованного анализа.
Сначала установите коллектор как развертывание:
k8s_deployment.yaml
Затем разверните коллектор как DaemonSet для метрик и логов на уровне узлов и подов:
k8s_daemonset.yaml
k8s_daemonset.yaml
Изучите данные Kubernetes в HyperDX
Перейдите в интерфейс HyperDX - либо используя вашу локально развернутую версию, либо через ClickHouse Cloud.
Если вы используете ClickHouse Cloud, просто войдите в свою облачную службу ClickHouse и выберите "HyperDX" в левом меню. Вы будете автоматически аутентифицированы и не нужно будет создавать пользователя. Когда вас попросят создать источник данных, оставьте все значения по умолчанию в модели создания источника, заполнив поле таблицы значением Вам также нужно будет создать источник данных для трассировок и метрик. Например, чтобы создать источники для трассировок и метрик OTel, пользователи могут выбрать Отсюда выберите необходимый тип источника, а затем соответствующую таблицу, например для трассировок выберите таблицу Обратите внимание, что различные источники данных в ClickStack - такие как логи и трассировки - могут быть сопоставлены друг с другом. Чтобы включить это, требуется дополнительная конфигурация для каждого источника. Например, в источнике логов вы можете указать соответствующий источник трассировок и наоборот в источнике трассировок. Смотрите "Сопоставленные источники" для получения дополнительных деталей. Чтобы получить доступ к локально развернутому HyperDX, вы можете использовать пересылку порта с помощью локальной команды и получить доступ к HyperDX по адресу http://localhost:8080. В производственных условиях мы рекомендуем использовать ingress с TLS, если вы не используете HyperDX в ClickHouse Cloud. Например:Используя ClickHouse Cloud
otel_logs
- чтобы создать источник логов. Все остальные настройки должны быть автоматически определены, позволяя вам нажать Save New Source
.Create New Source
в верхнем меню.otel_traces
. Все настройки должны быть автоматически определены.Используя саморазворачиваемое развертывание
Чтобы исследовать данные Kubernetes, перейдите на специальную панель мониторинга по адресу /kubernetes
, например, http://localhost:8080/kubernetes.
Каждая из вкладок, Под, Узлы и Пространства имен, должна быть заполнена данными.
