トレースデータ管理

最終更新日: 27 年 2023 月 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ポータルで直接行うことができます。

確率的サンプリング

確率的またはヘッドベースのサンプリングでは、パーセンテージベースのサンプリング決定を設定してボリュームを制御できます。 次の例に示すように、LM OTel 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}

次の例は、OpenTelemetry属性プロセッサの抽出アクションを示しています(このアクションには、キー、アクション、およびパターンが必要です)。

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)
  • hoste.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から。

記事上で