エージェントデプロイメントパターン

コレクターにシグナルを送信し、そこからバックエンドにエクスポートする

エージェントデプロイメントパターンでは、テレメトリーシグナルは次の場所から送信できます。

シグナルは、サイドカーやDaemonSetなど、アプリケーションと並行してまたは同じホストで実行されるコレクターインスタンスに送信されます。

各クライアントサイドのSDKまたはダウンストリームのコレクターは、コレクターインスタンスのアドレスで構成されます。

Decentralized collector deployment concept
  1. アプリケーションでは、SDKがOTLPデータをコレクターに送信するように構成されています。
  2. コレクターは、1つ以上のバックエンドにテレメトリーデータを送信するように構成されています。

エージェントデプロイメントパターンのこの例では、OpenTelemetry Java SDKを使用してメトリクスをエクスポートするようにJavaアプリケーションを手動で計装することから始めます。 デフォルトのOTEL_METRICS_EXPORTERの値であるotlpを含みます。 次に、OTLPエクスポーターをコレクターのアドレスで構成します。 例は次のとおりです。

export OTEL_EXPORTER_OTLP_ENDPOINT=http://collector.example.com:4318

次に、collector.example.com:4318で実行されているコレクターを次のように構成します。

receivers:
  otlp: # アプリケーションがトレースを送信するOTLPレシーバー
    protocols:
      http:
        endpoint: 0.0.0.0:4318

exporters:
  otlp/jaeger: # JaegerはOTLPを直接サポート
    endpoint: https://jaeger.example.com:4317
    sending_queue:
      batch:

service:
  pipelines:
    traces/dev:
      receivers: [otlp]
      exporters: [otlp/jaeger]
receivers:
  otlp: # アプリケーションがトレースを送信するOTLPレシーバー
    protocols:
      http:
        endpoint: 0.0.0.0:4318

exporters:
  prometheusremotewrite: # PRWエクスポーター、メトリクスをバックエンドに取り込む
    endpoint: https://prw.example.com/v1/api/remote_write
    sending_queue:
      batch:

service:
  pipelines:
    metrics/prod:
      receivers: [otlp]
      exporters: [prometheusremotewrite]
receivers:
  otlp: # アプリケーションがトレースを送信するOTLPレシーバー
    protocols:
      http:
        endpoint: 0.0.0.0:4318

exporters:
  file: # ファイルエクスポーター、ログをローカルファイルに取り込む
    path: ./app42_example.log
    rotation:

service:
  pipelines:
    logs/dev:
      receivers: [otlp]
      exporters: [file]

このパターンをエンドツーエンドで調査するには、JavaまたはPythonの例を参照してください。

トレードオフ

エージェントコレクターを使用する主な長所と短所は次のとおりです。

長所:

  • 始めるのが簡単
  • アプリケーションとコレクターの間に、明確な1対1のマッピング

短所:

  • チームとインフラストラクチャリソースのスケーラビリティが制限される
  • 複雑または進化するデプロイメントには柔軟に対応できない