SignalFlowを使用した受信データの分析

Splunk Observability Cloud UIでSignalFlowを使用すると、チャートとディテクターの分析を改善できます。

UIからのSignalFlowプログラムの実行

Splunk Observability CloudのユーザーインターフェイスからSignalFlowプログラムを追加して、処理されたデータをディテクターやチャートにストリーミングすることができます。

注: SignalFlow API を使用して、SignalFlow プログラムを追加することもできます。「Using the SignalFlow API」を参照してください。

ストリーム・オブジェクトを処理する

SignalFlow プログラムは、ディメンションに沿って編成されたタイムスタンプ値を生成するストリームオブジェクトを処理します。raw メトリック時系列データは分析ジョブにストリーミングされ、SignalFlow を介して指定されたクエリと計算によって新しいストリームが生成されます。たとえば、母集団全体または経時的に計算された統計などがそうです。

ストリームは特定の分析クエリまたは計算に対してローカルであり、複数の異なるジョブが、基盤となる同じメトリック時系列データをクエリする場合があります。ディテクタは、1 つ以上のストリームが関係する条件を評価します。通常は、一定期間のストリーム間の比較を行います。たとえば、ディテクタの条件として、「10 分間の 90% でディスク使用率が 80% を超えている」や「データベースの平均遅延が 5 秒を超えており、データベース呼び出しの数が 1 日の平均の 20% 以上」などがあります。

ストリームオブジェクトの詳細については、「Streams as variables」を参照してください。

カスタム分析の作成

カスタムチャートやディテクタ分析を作成したい場合は、『Splunk Observability Cloud 開発者ガイド』の「SignalFlow を使用したデータ分析」を参照してください。

SignalFlow プログラムを直接実行することもできます。詳細については、『Splunk Observability Cloud 開発者ガイド』の「SignalFlow API」トピックを参照してください。

データの集約と変換

ほとんどの組み込み分析関数は、集計と変換の 2 つの方法で、チャートやディテクタの時系列に対して計算を実行できます。

  • 集約は、時間内の 1 つのインスタンスですべてのデータポイントに作用します。たとえば、時間 t、t+1、t+2 などでの 5 つのサーバーのグループの平均 CPU 使用率などです。集約の出力は単一のメトリック時系列(MTS)であり、各データポイントは特定の期間のすべてのデータポイントの集約を表します。詳細については、「集約」を参照してください。

    追加のオプションである [Group By] は、集約で使用できます。[group-by] フィールドを指定すると、group-by 基準で指定されたプロパティの MTS 共有値が集計されます。たとえば、AWS インスタンスタイプごとにグループ化された平均 CPU 負荷を計算できます。Mean 関数を集約として追加し、AWS インスタンスタイプを group-by 基準として設定します。出力には、AWS インスタンスタイプごとに 1 つの MTS が表示されます。

  • 変換は、時間枠の各 MTS で並行して動作し、各入力時系列に対して 1 つの出力時系列を生成します。たとえば、1 日のローリングウィンドウにおける 5 台のサーバーの平均 CPU 使用率は、5 つの MTS を表示します。各出力値は、過去 24 時間のその MTS の移動平均になります。詳細については、「変換」を参照してください。

    利用可能な 3 種類の変換、移動ウィンドウ、カレンダーウィンドウ、ダッシュボード画面については、以下のセクションを参照してください。チャートでの変換分析の使用例については、「Gain insights through chart analytics」を参照してください。

移動ウィンドウの変換

以下の移動ウィンドウの変換チャートの例では、各線は 4 つのサーバーの平均 CPU 使用率を表しています。灰色の線は、その直前の 1 分間の各データポイントの平均値を表します。マゼンダの線は、直前の 1 時間のローリングウィンドウにおける各データポイントの平均値を表します。

この画像は、ローリングウィンドウの変換チャートです。チャートには 2 つの CPU 使用率関数が表示されています。

ローリングウィンドウ変換の詳細については、「ローリングウィンドウの変換」を参照してください。

カレンダー・ウィンドウの変換

次の例では、SumMeanMaximum、および Minimum 関数を使用して、変換のためにカレンダーウィンドウを設定しています。チャートでは、マゼンダの線は 1 週間の移動ウィンドウにおけるすべてのトランザクションの合計を表しています。緑色の線は、その 1 週間のトランザクションの合計を示しています。これには、その週を通して計算された部分値も含まれます。値は 1 週間にわたって増加し、次の週の初めにリセットされます。

この画像は、カレンダー・ウィンドウの変換チャートです。

カレンダーウィンドウの変換の詳細については、「カレンダーウィンドウの変換」を参照してください。

解像度に関する考察

カレンダーウィンドウを持つ関数をプロットに追加し、現在の時間枠が関数で指定したサイクル長よりも狭い場合、チャートは少なくとも 1 サイクルのデフォルト時間にサイズ変更されます。同時に、時間範囲に関するダッシュボードのオーバーライドは削除されます。この最適化を通知するメッセージが表示されます。最適化を受け入れない場合は、想定するデータを表示するために、時間範囲を手動で変更しなければならない場合があります。

チャートが各カレンダーサイクルの終わりに値を表示するには、サイクルの長さが解像度の倍数でなければなりません。詳しくは、「解像度」を参照してください。

時間範囲とチャート表示の解像度の組み合わせの中には、チャートがサイクルの境界と完全に一致する値を表示する解像度を使用できない場合があります。たとえば、1 日の解像度だとチャートに表示できるデータポイントより多くなってしまう場合、2 日間の解像度を使用する必要があります。これは、プロットされた値が 29 日または 31 日の月の末日と一致しないことを意味します。これは、いずれの値も 2 日の解像度の倍数ではないためです。このような状況は、チャート上の解像度ピルがオレンジ色に変わり、ツールチップにメッセージが表示されることで示されます。この問題を解決するには、表示解像度を変更するか、表示時間範囲を狭めます。

注: カレンダーの時間ウィンドウを変換で使用する場合、チャートの解像度は1時間より細かくできません。

サイクルの長さと開始

サイクルの長さには、時間、日、週、月、四半期のオプションがあります。

ほとんどのサイクルの長さのオプションでは、開始点を指定できます。たとえば、四半期のサイクルの場合、最初の四半期の開始日をデフォルトの 1 月ではなく、2 月に指定できます。例外は 1 時間ごとのサイクルです。時間単位のサイクルは常に 1 時間の最初(0 分)から始まります。

カレンダーのタイムゾーン

カレンダーウィンドウの場合は、カレンダーのタイムゾーンを指定する必要があります。カレンダーのタイムゾーンは、ユーザープロファイルで設定されているビジュアライゼーションタイムゾーンから独立しているチャート単位(またはディテクタ単位)の設定です。カレンダーウィンドウに設定したタイムゾーンによって、選択したカレンダーウィンドウのサイクルの正確な開始と終了が決まります。

たとえば、アメリカ/ロサンゼルスの 1 月は、アジア/東京の 1 月とは異なる時間に始まります。もし Splunk Observability Cloud が 12 月 31 日の UTC 時間午前 0 時付近のタイムスタンプを持つデータポイントを受信した場合、カレンダーのタイムゾーンによって、そのデータポイントが 12 月の計算にカウントされるか、1 月の計算にカウントされるかが決まります。

チャート内のすべてのカレンダーウィンドウ関数が、同じカレンダーのタイムゾーンを使用します。チャートのどのプロット上でも、カレンダーウィンドウ関数を初めて追加すると、プロファイルのビジュアライゼーションタイムゾーンが、カレンダータイムゾーンに使用する値として提案されます。

部分的な値を隠す

Hide partial values 設定を使用すると、サイクルの終了時に計算される最終値のみに関心があるのか、サイクル中に計算された部分値にも関心があるのかどうかに基づいて、カレンダーウィンドウ関数の出力を最適化できます。たとえばサイクルの長さが 1 日の場合、部分値を非表示にすると、毎日 1 つの値だけが表示され、1 日の中で値がどのように変化するかを確認できません。

注: カレンダー・ウィンドウを使用するチャートは1時間より細かい解像度を持つことができないため、サイクルの長さが1時間の場合、このオプションの選択を解除しても効果はありません。

以下の例では、部分値(マゼンタの棒グラフ)を非表示にすることで、1 日単位での値の比較の概要がより明確になっています。部分値(緑色の線)を非表示にしない場合、各日の平均値がどのように変化するかを見ることができます。

この図は、部分的な値を隠したチャートを示しています。

各サイクルの開始時の値は、前のサイクルの最終値を表します。2 月 15 日午前 12 時のマゼンダ列は、2 月 14 日に見られた値の平均値を表しています。2 月 16 日午前 12 時の列は、2 月 15 日の値の平均値を表しているといった具合になります。

注: 単一値チャートは、現在までに報告された最大遅延などの計算を視覚化するのに便利です。これらの数値を適切に表示するには、[Hide partial values] の選択を解除してください。

カレンダー・ウィンドウのタイムシフト

タイムシフト関数は、入力ストリーム内の各 MTS のデータポイントをシフトし、指定された期間でそれらをオフセットします。タイムシフトの一般的な使用例には、一定期間のメトリックの平均値を前の期間の平均値と比較するなどがあります。SignalFlow 関数の詳細については、「timeshift()」を参照してください。

タイムシフトは、部分値が非表示の場合にのみ使用できます。カレンダーウィンドウを使用するときにタイムシフトを有効にすると、前のサイクルの終了時の値が、各カレンダーサイクルの終了時に表示されます。たとえば、サイクルの長さが月で 1 サイクル分タイムシフトした場合、4 月 30 日のデータ ポイントは 3 月 31 日の値を表し、5 月 31 日のデータポイントは 4 月 30 日の値を表します。

注: チャートのタイムシフト機能は、3 月が 2 月より日数が多いというような、可変長のサイクルを認識し、前の間隔の終わりに正しくシフトします。対照的に、スタンドアロンのタイムシフト分析機能は、30 日のような固定幅のシフトを行います。詳しくは、「Use the Timeshift function to understand trends」を参照してください。

ダッシュボード・ウィンドウの変換

次の例では、同じダッシュボードの両方のチャートに、異なるリージョンにあるロードバランサのホストの合計数が表示されています。過去 1 時間のデータに基づくと、東京のリージョンには 2124 のホスト、パリのリージョンには 1772 のホストがあります。

この画像はダッシュボードのウィンドウをチャートで変換したものです。

2 つのチャートの違いは、listChartDemo のチャートにはダッシュボード画面の変換が設定されていないのに対し、listChartDashboardWindow のチャートには設定されていることです。

ダッシュボードの [Time] ピッカーを調整すると、listChartDashboardWindow のチャートだけが、選択した時間範囲に従って値を更新します。たとえば、-12h の時間範囲を選択すると、チャートは過去 12 時間のデータを表示します。

ダッシュボードウィンドウの変換の詳細については、「ダッシュボード画面の変換」を参照してください。

注: ダッシュボード画面の変換をディテクタに適用することはできません。ダッシュボードのウィンドウ変換を使用するチャートから新しいディテクタを作成すると、変換ウィンドウはダッシュボードの現在の時間ウィンドウに最も近いものに更新されます。たとえば、ダッシュボードの現在の時間ウィンドウは 09/01/2023 09:25:00 am to 09/02/2023 07:30:00 am です。このダッシュボードのチャートから新しいディテクタを作成すると、変換ウィンドウは Past day (-1d) になります。

その他の関数

集計と変換を提供する関数に加え、SignalFlowは、値を持つMTSの数をカウントする Count、値の最高または最低N数を表示する TopBottom、時系列をソース別ではなく値別にフィルタリングする機能を提供する Exclude、などの関数を提供します。

他の分析関数と同様に、これらの関数を他の関数と組み合わせて使用して、より高度な計算を生成できます。たとえば、ExcludeSum とともに使用すると、一般的なスプレッドシートアプリケーションで見られる sumif() 関数と同様の結果を得ることができます。

各関数の詳細については、「Splunk Observability Cloud の関数のリファレンス」を参照してください。

SignalFlow では、先行する計算を変数として参照する式を作成できます。たとえば、4xx または 5xx に対する 2xx の HTTP 応答コードの比率を計算できます。