Docker デプロイ

前提条件

  • Docker
  • Docker Compose v2.0.0+
  • Make(オプション)
  • アプリケーション用に 6 GB の RAM(または最小モードを使う場合は約 3 GB)
  • 14 GB のディスク容量

デモの取得と実行

  1. デモリポジトリをクローンしてください。

    git clone https://github.com/open-telemetry/opentelemetry-demo.git
    
  2. デモフォルダに移動します。

    cd opentelemetry-demo/
    
  3. デモを起動1します。

    make start
    
    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
    

    デプロイモード

    デモはいくつかのデプロイモードに対応しています。 デフォルトの make start はすべてのサービスとオブザーバビリティスタックを含むフルデモを実行します。 他のモードではリソース使用量を削減したり、特定のコンポーネントを除外したりできます。

    モードMake ターゲット説明
    Fullmake startすべてのサービスとオブザーバビリティバックエンド(デフォルト)
    Minimalmake start-minimalKafka とそれに依存するサービス(accountingfraud-detectionkafka)を除外し、メモリ使用量を約 3 GB に削減
    No observabilitymake start-no-o11yオブザーバビリティバックエンド(Jaeger、Grafana、Prometheus、OpenSearch)なしですべてのサービスを実行
    Minimal, no observabilitymake start-minimal-no-o11yオブザーバビリティバックエンドなしの最小サービス
    Profilingmake start-profilingeBPF プロファイラーとプロファイリングデータ用の Firepit UI を含むフルモード
    Agenticmake start-agenticAI エージェント、MCP サーバー、デモ操作用チャットボットを含むフルモード

    たとえば、最小モードでデモを起動するには以下を実行します。

    make start-minimal
    
    docker 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-agentic
    
    docker 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/ でチャットボット UI が利用可能になります。 デフォルトではエージェントは記録済みの LLM レスポンスを再生する(USE_VCR=True)ため、API キーは不要です。 実際の LLM と対話するには、.env.overrideLLM_BASE_URLLLM_MODELAPI_KEY を設定してください。

継続的プロファイリングで実行

eBPF プロファイラーと Firepit プロファイリング UI を追加するには1以下を実行します。

make start-profiling
docker 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/ で確認できます。

  1. (オプション)テレメトリーサニティテストを実行します。

    デモには、各サービスがトレース、メトリクス、ログを生成し、期待されるバックエンド(Jaeger、Prometheus、OpenSearch)に到達していることを検証するテレメトリーサニティテストスイートが含まれています。 詳細は test/telemetry/README.md を参照してください。

    テストスコープMake ターゲット起動内容
    Fullmake run-telemetry-testsフルデプロイ(make start
    Minimalmake run-telemetry-tests-minimal最小デプロイ(make start-minimal
    Agenticmake run-telemetry-tests-agenticAgentic デプロイ(エージェント、MCP、チャットボット付き)

    各ターゲットは ./test/telemetry からテストイメージをビルドし、対応するデプロイを起動してテストを実行した後、デモを停止します。

    make run-telemetry-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
    
  2. (オプション)フロントエンドのエンドツーエンドテストを実行1します。

Cypress フロントエンドテストは、起動済みのデモに対して実行します。

make run-frontend-tests
docker 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

ウェブストアとテレメトリーの確認

イメージがビルドされ、コンテナが開始されると以下にアクセスできるようになります。

以下はオブザーバビリティスタックが実行中の場合(*-no-o11y モード以外)に利用可能です。

以下は特定のデプロイモードでのみ利用可能です。

デモのプライマリーポート番号の変更

デフォルトでは、デモアプリケーションは 8080 ポートにバウンドされたすべてのブラウザのトラフィックに対してプロキシを開始します。 ポート番号を変更するには、デモを開始する前に環境変数 ENVOY_PORT を設定してください。

  • 次の設定は 8081 ポートを利用する場合の例です1

    ENVOY_PORT=8081 make start
    
    ENVOY_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 はテレメトリーデータを複数のバックエンドに送信するのに利用可能です。 デモアプリケーションの Collector は複数のファイルから設定を読み込み、それぞれ前のファイルの上にマージします。 どのファイルが読み込まれるかは、デモの起動方法によって異なります。

  • otelcol-config.yml — ベースの設定、常に読み込まれる
  • otelcol-config-full.yml — Kafka などフルデモでのみ実行されるサービス用のレシーバーを追加
  • otelcol-config-observability.yml — バンドルされたバックエンド(Jaeger、Prometheus、OpenSearch)を接続
  • otelcol-config-extras.yml — カスタマイズ用の独自の追加設定、常に最後に読み込まれる

make startmake start-minimal はこれら4つのファイルをすべて読み込みます。 オブザーバビリティスタックなしでデモを起動すると読み込まれるファイルは少なくなりますが、otelcol-config-extras.yml は常に最後に適用されるため、どのモードでもカスタマイズが優先されます。

あなたのバックエンドに追加するために、エディターで src/otel-collector/otelcol-config-extras.yml ファイルを開いてください。

  • 新しいエクスポーターを追加することで始めます。 たとえば、もしあなたのバックエンドが OTLP over HTTP をサポートしているのであれば、以下を追加してください。

    exporters:
      otlp_http/example:
        endpoint: <your-endpoint-url>
    
  • そして、exporters をあなたのバックエンドに使いたいテレメトリーパイプラインに上書きしてください。

    service:
      pipelines:
        traces:
          exporters: [debug, otlp_grpc/jaeger, span_metrics, otlp_http/example]
    

ベンダーのバックエンドは認証のために追加のパラメーターを必要とするかもしれません。ドキュメントを確認してください。 一部のバックエンドは異なるエクスポーターが必要です。それらのエクスポーターとドキュメントについて opentelemetry-collector-contrib/exporter で入手できます。

otelcol-config-extras.yml を更新した後に、make start を実行してデモを開始してください。 しばらくして、あなたのバックエンドにトレースが流れるのも確認できるはずです。


  1. docker-compose は非推奨です. 詳細は、 Migrate to Compose V2 を確認してください。 ↩︎ ↩︎ ↩︎ ↩︎ ↩︎