コンテンツにスキップ

共通設定


このページでは、アプリケーションと DataKit を同じホストに配置する例で、Beacon の受信側設定を説明します。別ホストやコンテナに配置する場合は、127.0.0.1 をアプリケーションから到達できる DataKit のアドレスに置き換え、DataKit のリッスンアドレスを調整してください。

DataKit コレクターの有効化

まず DataKit をインストールし、対象のワークスペースに接続されていることを確認します。標準のインストール先では、OpenTelemetry のサンプル設定を次のようにコピーします。

sudo cp /usr/local/datakit/conf.d/samples/opentelemetry.conf.sample \
  /usr/local/datakit/conf.d/opentelemetry.conf

ファイルを編集し、次の受信設定を保持してください。同じ設定がすでにある場合は既存の設定を変更し、コレクターを重複して追加しないでください。

[[inputs.opentelemetry]]
  [inputs.opentelemetry.http]
    http_status_ok = 200
    trace_api = "/otel/v1/traces"
    metric_api = "/otel/v1/metrics"
    logs_api = "/otel/v1/logs"
  [inputs.opentelemetry.grpc]
    addr = "127.0.0.1:4317"

設定後に DataKit を再起動します。HTTP は DataKit HTTP サービスのポートを使用し、既定値は 9529 です。別ホストから接続する場合は、HTTP サービスのリッスンアドレスと gRPC の addr も調整し、ネットワークポリシーでアクセス範囲を制限してください。Kubernetes の設定と全パラメーターは OpenTelemetry コレクターを参照してください。

サービス識別と OTLP パラメーター

環境変数 説明 例
OTEL_SERVICE_NAME 安定した論理サービス名 order-service
OTEL_RESOURCE_ATTRIBUTES カンマ区切りのリソース属性 env=prod,version=1.0.0
OTEL_EXPORTER_OTLP_ENDPOINT 共通の OTLP ベースアドレス http://127.0.0.1:4317
OTEL_EXPORTER_OTLP_PROTOCOL 転送プロトコル grpc または http/protobuf
OTEL_EXPORTER_OTLP_HEADERS カンマ区切りのリクエストヘッダー。受信側の設定と一致させます。 x-tenant=tenant-a

DataKit に送信する場合は、まず env と version で環境とバージョンを識別することを推奨します。ほかのカスタムリソース属性をタグとして保持するには、OpenTelemetry コレクターの customer_tags 許可リストに追加してください。属性名の . は _ に変換されます。

export OTEL_SERVICE_NAME=order-service
export OTEL_RESOURCE_ATTRIBUTES=env=prod,version=1.0.0
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4317
export OTEL_SERVICE_NAME=order-service
export OTEL_RESOURCE_ATTRIBUTES=env=prod,version=1.0.0
export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:9529/otel

共通の HTTP アドレスには、シグナルに応じて /v1/traces、/v1/metrics、/v1/logs が追加されます。DataKit の HTTP アドレスでは /otel プレフィックスを保持してください。DataKit の OTLP/HTTP は Protobuf のみをサポートするため、http/protobuf を使用します。

OTEL_EXPORTER_OTLP_TRACES_ENDPOINT など、シグナル専用の変数は共通アドレスより優先されます。シグナル専用変数の HTTP アドレスには、http://127.0.0.1:9529/otel/v1/traces のような完全なパスを指定してください。gRPC アドレスには HTTP パスを追加しないでください。

これらの設定は、実際のアプリケーションプロセスに渡してください。systemd、コンテナ、PHP-FPM は現在の端末の環境を引き継ぐとは限りません。設定後はアプリケーションを再起動します。認証情報はデプロイ基盤の Secret から注入し、リポジトリに保存しないでください。

Profile と Security

  • Profile:先に DataKit Profile コレクターを有効にします。アップロード先は http://127.0.0.1:9529/profiling/v1/input です。Java は JFR、Python と Node.js は pprof を使用します。詳細は各言語の接続ガイドを参照してください。
  • Security:既定では無効です。対応する言語では既存のエージェントを使用し、OTLP Logs で送信します。Security に従ってランタイムの対象範囲とエクスポート設定を行い、「ログ」でレコードを確認してください。

接続の確認

  1. アプリケーションの実行環境で次のコマンドを実行し、DataKit HTTP サービスに到達できることを確認します。この確認では、ポート 4317 やコレクターの有効化状態は検証しません。

    curl -f http://127.0.0.1:9529/v1/ping
    
  2. 対応する言語のガイドに従ってアプリケーションを起動し、エージェントが読み込まれ、OTLP エクスポートエラーがないことを確認します。

  3. 対応する Web フレームワーク、HTTP クライアント、データベースを経由するアプリケーションの API にアクセスして、実際のリクエストを発生させます。
  4. Guance の「APM > トレース」で直近の時間範囲を選び、service でサービス名を絞り込みます。メトリクスが表示されるまで、少なくとも 1 回のエクスポート間隔を待ってください。
  5. Profile を有効にした場合は、収集周期を超えてアプリケーションを実行し、「APM > Profiling」でサービス名を指定して確認します。Security を有効にした場合は、「ログ」で対象サービスのレコードを確認します。

データが見つからない場合は、トラブルシューティングを参照してください。

フィードバック

このページは役に立ちましたか?