SignalFlowを使用した受信データの分析
Splunk Observability Cloud UIでSignalFlowを使用すると、チャートとディテクターの分析を改善できます。
UIからのSignalFlowプログラムの実行
Splunk Observability CloudのユーザーインターフェイスからSignalFlowプログラムを追加して、処理されたデータをディテクターやチャートにストリーミングすることができます。
-
ディテクタの編集時に SignalFlow プログラムを編集するには、「アラートをトリガーするディテクタの作成」を参照してください。
-
チャートの編集時に SignalFlow 関数を使用するには、「Splunk Observability Cloud の関数のリファレンス」を参照してください。
ストリーム・オブジェクトを処理する
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 時間のローリングウィンドウにおける各データポイントの平均値を表します。
ローリングウィンドウ変換の詳細については、「ローリングウィンドウの変換」を参照してください。
カレンダー・ウィンドウの変換
次の例では、Sum、Mean、Maximum、および Minimum 関数を使用して、変換のためにカレンダーウィンドウを設定しています。チャートでは、マゼンダの線は 1 週間の移動ウィンドウにおけるすべてのトランザクションの合計を表しています。緑色の線は、その 1 週間のトランザクションの合計を示しています。これには、その週を通して計算された部分値も含まれます。値は 1 週間にわたって増加し、次の週の初めにリセットされます。
カレンダーウィンドウの変換の詳細については、「カレンダーウィンドウの変換」を参照してください。
解像度に関する考察
カレンダーウィンドウを持つ関数をプロットに追加し、現在の時間枠が関数で指定したサイクル長よりも狭い場合、チャートは少なくとも 1 サイクルのデフォルト時間にサイズ変更されます。同時に、時間範囲に関するダッシュボードのオーバーライドは削除されます。この最適化を通知するメッセージが表示されます。最適化を受け入れない場合は、想定するデータを表示するために、時間範囲を手動で変更しなければならない場合があります。
チャートが各カレンダーサイクルの終わりに値を表示するには、サイクルの長さが解像度の倍数でなければなりません。詳しくは、「解像度」を参照してください。
時間範囲とチャート表示の解像度の組み合わせの中には、チャートがサイクルの境界と完全に一致する値を表示する解像度を使用できない場合があります。たとえば、1 日の解像度だとチャートに表示できるデータポイントより多くなってしまう場合、2 日間の解像度を使用する必要があります。これは、プロットされた値が 29 日または 31 日の月の末日と一致しないことを意味します。これは、いずれの値も 2 日の解像度の倍数ではないためです。このような状況は、チャート上の解像度ピルがオレンジ色に変わり、ツールチップにメッセージが表示されることで示されます。この問題を解決するには、表示解像度を変更するか、表示時間範囲を狭めます。
サイクルの長さと開始
サイクルの長さには、時間、日、週、月、四半期のオプションがあります。
ほとんどのサイクルの長さのオプションでは、開始点を指定できます。たとえば、四半期のサイクルの場合、最初の四半期の開始日をデフォルトの 1 月ではなく、2 月に指定できます。例外は 1 時間ごとのサイクルです。時間単位のサイクルは常に 1 時間の最初(0 分)から始まります。
カレンダーのタイムゾーン
カレンダーウィンドウの場合は、カレンダーのタイムゾーンを指定する必要があります。カレンダーのタイムゾーンは、ユーザープロファイルで設定されているビジュアライゼーションタイムゾーンから独立しているチャート単位(またはディテクタ単位)の設定です。カレンダーウィンドウに設定したタイムゾーンによって、選択したカレンダーウィンドウのサイクルの正確な開始と終了が決まります。
たとえば、アメリカ/ロサンゼルスの 1 月は、アジア/東京の 1 月とは異なる時間に始まります。もし Splunk Observability Cloud が 12 月 31 日の UTC 時間午前 0 時付近のタイムスタンプを持つデータポイントを受信した場合、カレンダーのタイムゾーンによって、そのデータポイントが 12 月の計算にカウントされるか、1 月の計算にカウントされるかが決まります。
チャート内のすべてのカレンダーウィンドウ関数が、同じカレンダーのタイムゾーンを使用します。チャートのどのプロット上でも、カレンダーウィンドウ関数を初めて追加すると、プロファイルのビジュアライゼーションタイムゾーンが、カレンダータイムゾーンに使用する値として提案されます。
部分的な値を隠す
Hide partial values 設定を使用すると、サイクルの終了時に計算される最終値のみに関心があるのか、サイクル中に計算された部分値にも関心があるのかどうかに基づいて、カレンダーウィンドウ関数の出力を最適化できます。たとえばサイクルの長さが 1 日の場合、部分値を非表示にすると、毎日 1 つの値だけが表示され、1 日の中で値がどのように変化するかを確認できません。
以下の例では、部分値(マゼンタの棒グラフ)を非表示にすることで、1 日単位での値の比較の概要がより明確になっています。部分値(緑色の線)を非表示にしない場合、各日の平均値がどのように変化するかを見ることができます。
各サイクルの開始時の値は、前のサイクルの最終値を表します。2 月 15 日午前 12 時のマゼンダ列は、2 月 14 日に見られた値の平均値を表しています。2 月 16 日午前 12 時の列は、2 月 15 日の値の平均値を表しているといった具合になります。
カレンダー・ウィンドウのタイムシフト
タイムシフト関数は、入力ストリーム内の各 MTS のデータポイントをシフトし、指定された期間でそれらをオフセットします。タイムシフトの一般的な使用例には、一定期間のメトリックの平均値を前の期間の平均値と比較するなどがあります。SignalFlow 関数の詳細については、「timeshift()」を参照してください。
タイムシフトは、部分値が非表示の場合にのみ使用できます。カレンダーウィンドウを使用するときにタイムシフトを有効にすると、前のサイクルの終了時の値が、各カレンダーサイクルの終了時に表示されます。たとえば、サイクルの長さが月で 1 サイクル分タイムシフトした場合、4 月 30 日のデータ ポイントは 3 月 31 日の値を表し、5 月 31 日のデータポイントは 4 月 30 日の値を表します。
ダッシュボード・ウィンドウの変換
次の例では、同じダッシュボードの両方のチャートに、異なるリージョンにあるロードバランサのホストの合計数が表示されています。過去 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数を表示する Top、Bottom、時系列をソース別ではなく値別にフィルタリングする機能を提供する Exclude、などの関数を提供します。
他の分析関数と同様に、これらの関数を他の関数と組み合わせて使用して、より高度な計算を生成できます。たとえば、Exclude を Sum とともに使用すると、一般的なスプレッドシートアプリケーションで見られる sumif() 関数と同様の結果を得ることができます。
各関数の詳細については、「Splunk Observability Cloud の関数のリファレンス」を参照してください。
式
SignalFlow では、先行する計算を変数として参照する式を作成できます。たとえば、4xx または 5xx に対する 2xx の HTTP 応答コードの比率を計算できます。