Розгортання Docker
Попередні вимоги
- Docker
- Docker Compose v2.0.0+
- Make (опціонально)
- 6 ГБ оперативної памʼяті для застосунку (або ~3 ГБ умінімальному режимі)
- 14 ГБ дискового простору
Отримання та запуск демо
Клонуйте репозиторій Demo:
git clone https://github.com/open-telemetry/opentelemetry-demo.gitПерейдіть до теки з демо:
cd opentelemetry-demo/Запустіть демо1:
make startdocker compose --env-file .env --env-file .env.override \ -f compose.yaml -f compose.full.yaml \ -f compose.observability.yaml -f compose.extras.yaml \ up --force-recreate --remove-orphans --detachПриміткаГолий
docker compose upзавантажує лишеcompose.yaml. Це запускає вебмагазин, але без Kafka чи будь-яких бекендів спостережуваності, тому телеметрію ніде переглядати. Передавайте файли явно, як показано вище, або використовуйтеmake start.Режими розгортання
Демо підтримує кілька режимів розгортання. Стандартний
make startзапускає повне демо зі всіма сервісами та стеком спостережуваності. Інші режими дозволяють зменшити використання ресурсів або виключити певні компоненти:Режим Make target Опис Повний make startУсі сервіси та бекенди спостережуваності (стандартно) Мінімальний make start-minimalВиключає Kafka та її залежні сервіси ( accounting,fraud-detection,kafka), зменшує використання памʼяті до ~3 ГББез o11y make start-no-o11yУсі сервіси без бекендів спостережуваності (Jaeger, Grafana, Prometheus, OpenSearch) Мін., без o11y make start-minimal-no-o11yМін. сервіси без бекендів спостережуваності Профілювання make start-profilingПовний режим з eBPF профайлером та UI Firepit для даних профілювання Агентний make start-agenticПовний режим з AI агентом, MCP сервером та чатботом для взаємодії з демо Наприклад, щоб запустити демо в мінімальному режимі:
make start-minimaldocker compose --env-file .env --env-file .env.override \ -f compose.yaml -f compose.observability.yaml -f compose.extras.yaml \ up --force-recreate --remove-orphans --detachЗапуск з AI агентом
Агент, MCP сервер та чатбот типовою є запускаються. Щоб додати їх1:
make start-agenticdocker compose --env-file .env --env-file .env.override \ -f compose.yaml -f compose.full.yaml \ -f compose.observability.yaml -f compose.extras.yaml \ -f compose.agent.yaml \ up --force-recreate --remove-orphans --detachЦе додає інтерфейс чатботу за адресою http://localhost:8080/chatbot/. Зазвичай агент відтворює записані відповіді LLM (
USE_VCR=True), тому API-ключ не потрібен. Щоб спілкуватися з реальною LLM, встановітьLLM_BASE_URL,LLM_MODELтаAPI_KEYу.env.override.Запуск з безперервним профілюванням
Щоб додати eBPF профайлер та інтерфейс профілювання Firepit1:
make start-profilingdocker compose --env-file .env --env-file .env.override \ -f compose.yaml -f compose.full.yaml \ -f compose.observability.yaml -f compose.profiling.yaml \ -f compose.extras.yaml \ up --force-recreate --remove-orphans --detachПрофілі тоді доступні за адресою http://localhost:8080/profiles/.
(Опціонально) Запустіть тести телеметрії:
Демо включає набір тестів перевірки телеметрії, які перевіряють, що кожен сервіс генерує траси, метрики та логи, і що вони потрапляють до очікуваних бекендів (Jaeger, Prometheus, OpenSearch). Детальніше див. test/telemetry/README.md.
Область тесту Make target Запускає Повний make run-telemetry-testsПовне розгортання ( make start)Мінімальний make run-telemetry-tests-minimalМін. розгортання ( make start-minimal)Агент make run-telemetry-tests-agenticАгентне розгортання (з агентом, MCP, чатботом) Кожен target збирає тестовий образ з
./test/telemetry, запускає відповідне розгортання, виконує тести, а потім зупиняє демо.make run-telemetry-tests# The demo must be running before you start the tests. docker build -t opentelemetry-demo-telemetry-tests ./test/telemetry docker run --rm --network opentelemetry-demo \ --env-file .env --env-file .env.override \ -e TEST_SCOPE=full \ opentelemetry-demo-telemetry-tests(Опціонально) Запустіть фронтенд end-to-end тести1:
Cypress фронтенд тести запускаються для вже запущеного демо:
make run-frontend-testsdocker compose --env-file .env --env-file .env.override \ -f compose.yaml -f compose.full.yaml \ -f compose.observability.yaml -f compose.extras.yaml \ -f compose.tests.yaml \ run frontendTests
Перевірка роботи вебмагазину та телеметрії
Після того, як образи будуть зібрані та контейнери запущені, ви можете отримати доступ до:
- Вебмагазин: http://localhost:8080/
- Інтерфейс Load Generator: http://localhost:8080/loadgen/
- Інтерфейс конфігуратора Flagd: http://localhost:8080/feature
- Документація телеметрії (генерована Weaver): http://localhost:8080/telemetry/
Наступні доступні при запущеному стеку спостережуваності (тобто не в режимах *-no-o11y):
- Grafana: http://localhost:8080/grafana/
- Інтерфейс користувача Jaeger: http://localhost:8080/jaeger/ui/
- Інтерфейс користувача OpAMP: http://localhost:8080/opamp/
Наступні доступні лише в певних режимах розгортання:
- UI Firepit (режим профілювання): http://localhost:8080/profiles/
- Чатбот (агентний режим): http://localhost:8080/chatbot/
Зміна номера основного порту демо
Стандартно, демонстраційний застосунок запустить проксі для всього трафіку з вебоглядача, привʼязаного до порту 8080. Щоб змінити номер порту, встановіть змінну середовища ENVOY_PORT перед запуском демо.
Наприклад, щоб використовувати порт 80811:
ENVOY_PORT=8081 make startENVOY_PORT=8081 docker compose --env-file .env --env-file .env.override \ -f compose.yaml -f compose.full.yaml \ -f compose.observability.yaml -f compose.extras.yaml \ up --force-recreate --remove-orphans --detach
Використання власного бекенду
Ймовірно, ви хочете використовувати вебмагазин як демонстраційний застосунок для наявного бекенду спостережуваності (наприклад, поточного екземпляра Jaeger, Zipkin або одного з вибраних вами постачальників).
OpenTelemetry Collector можна використовувати для експорту даних телеметрії до кількох бекендів. Колектор у демонстраційному застосунку нашаровує свою конфігурацію з кількох файлів, кожен з яких обʼєднується поверх попереднього. Які файли завантажуються, залежить від того, як ви запускаєте демо:
otelcol-config.yml— базова конфігурація, завжди завантажуєтьсяotelcol-config-full.yml— додає приймачі для сервісів, які працюють лише у повному демо, наприклад Kafkaotelcol-config-observability.yml— підʼєднує вбудовані бекенди (Jaeger, Prometheus та OpenSearch)otelcol-config-extras.yml— ваші власні доповнення, завжди завантажується останньою
make start та make start-minimal завантажують усі чотири файли. Запуск демо без стеку спостережуваності завантажує менше з них, але otelcol-config-extras.yml завжди застосовується останнім, тому ваші зміни мають пріоритет у кожному режимі.
Щоб додати свій бекенд, відкрийте файл src/otelcollector/otelcol-config-extras.yml за допомогою редактора.
Почніть з додавання нового експортера. Наприклад, якщо ваш бекенд підтримує OTLP через HTTP, додайте наступне:
exporters: otlp_http/example: endpoint: <your-endpoint-url>Потім зробіть перевизначення
exportersдля телеметричних конвеєрів, які ви хочете використовувати для вашого бекенду.service: pipelines: traces: exporters: [debug, otlp_grpc/jaeger, span_metrics, otlp_http/example]
При обʼєднанні значень YAML з Collector, обʼєкти обʼєднуються, а масиви замінюються. Конектор span_metrics перетворює трасування в метрики, тому він має бути у масиві exporters трасувань та receivers метрик при перевизначенні цих конвеєрів — відсутність призведе до падіння колектора. Усі інші експортери опціональні: вилучення одного просто зупинить надсилання даних до цього бекенду. Назви експортерів вище по ланцюжку:
- traces:
debug,otlp_grpc/jaeger,span_metrics(обовʼязковий) - metrics:
debug,otlp_http/prometheus - logs:
debug,opensearch
Бекенди постачальників можуть вимагати додавання додаткових параметрів для автентифікації, будь ласка, перевірте їх документацію. Деякі бекенди вимагають різних експортерів, ви можете знайти їх і їх документацію на opentelemetry-collector-contrib/exporter.
Після оновлення otelcol-config-extras.yml, запустіть демо, виконавши make start. Через деякий час ви повинні побачити, як трасування надходять до вашого бекенду.
Зворотний зв’язок
Чи була ця сторінка корисною?
Дякуємо. Ми цінуємо ваші відгуки!
Будь ласка, дайте нам знати як ми можемо покращити цю сторінку. Ми цінуємо ваші відгуки!