スパンメトリクスコネクター 🔗
Splunk Distribution of the OpenTelemetry Collectorは、スパンメトリクスコネクターを使用して、スパンデータからリクエスト、エラー、継続時間(R.E.D) OpenTelemetryメトリクスを集計します。
エクスポーターとして、サポートされるパイプラインタイプは traces
です。レシーバーとして、サポートされるパイプラインタイプは metrics
です。詳細は パイプラインでデータを処理する を参照してください。
概要 🔗
コネクターはスパンデータをプルし、リクエスト、エラー、期間(R.E.D OpenTelemetry メトリクスに集計します。
リクエスト 🔗
リクエストカウントは、 エラーを含む一意のディメンションセットごとに見られるスパンの数として計算されます。例えば、service.name
および span.name
のコールカウントだけを表示したい場合、複数のメトリクスを集計できます。
calls{service.name="shipping",span.name="get_shipping/{shippingId}",span.kind="SERVER",status.code="Ok"}
エラー 🔗
エラーカウントは、エラーステータスコードメトリクスディメンションを持つ リクエストカウントから計算されます。
calls{service.name="shipping",span.name="get_shipping/{shippingId},span.kind="SERVER",status.code="Error"}
期間 🔗
期間は、スパンの開始時間と終了時間の差から計算され、それぞれ一意の設定されたディメンションの関連する期間ヒストグラムの時間バケットに挿入されます。
duration{service.name="shipping",span.name="get_shipping/{shippingId}",span.kind="SERVER",status.code="Ok"}
メトリクスの共通ディメンション 🔗
各メトリクスは、すべてのスパンで共通であるため、少なくとも以下のディメンションを持ちます:
service.name
span.name
span.kind
status.code
はじめに 🔗
以下の手順に従って、コンポーネントの設定とアクティベーションを行ってください:
Splunk Distribution of the OpenTelemetry Collector をホストまたはコンテナプラットフォームにデプロイします:
次のセクションで説明するように、コネクターを設定します。
Collector を再起動します。
サンプル構成 🔗
To activate the connector, add spanmetrics
to the connectors
section of your configuration file.
例:
receivers:
nop:
exporters:
nop:
connectors:
spanmetrics:
histogram:
explicit:
buckets: [100us, 1ms, 2ms, 6ms, 10ms, 100ms, 250ms]
dimensions:
- name: http.method
default: GET
- name: http.status_code
exemplars:
enabled: true
exclude_dimensions: ['status.code']
dimensions_cache_size: 1000
aggregation_temporality: "AGGREGATION_TEMPORALITY_CUMULATIVE"
metrics_flush_interval: 15s
metrics_expiration: 5m
events:
enabled: true
dimensions:
- name: exception.type
- name: exception.message
resource_metrics_key_attributes:
- service.name
- telemetry.sdk.language
- telemetry.sdk.name
設定を完了するには、設定ファイルの service
セクションで、コネクターを traces
パイプラインのエクスポーターとして、また metrics
パイプラインのレシーバーとして含めます。
例:
service:
pipelines:
traces:
receivers: [nop]
exporters: [spanmetrics]
metrics:
receivers: [spanmetrics]
exporters: [nop]
設定オプション 🔗
オプションで以下の設定が可能です:
histogram
。デフォルトではexplicit
です。これを使用して、スパンの継続時間測定から計算された記録するヒストグラムのタイプを設定します。explicit
またはexponential
のいずれかでなければなりません。disable
。デフォルトではfalse
です。すべてのヒストグラムメトリクスを無効にします。unit
。デフォルトではms
です。期間測定値を記録するための時間単位で、スパンの期間測定値から計算されます。指定可能な値はms
またはs
です。explicit
:buckets
。期間ヒストグラムの時間バケットを定義する期間のリスト。デフォルトのバケット:[2ms, 4ms, 6ms, 8ms, 10ms, 50ms, 100ms, 200ms, 400ms, 800ms, 1s, 1400ms, 2s, 5s, 10s, 15s]
。
exponential
:max_size
。デフォルトでは160
です。正負の数値範囲ごとのバケットの最大数。
dimensions
。上記で定義したデフォルトディメンションと一緒に追加するディメンションのリスト。各追加ディメンションは、
ip
、host.name
、region
など、スパンの属性コレクションまたはリソース属性(プロセスタグ)で検索される名前で定義されます。スパンに
named
属性がない場合、オプションで提供されるデフォルトが使用されます。デフォルトが指定されていない場合、このディメンションはメトリクスから除外されます。
exclude_dimensions
。ディメンションのデフォルトセットから除外するディメンションのリスト。メトリクスから不要なデータを除外するために使用します。dimensions_cache_size
。デフォルトでは1000
です。Collector のメモリ使用率を向上させるためにディメンションを格納するキャッシュのサイズ。正の数でなければなりません。resource_metrics_cache_size
。デフォルトでは1000
です。サービスのメトリクスを保持するキャッシュのサイズ。これは、メモリリークを回避し、メトリクスのタイムスタンプを正しくリセットするための累積的な一時性に主に関係します。aggregation_temporality
。デフォルトではAGGREGATION_TEMPORALITY_CUMULATIVE
です。生成されるメトリクスの集計の時間性を定義します。指定できる値はAGGREGATION_TEMPORALITY_CUMULATIVE
またはAGGREGATION_TEMPORALITY_DELTA
です。namespace
。生成されるメトリクスの名前空間を定義します。名前空間を指定すると、生成されるメトリクス名にプリフィックスnamespace.
が追加されます。metrics_flush_interval
。デフォルトでは60
です。生成されるメトリクスのフラッシュ間隔を定義します。metrics_expiration
。デフォルトでは0
です。有効期限をtime.Duration
と定義します。この期限を過ぎると、新しいスパンを受信しなくても、メトリクスはエクスポートされなくなります。0
に設定すると、メトリクスは期限切れになりません。exemplars
。これらのツールを使用して、メトリクスに模範解答を添付する方法を設定します。enabled
。デフォルトではfaulse
です。これを有効にすると、すべてのメトリクスにスパンが Exemplars として追加されます。Exemplars は、1 回のフラッシュ間隔の間だけ保持されます。
events
。イベントメトリクスの設定に使用します。enabled
。デフォルトではfalse
です。これを有効にすると、イベントメトリクスが追加されます。dimensions
:events
が有効な場合は必須です。イベントメトリクスのディメンションとして追加するスパンのイベント属性のリストで、スパンとリソース属性の共通ディメンションと設定されたディメンションの上に含まれます。
resource_metrics_key_attributes
。リソースメトリクスキーマップハッシュを生成するために使用されるリソース属性をフィルターします。リソース属性(プロセス ID など)を変更するとカウンターメトリクスが壊れる場合に使用します。
Span Metricsプロセッサーからスパンメトリクスコネクターへの移行 🔗
spanmetrics
コネクターは、スパンプロセッサー の移植ですが、複数の改良と変更点があります。これは、スパンメトリクスコネクターを OpenTelemetry 仕様に近づけ、エクスポーターのロジックに依存しないコンポーネントにするためです。
このコネクターには以下の変更が加えられています:
operation
メトリクス属性の名前がspan.name
に変更されました。latency
ヒストグラムのメトリクス名がduration
に変更されました。生成されるメトリクス名から
_total
メトリクスのプリフィックスが削除されました。Prometheus 特有のメトリクスラベルのサニタイズは廃止されました。
その他の改善点には以下が含まれます:
スパン期間の測定記録に、OTel 指数ヒストグラムのサポートを追加しました。
ミリ秒と秒のヒストグラム単位のサポートを追加しました。
メトリクスリソーススコープ属性の生成のサポートを追加しました。
spanmetrics
コネクターは、スパンリソーススコープの数に対応する数のメトリクスリソーススコープを生成するため、より多くのメトリクスを生成します。これまで、spanmetrics
は単一のメトリクスリソーススコープを生成していました。
スパンメトリクスコネクターを Prometheusコンポーネントで使用する 🔗
spanmetrics
コネクターは、Prometheusレシーバー などの Prometheus エクスポーターコンポーネントで使用できます。
エクスポーターの機能によっては、例えば、target_info
メトリクスを生成するためには、入力されるスパンリソーススコープ属性に、service.name
および service.instance.id
属性が含まれている必要があります。
prometheusremotewrite
エクスポーターで spanmetrics
コネクターを使う例を見てみましょう:
receivers:
otlp:
protocols:
http:
grpc:
exporters:
prometheusremotewrite:
endpoint: http://localhost:9090/api/v1/write
target_info:
enabled: true
connectors:
spanmetrics:
namespace: span.metrics
service:
pipelines:
traces:
receivers: [otlp]
exporters: [spanmetrics]
metrics:
receivers: [spanmetrics]
exporters: [prometheusremotewrite]
これにより、spanmetrics
コネクターが、受信したスパンからメトリクスを生成し、それらのメトリクスを Prometheus Remote Write エクスポーターにエクスポートするように設定されます。target_info
メトリクスは各リソーススコープに対して生成され、OpenTelemetry メトリクス名と属性は Prometheus の命名規則に準拠するように正規化されます。
例えば、生成されたコール OTel 合計メトリクスは、複数の Prometheus calls_total
(カウンタータイプ) 時系列と target_info
時系列をもたらすことができます。以下を参照してください:
target_info{job="shippingservice", instance="...", ...} 1
calls_total{span_name="/Address", service_name="shippingservice", span_kind="SPAN_KIND_SERVER", status_code="STATUS_CODE_UNSET", ...} 142
トラブルシューティング 🔗
Splunk Observability Cloudをご利用のお客様で、Splunk Observability Cloudでデータを確認できない場合は、以下の方法でサポートを受けることができます。
Splunk Observability Cloudをご利用のお客様
Splunk サポートポータル でケースを送信する
Splunkサポート に連絡する
見込み客および無料トライアルユーザー様
Splunk Answers のコミュニティサポートで質問し、回答を得る
Join the Splunk #observability user group Slack channel to communicate with customers, partners, and Splunk employees worldwide. To join, see Chat groups in the Get Started with Splunk Community manual.