属性プロセッサーによるグループ化 🔗
Group by AttributesプロセッサーはOpenTelemetry Collectorのコンポーネントで、スパン、ログレコード、メトリクスデータポイントを、指定された属性に一致するリソースに再関連付けします。その結果、指定された属性に同じ値を持つすべてのスパン、ログレコード、またはメトリクスデータポイントが同じリソースにグループ化されます。
サポートされるパイプラインタイプは、traces
、metrics
、logs
です。詳細は パイプラインでデータを処理する を参照してください。
はじめに 🔗
以下の手順に従って、コンポーネントの設定とアクティベーションを行ってください:
Splunk Distribution of OpenTelemetry Collector をホストまたはコンテナプラットフォームにデプロイします:
次のセクションで説明するように、
groupbyattrs
プロセッサーを設定します。Collector を再起動します。
サンプル構成 🔗
リソースプロセッサーを有効にするには、設定ファイルの processors
セクションに groupbyattrs
を追加します。以下の例のように、スパン、ログレコード、またはメトリクスデータポイントを「グループ化」するために使用する属性キーの配列を指定します:
processors:
groupbyattrs:
keys:
- foo
- bar
keysプロパティは、どの属性キーがグループ化の対象となるかを記述します:
処理されたスパン、ログレコード、およびメトリクスデータポイントが、指定された属性キーの少なくとも1つを持つ場合、これらの属性に同じ値を持つリソースに移動されます。同じ属性を持つリソースが存在しない場合は、リソースが作成されます。
指定された属性キーが処理されたスパン、ログレコード、またはメトリクスデータポイントに存在しない場合、それは変更されることなく、同じリソースに関連付けられたままです。
コンフィギュレーションを完了するには、コンフィギュレーションファイルの service
セクションの任意のパイプラインにプロセッサーを含めます。例:
service:
pipelines:
metrics:
processors: [groupbyattrs]
logs:
processors: [groupbyattrs]
traces:
processors: [groupbyattrs]
コンフィグ仕様については config.go を参照してください。
代表的なユースケース 🔗
プロセッサーを使用して、以下のアクションを実行します:
FluentbitログやPrometheusメトリクスなどの「フラット」なデータフォーマットからリソースを抽出します。
すべてのメトリクスに存在するラベルに基づいて、Prometheus メトリクスを、関連するホストを記述するリソースに関連付けます。
共通の属性を抽出することで、データのパッケージングを最適化。
キーの空のリストが指定された場合、同じ
resource
とInstrumentationLibrary
属性を共有するが、複数のResourceSpans
またはResourceMetrics
またはResourceLogs
の下にある複数のレコード を、単一のResourceSpans
またはResourceMetrics
またはResourceLogs
にコンパクト化します。これは例えば、
groupbytrace
プロセッサーを使用する場合や、データが複数のリクエストで送られてくる場合などに起こります。データをコンパクトにすれば、より少ないメモリで、より効率的に処理され、シリアライズされます。また、例えば、
sapm
エクスポーターを使用すれば、エクスポート要求の数を減らすことができます。詳しくは Splunk APM エクスポーター を参照してください。
Tip
groupbyattrs
プロセッサーと batch
プロセッサーを連続して使用します。一致するリソースやInstrumentationLibraryの下にレコードをまとめることで、データの断片化を減らすことができます。
高度な設定例 🔗
ホストごとにメトリクスをグループ化 🔗
すべて元は同じリソースに関連付けられている、以下のメトリクスを考えてみます:
Resource {host.name="localhost",source="prom"}
Metric "gauge-1" (GAUGE)
DataPoint {host.name="host-A",id="eth0"}
DataPoint {host.name="host-A",id="eth0"}
DataPoint {host.name="host-B",id="eth0"}
Metric "gauge-1" (GAUGE) // Identical to previous Metric
DataPoint {host.name="host-A",id="eth0"}
DataPoint {host.name="host-A",id="eth0"}
DataPoint {host.name="host-B",id="eth0"}
Metric "mixed-type" (GAUGE)
DataPoint {host.name="host-A",id="eth0"}
DataPoint {host.name="host-A",id="eth0"}
DataPoint {host.name="host-B",id="eth0"}
Metric "mixed-type" (SUM)
DataPoint {host.name="host-A",id="eth0"}
DataPoint {host.name="host-A",id="eth0"}
Metric "dont-move" (Gauge)
DataPoint {id="eth0"}
以下の構成を使用して、host.name
属性の値に基づいて、host-A
または host-B
のいずれかにメトリクスを再度関連付けます。
processors:
groupbyattrs:
keys:
- host.name
プロセッサーの出力は次のようになります:
Resource {host.name="localhost",source="prom"}
Metric "dont-move" (Gauge)
DataPoint {id="eth0"}
Resource {host.name="host-A",source="prom"}
Metric "gauge-1"
DataPoint {id="eth0"}
DataPoint {id="eth0"}
DataPoint {id="eth0"}
DataPoint {id="eth0"}
Metric "mixed-type" (GAUGE)
DataPoint {id="eth0"}
DataPoint {id="eth0"}
Metric "mixed-type" (SUM)
DataPoint {id="eth0"}
DataPoint {id="eth0"}
Resource {host.name="host-B",source="prom"}
Metric "gauge-1"
DataPoint {id="eth0"}
DataPoint {id="eth0"}
Metric "mixed-type" (GAUGE)
DataPoint {id="eth0"}
groupbytrace
プロセッサーは以下を実現しています:
gauge-1
メトリクスのDataPoints
は、もともと2つのメトリクス・インスタンスに分割されていたが、出力では統合されています。mixed-type
gauge
と混合型sum
メトリクスのDataPoints
は、DataType
が異なるため、同じメトリクスの下に統合されていません。dont-move
メトリクスDataPoints
はhost.name
属性を持たないため、元のリソースの下に残っています。新しいリソースは、元のリソース(source=」prom」)から属性を継承し、処理されたメトリクス(
host.name="host-A"
またはhost.name="host-B"
)から指定された属性を継承します。新しいリソースに設定された指定されたグルーピング属性は、メトリクス
DataPoints
からも削除されます。この例では示していないが、プロセッサーは、
InstrumentationLibrary
に一致するレコードのコレクションもマージします。
データのコンパクト化 🔗
場合によっては、データがCollectorへの単一リクエストで送られてきたり、groupbytrace
プロセッサーの使用により断片化されたりすることがあります。バッチ処理した後でも、ResourceSpans
または ResourceMetrics
または ResourceLogs
オブジェクトが複数重複している可能性があります。これは、メモリの追加消費、処理コストの増加、非効率的なシリアライズ、またはエクスポート要求の増加につながります。
これを改善するには、groupbyattrs
プロセッサーを使用して、Resource
と InstrumentationLibrary
プロパティを照合してデータをコンパクトにします。
例えば、次のような入力を考えてみます:
Resource {host.name="localhost"}
InstumentationLibrary {name="MyLibrary"}
Spans
Span {span_id=1, ...}
InstumentationLibrary {name="OtherLibrary"}
Spans
Span {span_id=2, ...}
Resource {host.name="localhost"}
InstumentationLibrary {name="MyLibrary"}
Spans
Span {span_id=3, ...}
Resource {host.name="localhost"}
InstumentationLibrary {name="MyLibrary"}
Spans
Span {span_id=4, ...}
Resource {host.name="otherhost"}
InstumentationLibrary {name="MyLibrary"}
Spans
Span {span_id=5, ...}
以下の設定を使用して、Resource
および InstrumentationLibrary
に一致するスパンを再度関連付けます。
processors:
batch:
groupbyattrs:
pipelines:
traces:
processors: [batch, groupbyattrs/grouping]
...
プロセッサーの出力は次のようになります:
Resource {host.name="localhost"}
InstumentationLibrary {name="MyLibrary"}
Spans
Span {span_id=1, ...}
Span {span_id=3, ...}
Span {span_id=4, ...}
InstumentationLibrary {name="OtherLibrary"}
Spans
Span {span_id=2, ...}
Resource {host.name="otherhost"}
InstumentationLibrary {name="MyLibrary"}
Spans
Span {span_id=5, ...}
設定 🔗
次の表は、groupbyattrs
プロセッサーの構成オプションを示します:
内部メトリクス 🔗
groupbyattrs
プロセッサーは、以下の内部メトリクスを記録します:
メトリクス |
説明 |
---|---|
|
属性がグループ化されたスパンの数 |
|
属性がグループ化されていないスパンの数 |
|
スパンで抽出されたグループの分布 |
|
属性がグループ化されたログの数 |
|
属性がグループ化されていないログの数 |
|
ログから抽出されたグループの分布 |
|
属性がグループ化されたメトリクスの数 |
|
属性がグループ化されていないメトリクスの数 |
|
メトリクスのために抽出されたグループの分布 |
トラブルシューティング 🔗
Splunk Observability Cloudをご利用のお客様で、Splunk Observability Cloudでデータを確認できない場合は、以下の方法でサポートを受けることができます。
Splunk Observability Cloudをご利用のお客様
Submit a case in the Splunk Support Portal .
Contact Splunk Support .
見込み客および無料トライアルユーザー様
Splunk Answers のコミュニティサポートで質問し、回答を得る
Splunk #observability ユーザーグループの Slack チャンネルに参加して、世界中の顧客、パートナー、Splunk 社員とのコミュニケーションを図る。参加するには、Get Started with Splunk Community マニュアルの チャットグループ を参照してください。