Настройка демо-приложения и сбор телеметрии в Kubernetes
Вы настроите демо-приложение в кластере Kubernetes и передадите телеметрию приложения в Monium. В инструкции для разворачивания кластера используется сервис Managed Service for Kubernetes, но вы можете использовать любой ваш кластер Kubernetes.
Перед началом работы
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость ресурсов для работы с Monium входит:
- Плата за использование мастера Managed Service for Kubernetes (см. тарифы Managed Service for Kubernetes).
- Плата за вычислительные ресурсы и диски группы узлов Managed Service for Kubernetes (см. тарифы Yandex Compute Cloud).
- Плата за использование Monium (см. тарифы Monium).
Настройка кластера
-
Создайте кластер Kubernetes.
-
Установите менеджер пакетов Helm
версии не ниже 3.8.0. -
Установите kubectl
и настройте его на работу с созданным кластером. -
Добавьте репозиторий Helm-чартов OpenTelemetry:
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm repo updateИз этого репозитория будет установлен агент OpenTelemetry Collector для сборки телеметрии из приложений в кластере Kubernetes и демо-приложение OpenTelemetry Demo — интернет-магазин.
-
Создайте сервисный аккаунт с ролью
monium.telemetry.writerи API-ключ с областью действияyc.monium.telemetry.write. -
Добавьте API-ключ в секреты кластера:
export NS=default kubectl -n $NS create secret generic monium-secrets \ --from-literal=MONIUM_API_KEY='<API-ключ>'
Поставка и просмотр телеметрии
-
Создайте файл со следующей конфигурацией
otel-demo-monium.yml:# https://github.com/open-telemetry/opentelemetry-helm-charts/blob/main/charts/opentelemetry-demo/README.md opentelemetry-collector: extraEnvsFrom: - secretRef: name: monium-secrets config: receivers: # Сбор метрик grafana, по умолчанию не настроено в демо-приложении prometheus: config: scrape_configs: - job_name: "grafana" kubernetes_sd_configs: - role: pod relabel_configs: # Фильтр по метке (оставляем только grafana) - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_name] action: keep regex: grafana # Заменяем адрес на IP пода и порт 3000 - source_labels: [__address__] action: replace regex: "([^:]+)(?::\\d+)?" replacement: "$1:3000" target_label: __address__ # Указываем путь к метрикам - action: replace target_label: __metrics_path__ replacement: /grafana/metrics exporters: debug: verbosity: detailed otlp/monium: compression: none endpoint: ingest.monium.yandex.cloud:443 headers: Authorization: "Api-Key ${env:MONIUM_API_KEY}" x-monium-project: folder__<идентификатор_каталога> service: extensions: [health_check] pipelines: traces: receivers: [otlp] exporters: [otlp, spanmetrics, otlp/monium] logs: receivers: [otlp] exporters: [opensearch, otlp/monium] metrics: receivers: [httpcheck/frontend-proxy, otlp, prometheus, redis, spanmetrics] exporters: [otlphttp/prometheus, otlp/monium] telemetry: resource: service: otel-collector metrics: level: detailed readers: - periodic: exporter: otlp: endpoint: ${env:MY_POD_IP}:4317 protocol: grpc interval: 10000 timeout: 5000 -
Установите демо-приложение с поставкой логов, метрик и трейсов в Monium:
helm uninstall otel-demo-monium -n $NS --ignore-not-found helm install otel-demo-monium open-telemetry/opentelemetry-demo \ --version 0.37 \ -n $NS \ --values otel-demo-monium.yml -
Создайте трафик, чтобы отправлять телеметрию.
-
Настройте проброс портов для сервиса
frontend-proxy:kubectl --namespace default port-forward svc/frontend-proxy 8080:8080 -
В браузере откройте интернет-магазин по адресу
http://localhost:8080/и совершайте действия пользователя. Например, добавьте товар в корзину.
-
Посмотрите данные телеметрии
-
На главной странице Monium
слева выберите Шарды. -
В списке выберите шард с названием сервиса, который работает внутри интернет-магазина. Например,
cartилиproduct-catalog.Имя шарда формируется как
<имя_проекта>_<имя_кластера>_<имя_сервиса>, напримерfolder__b1g86q4m5vej********_default_cart. -
Чтобы посмотреть отдельный тип данных, слева выберите:
-
Метрики.
В строке запроса последовательно выберите:
*project=folder__<идентификатор_каталога>;
*cluster=default,
*service=cart
* и нажмите Выполнить запрос.Пример графика с метриками

Подробнее о работе с метриками.
-
Логи.
В строке запроса последовательно выберите
project,cluster,serviceи нажмите Выполнить запрос.Пример страницы с логами

Подробнее о работе с логами.
-
Трейсы.
В строке запроса последовательно выберите
projectиserviceи нажмите Выполнить.Пример страницы с трейсами

Подробнее о работе с трейсами.
-
Для использования данных телеметрии создайте дашборд и алерты.
Если телеметрия не отображается в Monium
-
Убедитесь, что сервисный аккаунт и API-ключ имеют нужные роли и области действия.
-
Проверьте, что в секретах указан верный API-ключ:
kubectl get secret monium-secrets -n $NS -o jsonpath='{.data.MONIUM_API_KEY}' | base64 -d -
Проверьте логи OTel Collector:
kubectl logs -l app.kubernetes.io/name=opentelemetry-collector -n $NS -
Убедитесь, что эндпоинт Monium доступен:
kubectl run -it --rm debug --image=curlimages/curl --restart=Never -- \ curl -v https://ingest.monium.yandex.cloud