Phase 0: Python ウォームアップ

2. OBI でインストルメントする

2 min

実行中のアプリにコードを一行も変更せずに APM トレーシングを追加します。

OBI のダウンロード

GitHub リリースページ からビルド済みの OBI バイナリをダウンロードします。

bash
cd ~/workshop/obi/01-obi-python

sudo env \
  OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://ingest.${REALM}.signalfx.com:443" \
  OTEL_EXPORTER_OTLP_TRACES_PROTOCOL="grpc" \
  OTEL_EXPORTER_OTLP_HEADERS="X-SF-Token=${ACCESS_TOKEN}" \
  OTEL_SERVICE_NAME="warmup-app" \
  OTEL_RESOURCE_ATTRIBUTES="deployment.environment=ebpf-bare-app,host.name=${INSTANCE}" \
  OTEL_EBPF_OPEN_PORT=5150 \
  ./obi

OBI の実行

Exercise

別のターミナルで、sudo を使って OBI を実行します。3つのプレースホルダーを前のステップで確認した realm、token、hostname に置き換えてください(完了まで1〜2分かかる場合があります)。

bash
cd ~/workshop/obi/01-obi-python

sudo env \
  OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://ingest.${REALM}.signalfx.com:443" \
  OTEL_EXPORTER_OTLP_TRACES_PROTOCOL="grpc" \
  OTEL_EXPORTER_OTLP_HEADERS="X-SF-Token=${ACCESS_TOKEN}" \
  OTEL_SERVICE_NAME="warmup-app" \
  OTEL_RESOURCE_ATTRIBUTES="deployment.environment=ebpf-bare-app,host.name=${INSTANCE}" \
  OTEL_EBPF_OPEN_PORT=5150 \
  ./obi

各変数の説明

変数目的
sudoeBPF プローブには root/カーネルアクセスが必要です
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTSplunk の OTLP トレース取り込み用の完全な URL です。シグナルごとの環境変数はこの URL にそのまま送信します。ベースの OTEL_EXPORTER_OTLP_ENDPOINT/v1/traces を付加しますが、Splunk のパスとは一致しません
OTEL_EXPORTER_OTLP_HEADERSSplunk の認証ヘッダーです
OTEL_SERVICE_NAMESplunk APM に表示されるサービス名です
OTEL_RESOURCE_ATTRIBUTESすべてのトレースに deployment.environmenthost.name を設定し、自分のデータでフィルタリングできるようにします
OTEL_EBPF_OPEN_PORTポート 5150 でリッスンしているプロセスをインストルメントするよう OBI に指示します

Note

OBI のログに failed to upload metrics: 404 Not Found のような警告が表示される場合があります。これは想定どおりです。Splunk の直接取り込みには標準的な OTLP メトリクスエンドポイントがありません。トレースは正常にエクスポートされます。Phase 2 では、Collector がトレースとメトリクスの両方を適切に処理します。

トラフィックの生成

最初のターミナルに戻り、いくつかのリクエストを生成します。

bash
for i in $(seq 1 20); do curl -s "http://localhost:5150/hello"; sleep 1; done

注意: 404 エラーが発生した場合は、curl している URL の末尾に \ が付加されていないか確認してください。一部のターミナルでは ; がエスケープされ、無効な URL になることがあります

Last Modified ·