Использование Jaeger для трассировки запросов в Managed Service for YDB
Платформа для распределенной трассировки Jaeger
В этой статье вы узнаете, как установить платформу Jaeger в кластер Managed Service for Kubernetes и настроить ее для работы с Yandex Managed Service for YDB:
- Установите и настройте Jaeger.
- Установите тестовое приложение, которое создаст нагрузку на кластер Kubernetes.
- Проверьте работу Jaeger, выполнив несколько тестовых запросов.
Перед началом работы
-
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра
--folder-name
или--folder-id
. -
Создайте группы безопасности для кластера Managed Service for Kubernetes и входящих в него групп узлов.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
-
Создайте кластер Managed Service for Kubernetes и группу узлов любой подходящей конфигурации. При создании укажите группы безопасности, подготовленные ранее.
-
Установите kubectl
и настройте его на работу с созданным кластером.
Установите и настройте Jaeger
-
Установите продукт Jaeger over YDB из каталога приложений Yandex Cloud Marketplace. При установке приложения выберите пространство имен по умолчанию (
default
). -
Убедитесь, что все поды Jaeger перешли в состояние
Running
:kubectl get pods | grep jaeger
-
Узнайте имя сервиса
jaeger-ydb-store-agent
:kubectl get svc | grep ydb-store-agent
Результат:
<имя_приложения_jaeger-ydb-store-agent> ClusterIP 10.2.238.190 ...
Установите тестовое приложение
Для проверки работы Jaeger используется приложение HotROD
-
Создайте манифест
hotrod.yaml
, содержащий описание приложения:--- apiVersion: v1 kind: Pod metadata: name: hotrod spec: containers: - name: hotrod image: jaegertracing/example-hotrod:latest env: - name: JAEGER_AGENT_HOST value: "<имя_приложения_jaeger-ydb-store-agent>.default.svc.cluster.local" - name: JAEGER_AGENT_PORT value: "6831" ports: - containerPort: 8080 - containerPort: 8081 - containerPort: 8082 - containerPort: 8083
-
Создайте под с приложением
hotrod
:kubectl apply -f hotrod.yaml
-
Убедитесь, что поды
hotrod
перешли в состояниеRunning
:kubectl get pods | grep hotrod
Проверьте работу Jaeger
-
Узнайте имя сервиса
jaeger-ydb-store-query
:kubectl get svc | grep jaeger-ydb-store-query
Результат:
<имя_приложения_jaeger-ydb-store-query> LoadBalancer 10.2.222.155 130.133.51.247 16686:31189/TCP ...
-
Настройте переадресацию порта сервиса
jaeger-ydb-store-query
на локальный компьютер:kubectl port-forward service/<имя_приложения_jaeger-ydb-store-query> 16686:16686
-
В другом окне консоли настройте переадресацию порта приложения
hotrod
на локальный компьютер:kubectl port-forward hotrod 8080:8080
-
Откройте в браузере URI приложения
hotrod
и выполните несколько тестовых запросов к сервису Jaeger.Примечание
Если ресурс недоступен по указанному URL, то убедитесь, что группы безопасности для кластера Managed Service for Kubernetes и его групп узлов настроены корректно. Если отсутствует какое-либо из правил — добавьте его.
-
Откройте в браузере URI Jaeger.
Убедитесь, что тестовые запросы успешно переданы и попали в трассировку.
Удалите созданные ресурсы
Удалите ресурсы, которые вы больше не будете использовать, чтобы за них не списывалась плата:
- Удалите базу данных Managed Service for YDB.
- Удалите кластер Managed Service for Kubernetes.
- Если вы зарезервировали для кластера публичный статический IP-адрес, удалите его.