サービスレベル目標ウィジェット(レガシー)
Instana ユーザーは、サービスレベル目標(SLO)に合わせてカスタムダッシュボードウィジェットを作成し、サービスのパフォーマンスの推移を表示・分析することができます。 ウィジェットは、時間ベースまたはイベントベースのいずれかの SLI 構成を表示できます。
SLOウィジェット(レガシー)
次の画像は、「 Robot Shop SLO」 と呼ばれるSLOウィジェットの例を示しています。これは、 時間ベースの SLI設定と、95%というSLO目標値を使用して構成されています。 この例のSLIは、レイテンシ指標の90パーセンタイルと、2秒という閾値に基づいています。 エラーバジェットとは、1からSLOの目標値を引いたものに時間窓を掛けたものである。 ウィジェットに表示されている7日間という時間枠は、504分というエラーバジェットに変換される:
504 minutes = (1 - 95%) * 10080 minutes
この例のSLOは、使用されたエラー予算565分がその制限を超えたため、選択された時間枠では達成されなかった。

構成
SLOウィジェットの追加(旧バージョン)
SLOウィジェットは、どのアプリケーションの視点やウェブサイトにも設定できます。 SLO レガシーウィジェットを追加するには、カスタムダッシュボードのいずれかにアクセスして、 ウィジェットの追加ダイアログを開きます。 次に、以下の手順に従ってください:
- ダイアログのサイドバーで、SLO legacy > Nextをクリックします。 ダイアログが開き、SLO ウィジェットを設定するための構成セクションが表示されます。
- 「アプリケーション・パースペクティブ 」と「 Webサイト」 のどちらを監視するかを選択してください。
- アプリケーションの観点からのSLOは、ユーザーのインターネット接続の不備など、あなたがコントロールできない要因を除外しており、ユーザーの体験を正確に反映していない可能性があります。
- ウェブサイトのSLOは、ユーザー・エクスペリエンスを最も正確に反映するものであり、ユーザーのインターネット接続性の低下など、貴社がコントロールできない要因を排除するものではない。
- リストから、SLOの対象となるアプリケーション・パースペクティブまたは Webサイトを選択してください。
- リストから、対象のSLOタイプに対応するサービスレベルインジケーター を選択してください。 前に選択した SLO タイプで SLI が利用できない場合は、SLI 構成の説明に従って SLI を作成します。
99.9%のように、SLOターゲットの値を入力します。- Time Window Typeを選択し、ウィジェットのコンテキストと表示時間枠を定義します:
- ダイナミックタイムウィンドウ: SLOは、グローバルタイムピッカーで選択されたタイムウィンドウに対して計算される。
- ローリングタイムウィンドウ(Rolling time window):ウィンドウサイズが固定されたタイムウィンドウ。 例として、ローリングタイムウィンドウは、グローバルタイムピッカーに合わせることなく、常に直近の1週間を表示することができます。
- 固定時間間隔: 開始と期間が定義された時間枠。 例として、
2020-01-01から始まる1ヶ月の固定ウィンドウを設定することができます。 その月が終了すると、タイムウィンドウは自動的に次の月(2020-02-01)にリセットされます。
- ウィジェットのタイトルを入力します。
- プレビューでウィジェットを確認してください。 プレビューが表示されない場合は、Highlight missing configurationをクリックすると、何が足りないかをすぐに確認できます。
- SLO ウィジェット構成を作成するには、作成をクリックします。
- カスタムダッシュボードの SLO ウィジェット構成を保存するには、変更を保存をクリックします。
SLI 構成
SLIの種類
SLO のタイプに関係なく、構成に合わせて 2 つの SLI タイプのいずれかを選択できます:
- イベントベース SLI は、定義された良いイベントと悪いイベントのグループを使用して、サービスの信頼性を測定します。 すべての通話に同じ重みが与えられるため、実際のユーザー体験をより正確に反映することができる。 このため、エラー予算はイベント数に依存するため、扱いが難しくなる。
- 時間ベース SLIは、サービスの信頼性を分単位で測定します。 エラーバジェットは常に一定の不良分数であるため、管理は容易であるが、不良イベントはトラフィックが少ない分により大きくなるため、イベントベースのSLIよりも精度は落ちる。
UI を使用した SLI の管理
SLI構成を作成したり、既存のSLI構成を複製したりするには、SLOウィジェットの「SLIの管理」をクリックして、「 SLI管理 」ダイアログを開いてください。

次に、以下の手順に従って、構成をゼロから作成するか、既存の構成のクローンを作成します。
アプリケーションの観点からSLI構成を作成する
- 「SLI 管理」ダイアログで、 「SLI を作成 」をクリックします。
- 以下のように、SLI 構成の詳細を指定します。
- 構成を一意的に識別するための、SLI 構成の名前を入力します。
- SLI設定のタイプを選択し、タイムベースまたはイベントベースを選択します
- 「作成」をクリックして、新規 SLI 構成を保存します。
アプリケーション向けタイムベースSLI
タイムベースSLIの以下の設定を完了します:
- バウンダリー・スコープ (「インバウンド呼び出し」または「すべての呼び出し」) を選択します。
- 着信コール:アプリケーションの外部から開始され、宛先サービスが選択されたアプリケーション視点の一部であるコールのみを含めます。
- すべてのコール:アプリケーションの外部からの着信コールと、アプリケーションのパースペクティブ内で発生したコールの両方を含みます。
- アプリケーション内の特定のサービスを選択するか、デフォルトの
All Servicesを選択したままにして、アプリケーション・パースペクティブ全体に適用することができます。 - さらにエンドポイントを絞り込みたい場合は、リストからエンドポイントを選択することができる。 サービス選択と同様に、デフォルトの
All Endpointsのまま、サービス全体に適用することもできます。 - サポートされているメトリックのリストから、SLI 構成を評価するメトリックを選択します。
- 以下のメトリクスがサポートされています:
- 待ち時間
- 呼び出し数
- エラー率
- エラーのある呼び出し数
- 以下のメトリクスがサポートされています:
- 選択したメトリックの集約を選択します。
- 選択したメトリックのしきい値を入力します。
メトリックおよびしきい値を選択すると、SLI が以下のように計算されます。
SLI = (1 - #minutes_where_threshold_is_violated / #minutes_in_time_window) * 100%
次の図は、アプリケーションk8s-demoに対して時間ベースのSLIがどのように設定されるかを示しています。 アプリケーションの境界スコープは、エンドポイントのInbound Calls DELETE /cart/:id と、cartと呼ばれるサービスに制限されます。 評価されるメトリクスはLatencyに設定され、推奨されるアグリゲーションは90th percentile、しきい値は25 msです。

イベント・ベースの SLI
イベントベースのSLI設定では、Unbounded Analyticsのクエリビルダーの柔軟性を最大限に活用し、正常なイベントと異常なイベントのサブセットを選択することができます。
- 良いイベント:特定のサービスの成功基準を示す呼び出しのセット。 たとえば、ステータスコードが
2XX. である、 HTTP サービスのすべての HTTP リクエスト。 - 不良イベント:特定のサービスの障害基準を示す呼び出しの集合。 たとえば、ステータスコードが
5XX. である、 HTTP サービスのすべての HTTP リクエスト。
Event-based SLI の以下の設定を完了します:
- バウンダリー・スコープ (「インバウンド呼び出し」または「すべての呼び出し」) を選択します。
- 着信コール:アプリケーションの外部から開始され、宛先サービスが選択されたアプリケーション視点の一部であるコールのみを含めます。
- すべてのコール:アプリケーションの外部からの着信コールと、アプリケーションのパースペクティブ内で発生したコールの両方を含みます。
- オプション:内線通話や合成通話を含めることができます。 デフォルトでは、どちらのコールも除外される。
悪いイベントと良いイベントが定義されている場合、SLIは以下のように計算される:
SLI = #good_events / (#good_events + #bad_events) * 100%
画像は、境界スコープがInbound Callsに制限されているアプリケーションに対して、イベントベースのSLIがどのように設定されているかを示しています。 good eventsはステータスコード200のコール、bad eventsはステータスコード500のコールと定義される。

このコンフィギュレーションの結果、ウィジェットは、分単位とは対照的に、コールのエラーバジェットを表示します。
ウェブサイト用のSLI構成の作成
- 「SLI 管理」ダイアログで、 「SLI を作成 」をクリックします。
- 以下のように、SLI 構成の詳細を指定します。
- 構成を一意的に識別するための、SLI 構成の名前を入力します。
- SLI設定のタイプを選択し、タイムベースまたはイベントベースを選択します
- 「作成」をクリックして、新規 SLI 構成を保存します。
Webサイト向けのタイムベースSLI
タイムベースSLIの以下の設定を完了します:
- 「 HTTP 」リクエストなどのビーコンスコープを選択します。 ビーコン・フィルタを適用することで、地理的位置、ブラウザ、またはユーザーなど、ウェブサイト・トラフィックのサブセットに設定をさらにスコープすることができます。
- サポートされているメトリックのリストから、SLI 構成を評価するメトリックを選択します。 以下のメトリクスがサポートされています:
- ビーコン・エラー率
- ビーコン期間
- 選択したメトリックの集約を選択します。
- 選択したメトリックのしきい値を入力します。
メトリックおよびしきい値を選択すると、SLI が以下のように計算されます。
SLI = (1 - #minutes_where_threshold_is_violated / #minutes_in_time_window) * 100%
以下の例は、 Robot Shop ウェブサイトにおける時間ベースの SLI 設定を示しています。この設定では、パス /products に対して GET メソッドを使用し、ビーコンエラー率メトリクスの平均値について、25 ミリ秒のしきい値で HTTP 回のリクエストに制限しています。

Webサイト向けイベント駆動型SLI
イベントベースのSLI設定では、Unbounded Analyticsのクエリビルダーの柔軟性を最大限に活用し、正常なイベントと異常なイベントのサブセットを選択することができます。
- 良いイベント:特定のサービスの成功基準を示す呼び出しのセット。 たとえば、ステータスコードが
2XX. である、 HTTP サービスのすべての HTTP リクエスト。 - 不良イベント:特定のサービスの障害基準を示す呼び出しの集合。 たとえば、ステータスコードが
5XX. である、 HTTP サービスのすべての HTTP リクエスト。
Event-based SLI の以下の設定を完了します:
- ビーコンスコープを選択します。例: HTTP リクエスト。 ビーコン・フィルターを適用することで、ウェブサイト・トラフィックのサブセット(例えば、地理的位置、ブラウザー、またはユーザー別)に設定をさらにスコープすることができます。
- 着信通話またはすべての通話。
- 着信コール:アプリケーションの外部から開始され、宛先サービスが選択されたアプリケーション視点の一部であるコールのみを含めます。
- すべてのコール:アプリケーションの外部からの着信コールと、アプリケーションのパースペクティブ内で発生したコールの両方を含みます。
悪いイベントと良いイベントが定義されている場合、SLIは以下のように計算される:
SLI = #good_events / (#good_events + #bad_events) * 100%
ビーコンのスコープがHTTP Requestsに設定され、good eventsはステータスコード200のGETリクエスト、_bad events+はステータスコード500のGETリクエストです。

このコンフィギュレーションの結果、ウィジェットは、分単位とは対照的に、コールのエラーバジェットを表示します。
既存のSLI構成の複製
計算済みの費やされたバジェットが無効にならないようにするために、SLI のパラメーターを変更することはできません。 そのため、パラメータを変更する際には、SLIコンフィギュレーションをクローンする必要がある。
- SLI Managementダイアログで、クローンするSLI構成のView/Clone SLI configurationアイコンをクリックします。
- 以下の SLI 構成の詳細を編集します。
- SLIコンフィギュレーションの名前を変更し、既存のコンフィギュレーションからのクローンであることを識別できるようにします。
- 必要に応じてSLI設定を編集します。
- 「複製」をクリックして、SLI 構成の複製を作成します。