OpenTelemetryコレクタープロセッサの構成

最終更新日: 28 年 2022 月 XNUMX 日

OpenTelemetryコレクターのプロセッサーを使用して、コレクターに送信されるデータを変更および拡張できます。

プロセッサを使用すると、次の機能を活用できます。

  • データサンプリング-LogicMonitorに送信するアプリケーショントレースの割合を選択します
  • データスクラビングとフィルタリング-LogicMonitorに保存したくないデータを削除またはマスクします
  • スパンエイリアシング-スパンの名前を選択した任意の命名規則に変更します
  • カスタムタグ付け-データにさらにコンテキストと情報を添付する

次の確率的サンプリングのように、コレクター構成ファイル内のパイプラインセクションに特定のプロセッサーを含めることができます。

service:
  extensions: [lmextension,health_check]
  pipelines:
    traces:
      receivers : [ otlp ]
      processors: [probablistic_sampling, batch]
      exporters : [otlphttp]
    metrics:
      receivers: [prometheus, hostmetrics]
      exporters: [lmexporter]

データサンプリング

OpenTelemetry Collector構成のサンプリング変更は、確率的(ヘッドベース)またはテールベースの両方のサンプリングのために、LogicMonitorポータルで直接行うことができます。

確率的サンプリング

確率的またはヘッドベースのサンプリングでは、パーセンテージベースのサンプリング決定を設定してボリュームを制御できます。 LogicMonitor OpenTelemetry Collector構成ファイルで、リストされているプロセッサーを見つけて、 sampling_percentage 次の例のように、1〜100の値:

probabilistic_sampler:
    sampling_percentage: 20

詳細については、OpenTelemetryのを参照してください。 確率的サンプリングプロセッサ のドキュメントで詳しく説明されています)。

テールベースのサンプリング

テールベースのサンプリングでは、設定したルールまたは条件に基づいてトレースが処理された後、サンプリングを決定できます。

次のルールまたは条件を設定できます。

  • Numeric_attribute-数値に基づくサンプル(たとえば、データを特定の遅延しきい値より上に維持する)
  • String_attribute-文字列に基づくサンプル(たとえば、特定のキーと値のペアに対応するデータを保持する)
  • Rate_limiting-レートに基づくサンプル(たとえば、上記のヘッドベースのサンプリングと同様)

以下は、テールベースのサンプリングの例です。

tail_sampling:
    decision_wait: 10s
    num_traces: 10000
    policies:
      [
        {
          name: sample_error_http,
          type: numeric_attribute,
          numeric_attribute: {key: http.status_code, min_value: 300, max_value: 500}
        },
        {
          name: policy-2,
          type: string_attribute,
          string_attribute: {key: geo.address,values: [“US”,”CA”]}
        }
      ]

詳細については、OpenTelemetryのを参照してください。 テールサンプリングプロセッサ のドキュメントで詳しく説明されています)。

データスクラビングとフィルタリング

LogicMonitorに保存する前に難読化する必要のある個人識別情報(PII)またはその他のデータがある場合は、取り込んだデータを変更できます。

属性プロセッサは、次のアクションをサポートしています。

  • 挿入-カスタムキーと値のペアのメタデータを特定のスパンに追加します
  • 更新-既存の値を更新または変更します
  • アップサート-キーがすでに存在するかどうかに応じて、キーを挿入または更新します
  • 削除:スパンからキーと値のペアの属性を削除します
  • ハッシュ-既存の値をハッシュ(SHA1)します
  • 抽出-正規表現を使用して値を抽出し、キーをターゲットにします

次の例は、OpenTelemetry属性プロセッサーの挿入、更新、およびアップサートのアクションを示しています(これらのアクションには、キー、アクション、および値、またはfrom_attributeが必要です)。

processors:

  attributes/example:

    actions:

      - key: <key>

        action: {insert, update, upsert}
        value: <value>
        from_attribute: <other key>

次の例は、OpenTelemetry属性プロセッサの削除アクションとハッシュアクションを示しています(これらのアクションにはキーとアクションが必要です)。

processors:

  attributes/example:

    actions:

      - key: <key>
        action: {delete, hash}
The following example displays the extract action for the OpenTelemetry Attributes Processor (This action requires key, action, and pattern):

processors:

  attributes/example:

    actions:
      - key: <key>
        pattern:
        action: extract

詳細については、OpenTelemetryのを参照してください。 属性プロセッサ のドキュメントで詳しく説明されています)。

スパンフィルタリング

サービスとスパン名に基づいて、スパンを含めたり除外したりできます。 サービスとスパン名の両方を同時に提供できますが、両方に一致するスパンのみが含まれる/除外されます。 一致タイプは、厳密パターンまたは正規表現パターンのいずれかです。

次の例は、スパンを含めたり除外したりする方法を示しています。

span/includeexclude:
  include:
    match_type: regexp
    services: ["productcatalog"]
    span_names: ["*Products*"]
  exclude:
    match_type: strict
    span_names: ["/ListProducts"]
  name:
    from_attributes: [net.peer.name]

スパンは、の値に名前が変更されます from_attribute 次の要件を満たしている場合:

  • スパン名に「Products」が含まれています
  • 「ListProducts」という名前ではないスパン
  • 「productcatalog」という名前のサービス

スパンエイリアシング

スパンプロセッサはOpenTelemetryの独立したプロセスであり、スパンエイリアシングをサポートします。 スパンプロセスを使用して、既存のスパン名を変更できます。

次の属性がサポートされています。

  • name-変更するスパンの名前
  • from_attributes-新しいスパン名の作成に使用される値のキーを指定します
  • (オプションの属性) separator-値を分割します

次の例は、スパンプロセッサを使用して、区切り文字を使用して既存の属性値からスパン名を変更する方法を示しています。

processors:
  span:
    name:
      from_attributes: ["http.method", "net.peer.name"]
      separator: "::"

この例では、次のことを実行できます。

  • プロセッサの前のスパン名:「HTTPGET」
  • 入力スパンの属性:{「net.peer.name」:「scientist-name-service」、「http.method」:「GET」}

処理後、新しいスパン名は GET::scientist-name-service.

カスタムタグ付け

トレースデータにさらにコンテキストと情報を添付できます。

コレクターを使用したカスタムタグ付け

スタートアップパラメータを適用することで、特定のコレクタからすべてのスパンにカスタムタグを渡すことができます。 これは、セットアッププロセス内で、または構成ファイルを変更することによって実行できます。

を追加する OTEL_RESOURCE_ATTRIBUTES パラメータを使用すると、次の例に示すように、処理されるすべてのスパンで任意の属性またはタグを設定できます。

OTEL_RESOURCE_ATTRIBUTES="service.name=login"
OTEL_RESOURCE_ATTRIBUTES="application.name=logicmonitor"

トレースのカスタムタグ付け

インストルメンテーション言語に関係なく、トレースを既存の監視対象リソースにマップする場合は、実装中に次のカスタムタグを指定する必要があります。

  • IP 
  • resource.type (これはに設定する必要があります kubernetes-podcloudまたは host)
  • host.name (これはKubernetesのポッド名である必要があります)

トレースで静的にタグをキャプチャすることは、LogicMonitor内のマッピングにとって重要ですが、データの探索と検索中に、より多くの相関関係とコンテキストを見つけるために、トレースデータに追加の属性を含めることができます。 たとえば、顧客層、製品カテゴリ、地理データなどのメタデータをキャプチャすると、発生している可能性のある問題をよりよく理解するための重要なコンテキストが提供されます。

手動で計測されたスパンに、キーと値のペアまたはペアのグループを設定できます。 以下はJavaの例です。

Span span = tracer.spanBuilder("/resource/path").setSpanKind(SpanKind.CLIENT).startSpan();
span.setAttribute("http.method", "GET");
span.setAttribute("http.url", url.toString());

詳細については、OpenTelemetryのを参照してください。 スパン属性 及び トレースセマンティックバージョン のドキュメントで詳しく説明されています)。

記事上で