Splunk Observability Cloudのヒストグラムメトリクス

Splunk Observability Cloud は、ヒストグラムをネイティブにサポートしています。OpenTelemetry を通して Splunk Observability Cloud に送信したすべてのヒストグラムメトリクスデータは、チャートやアラート、その他の機能にフィードされます。

Splunk Observability Cloud はヒストグラムデータをサポートしています。インストルメントされたアプリケーションやサービスから Splunk Observability Cloud に送信したヒストグラムメトリクスデータを使用して、チャートやディテクタなどを作成できます。

ヒストグラムを理解する

ヒストグラムは、観測値の分布を表します。ヒストグラムには、数値の連続値が必要です。連続値の例には、時間、サイズ、温度などがあります。次のグラフは、応答時間のヒストグラムをミリ秒単位で視覚的に表現したものです。

5つの間隔がある応答時間のヒストグラムのサンプル。

ヒストグラムは、データをバケットに保存します。これは、数値境界を持つ隣接間隔です。前のヒストグラムのバケットまたはバーの間隔は 100 ミリ秒です。各バーのサイズは、各間隔内の観測データの数によって決定されます。バーが大きいほど、間隔内に収まるデータポイントが多くなります。

すべてのヒストグラムで、観測データの合計数、最小値と最大値、すべての値の合計、平均値、および離散的なパーセンタイル値を計算できます。Splunk Observability Cloud は、ヒストグラムの SignalFlow 関数を提供し、これを使用して、ヒストグラムのカスタマイズやデータの計算の実行に使用できます。

ヒストグラムは、さまざまなデータセットを一目で比較し、他の方法では検出が難しい場合があるデータの傾向を特定するのに役立ちます。たとえば、ヒストグラムは、「昨日のデータベースの応答時間の 90 パーセンタイルを占めていたのは何でしたか」などの質問に答えることができます。

ヒストグラムメトリクスの使用時期

ヒストグラムは、他のメトリクスでは再現するのが難しい方法でデータを要約できます。ヒストグラムバケットを使用すると、データセット全体を分析してすべてのデータ ポイントを表示することなく、時間の経過に伴う連続データの分布を調べることができます。ヒストグラムでは、バケットとともに、複数の統計情報を単一のデータポイント(summinmaxcount)に組み合わせられます。

サービスレベル目標(SLO)

ヒストグラムは、パフォーマンスおよび可用性のサービスレベル目標(SLO)を表すのに特に適しています。可用性 SLO の例としては、全リクエストのパーセンタイル n が特定の時間未満で処理されるかどうかや、アプリの画面のパーセンタイル n が正常にロードされるかどうかをチェックすることが挙げられます。

単一のパーセンタイルまたは分位値を対象とするメトリクスとは異なり、ヒストグラムには、単一のメトリクスで追跡する必要があるパーセンタイルまたは分位値が含まれます。これにより、最初の検出後にデータを詳しく調査することが容易になります。たとえば、応答時間の 99 パーセンタイルでアラートを受け取った場合、ヒストグラムを使用して他のパーセンタイルを調べることができます。

詳細については、「Splunk Observability Cloud におけるサービスレベル目標(SLO)管理の概要」を参照してください。

計算されたメトリクスの代わりのヒストグラム

ヒストグラムには、インフラストラクチャを使用して計算する代わりに、Splunk Observability Cloud でパーセンタイルやその他の統計情報を計算するために使用できるデータが含まれています。ヒストグラムを送信すると、送信される MTS も少なくなるため、サブスクリプションの使用量が減少します。

たとえば、service.response_time.upper_90service.response_time.upper_95 メトリクスを送信して、インフラストラクチャの主要サービスの応答時間を 90 パーセンタイルと 95 パーセンタイルで追跡する場合、レスポンスタイムの分布全体のヒストグラムデータを送信できるため、2 つの別々の MTS を送信する必要がなくなります。

明示的バケットヒストグラム

明示的なバケットヒストグラムは、事前定義されたバケット境界を持つヒストグラムです。バケットの境界を自分で定義することの利点は、自分の状況で意味のある制限を使えることです。

例えば、以下の Java コードは、バケットの境界を明示した OpenTelemetry ヒストグラムを作成します:

void exampleWithCustomBuckets(Meter meter) {
   DoubleHistogramBuilder originalBuilder = meter.histogramBuilder("people.ages");
   ExtendedLongHistogramBuilder builder = (ExtendedLongHistogramBuilder) originalBuilder.ofLongs();
   List<Long> bucketBoundaries = Arrays.asList(0L, 5L, 12L, 18L, 24L, 40L, 50L, 80L, 115L);
   LongHistogram histogram =
      builder
            .setAdvice(advice -> advice.setExplicitBucketBoundaries(bucketBoundaries))
            .setDescription("A distribution of people's ages")
            .setUnit("years")
            .build();
   addDataToHistogram(histogram);
}
注: 現在、Splunk Observability Cloud は明示的なバケットヒストグラムのみをサポートしています。

ヒストグラムデータをSplunk Observability Cloudに取り込む

ヒストグラムデータを Splunk Observability Cloud に取り込む方法と、既存のレポート要素を移行する方法については、「ヒストグラムデータをSplunk Observability Cloudに取り込む」を参照してください。