テレメトリーの変換

OpenTelemetryコレクターは、データをベンダーや他のシステムに送信する前に変換するために便利な場所です。 変換は、データ品質、ガバナンス、コスト、およびセキュリティを理由にして頻繁に行われます。

Collector Contrib repositoryには、メトリクス、スパン、ログデータに対して数十の異なる変換をサポートするプロセッサーが用意されています。 以下のセクションでは、よく使用される幾つかのプロセッサーを使い始めるための基本的な例をいくつか紹介します。

プロセッサーの構成、特に高度な変換はコレクターのパフォーマンスに大きな影響を与える可能性があります。

基本的なフィルタリング

プロセッサー: フィルタープロセッサー

フィルタープロセッサーを使用すると、ユーザーはOTTLを使用してテレメトリーをフィルタリングできます。 任意の条件に一致するテレメトリーはドロップされます。

たとえば、サービスapp1、app2、およびapp3からのスパンデータ のみ を許可し、他のすべてのサービスからのデータをドロップするには次のようにします。

processors:
  filter/ottl:
    error_mode: ignore
    traces:
      span:
        - |
        resource.attributes["service.name"] != "app1" and
        resource.attributes["service.name"] != "app2" and
        resource.attributes["service.name"] != "app3"

サービス service1 からのスパンのみをドロップし、他のすべてのスパンを保持するには次のようにします。

processors:
  filter/ottl:
    error_mode: ignore
    traces:
      span:
        - resource.attributes["service.name"] == "service1"

フィルタープロセッサーのドキュメントには、ログとメトリクスのフィルタリングを含むさらに多くの例があります。

属性の追加または削除

プロセッサー: 属性プロセッサーまたはリソースプロセッサー

属性プロセッサーは、メトリクスまたはトレースの既存の属性を更新、挿入、削除、または置換するために使用できます。 たとえば、すべてのスパンにaccount_idという属性を追加する構成は次のとおりです。

processors:
  attributes/accountid:
    actions:
      - key: account_id
        value: 2245
        action: insert

リソースプロセッサーも同じ構成ですが、リソース属性にのみ適用されます。 リソースプロセッサーを使用して、テレメトリーに関連するインフラストラクチャのメタデータを変更します。 たとえば、この例ではKubernetesクラスタ名を挿入します。

processors:
  resource/k8s:
    attributes:
      - key: k8s.cluster.name
        from_attribute: k8s-cluster
        action: insert

メトリクスまたはメトリクスラベルの名前変更

プロセッサー: メトリクス変換プロセッサー

メトリクス変換プロセッサー属性プロセッサーといくつかの機能を共有しますが、名前変更やその他のメトリクス固有の機能もサポートしています。

processors:
  metricstransform/rename:
    transforms:
      - include: system.cpu.usage
        action: update
        new_name: system.cpu.usage_time

メトリクス変換プロセッサーは、複数メトリクス名またはメトリクスラベルに同時に変換ルールを適用するための正規表現もサポートしています。 この例では、すべてのメトリクスのcluster_nameをcluster-nameに変更します。

processors:
  metricstransform/clustername:
    transforms:
      - include: ^.*$
        match_type: regexp
        action: update
        operations:
          - action: update_label
            label: cluster_name
            new_label: cluster-name

リソース属性によるテレメトリーの強化

プロセッサー: リソース検出プロセッサーおよびk8sattributesプロセッサー

これらのプロセッサーを使用すると、関連するインフラストラクチャのメタデータでテレメトリーを強化でき、基礎となるインフラストラクチャがサービスの健全性やパフォーマンスに影響を与えているかどうかをチームが迅速に特定できるようになります。

リソース検出プロセッサーは、テレメトリーに関連するクラウドまたはホストレベルの情報を追加します。

processors:
  resourcedetection/system:
    # クラウド環境に合わせて検出器のリストを変更します
    detectors: [env, system, gcp, ec2, azure]
    timeout: 2s
    override: false

同様に、K8sプロセッサーはPod名、ノード名、またはワークロード名などの関連するKubernetesメタデータでテレメトリーを強化します。 コレクターのPodは、特定のKubernetes RBAC APIへの読み取りアクセスを持つように構成する必要があります。 デフォルトのオプションを使用するには、空のブロックで構成できます。

processors:
  k8sattributes/default:

スパンステータスの設定

プロセッサー: 変換プロセッサー

変換プロセッサーを使用してスパンのステータスを設定します。 次の例では、http.request.status_code属性が400の場合、スパンステータスをOkに設定します。

transform:
  error_mode: ignore
  trace_statements:
    - set(span.status.code, STATUS_CODE_OK) where span.attributes["http.request.status_code"] == 400

変換プロセッサーを使用して、スパン名をその属性に基づいて変更したり、スパン名からスパン属性を抽出したりできます。 例については、変換プロセッサーの構成ファイルの例を参照してください。

高度な変換

変換プロセッサーでは、より高度な属性変換も利用できます。 変換プロセッサーを使用すると、エンドユーザーはOpenTelemetry変換言語を使用して、メトリクス、ログ、トレースの変換を指定できます。