フェーズ 2: OBI マジック

1. OBI サービスの追加

2 min

docker-compose.yaml に OBI を追加する

Exercise

エディターで docker-compose.yaml を開きます

bash
cd ~/workshop/obi/02-obi-docker
docker-compose down
vim docker-compose.yaml #or editor of choice

ファイルの一番下までスクロールすると、PHASE 2 と書かれたコメントブロックがあります。以下のブロックをそのコメントの直下に貼り付けてください。2スペースのインデントを維持して、他のサービス(frontend:load-generator: など)と揃うようにします

yaml
  obi:
    image: otel/ebpf-instrument:main
    pid: host
    privileged: true
    network_mode: host
    volumes:
      - ./obi-config.yaml:/config/obi-config.yaml
      - /sys/fs/cgroup:/sys/fs/cgroup
    environment:
      OTEL_EBPF_CONFIG_PATH: /config/obi-config.yaml

注意: vim で貼り付ける場合は、貼り付け前に :set paste を使用するとフォーマットが維持されます

ファイルを保存します。

Tip

obi: が2スペースでインデントされていることを確認してください(frontend:load-generator: などと同じレベル)。インデントなしで左端に配置すると、Docker Compose は Additional property obi is not allowed というエラーで拒否します。services: ブロックの内部に配置する必要があります。

各行の説明

機能重要な理由
image: otel/ebpf-instrument:mainOBI コンテナイメージ スタックに追加するのはこれだけです
pid: hostホストの PID 名前空間を共有しますOBI は他のコンテナで実行されているプロセスを確認する必要があります
privileged: trueカーネルレベルのアクセスを許可しますeBPF プログラムはカーネル関数にプローブをアタッチする必要があります
network_mode: hostホストのネットワークスタックを共有しますコンテキスト伝播に必要です – OBI はネットワークレベルでトレースコンテキストを注入します
volumes: ./obi-config.yaml:...サービスディスカバリー設定をマウントしますどのプロセスを計装し、どのような名前を付けるかを OBI に伝えます
volumes: /sys/fs/cgroup:...cgroup ファイルシステムをマウントしますOBI はこれを使用してコンテナ内で実行されているプロセスを検出します
OTEL_EBPF_CONFIG_PATHコンテナ内の設定ファイルを指定します設定用の標準 OBI 環境変数です

OBI の起動

Docker Compose は obi サービスのみが新規であることを検出し、それを起動します。既存のサービスは引き続き実行されます。

bash
docker-compose up -d
Last Modified ·