サービス・レベル目標
概要とメリット(できること,UseCase)
- 設定したサービスレベル目標(SLO)に対する達成状況をUI上で確認できる機能です。
- SLO の達成率に加え、許容されるエラーや遅延の残余を示す「エラーバジェット」も可視化されます。
- エラーバジェットを把握することで、更新作業やリリースのタイミングを判断する際のリスク評価が容易になります。
- 結果として、サービス品質を維持しながら、計画的で安全な運用が可能になります。
公式ドキュメントのリンク
- https://www.ibm.com/docs/ja/instana-observability/latest?topic=instana-service-level-objectives-slos
サービスレベル目標(SLO)とは?
Service Level Objectives(SLO)とは「一定期間の特定のサービスに対して合意されたパフォーマンス目標」です。
引用・参考:https://www.ibm.com/jp-ja/think/topics/service-level-objective
SLOを理解するにあたり、SLA(Service Level Agreement)、SLI(Service Level Indicator)という言葉も存在します。
- SLA(サービスレベル契約):サービス提供者と顧客の間でされる契約。設定したサービスレベルに達しなかった場合は罰則が発生します。
- SLO(サービスレベル目標):SLAを達成するための努力目標。通常、SLAで設定したサービスレベルよりも厳しく設定されます。
- SLI(サービスレベル指標):サービスのパフォーマンスを測定するための尺度。遅延やエラー率の測定値をパーセンテージで表します。
SLAを違反してしまうことはペナルティが発生するだけではなく、顧客の信用にもつながります。
サービス提供者はSLAで提示したサービスレベルを守るためにSLOを設定し、SLIで計測した値がSLOを下回らないように監視をすることで、より高い水準でサービスレベルが守られるように運用できます。

エラー・バジェット
直訳すると「エラーの予算」です。SLO違反してしまうまでにどのくらいの障害の量が許容されるのかを定義するものです。
障害は全く起きないことが理想ですが、実際の運用ではある程度のサービス中断は避けられません。
エラー・バジェットを把握しておくと、ソフトウェアの更新や修正の際の判断に活用することができます。
エラーバジェット=100%-SLO

InstanaでSLO監視を行うことのメリット
リアルタイム性
人手でSLO監視をする際には各サーバーのログを1つ1つ見てデータを収集し、集計し、分析して問題がないかを確認します。 この方法では達成率の把握に時間がかかり、問題が起こっていることをすぐに把握することが難しいです。
InstanaのSLO監視機能を活用することで、定めたSLOを下回っていないか画面上でリアルタイムに確認することが出来ます。 運用担当者は、これを確認することでSLOを下回りそうな時にはすぐ気づいて対応することが出来ます。
関係者間での共有が容易
担当者がSLOの達成度を確認する時、Instanaを活用することで達成率が分かるだけでなく、そのまま分析に進むことが出来るのでSLO違反の原因特定や対策にすぐ着手できる情報にアクセス出来ます。
運用チームと開発チームで連携が必要な場面で、事前に問題とその原因箇所を理解することが出来るので、報告を受けた人はすぐに問題解決のアクションを取れます。
報告の際には、チーム間で同じ画面を見ながら原因や今起きていることを共有出来るため、アクションまでの時間が短縮され、SLO違反をしている状態をいち早く改善することに繋がります。
ビジネス影響の可視化
SLOを把握することでサービスが正常に稼働しているかを確認することができるので、ビジネスが上手くいっているかの判断に使うことが出来ます。
SLOの低下が売り上げ減少につながることもあるので、SLOを把握しておくことはビジネスにおいても重要なことです。
また、サービスによっては絶対に止めてはいけないものから多少の遅延やエラーは許容されるものなどもあります。
サービスやシステムの優先順位付けをする際にもSLO監視を活用することができ、絶対に止められないものにはより高いSLOを設定し、多少は許容されるものは少し低めに設定することで優先順位の高いものから対応していくことができます。
開発チームと運用チーム双方の目的の達成
開発チームと運用チームは同じシステムに対して、それぞれの目的が存在します。 - 開発チームの目的:多くの機能を追加する - 運用チームの目的:システムを安定運用させる
この時に活用するべきなのがエラーバジェットです。 エラーバジェットを指標とし、どちらの目的を優先させるかの判断に使うことが出来ます。
例えばエラーバジェットに余裕がある状態(システムが問題なく稼働している状態)では、開発者は更新や修正を行い機能追加に集中することが出来ます。 新機能を試すことに着手するチャンスです。 逆に、エラーバジェットがギリギリの状態、または超過してしまっている場合はシステムを正常に戻すことを優先する必要があります。
このように、Instanaを活用することでシステムを安定運用させつつ、新機能のアップデートにも力を入れていくような運用が可能になります。
設定の前提条件
以下の準備が整っていることを確認してください。 - アクセス権限:「サービスレベルへのアクセス」権限及び「SLO構成の作成、設定、削除」権限 - 監視対象エンティティ:以下のいずれか一つ以上がInstanaで既に設定されている必要があります - アプリケーション・パースペクティブ - ビーコンデータ付きウェブサイト - 合成テスト - インフラストラクチャエンティティ(ホスト、コンテナなど)
設定項目
サービスレベル目標の作成
サービスレベル目標(SLO)を作成するには、 [サービスレベル目標を作成] をクリックします。 これにより、以下の手順に従って新しいSLOを作成できるウィンドウが開きます:

1. エンティティー・タイプの選択
- アプリケーション・パースペクティブ:アプリケーションの観点から測定
- インフラストラクチャー:ホスト、コンテナなどのインフラストラクチャのパフォーマンスを測定
- 合成テスト:1つ以上の合成テストの結果のパフォーマンスを測定
- Webサイト:ウェブサイト内のビーコンとトレースのパフォーマンスを測定

ここからはエンティティタイプでアプリケーションを選択した場合を想定しています。 他のエンティティタイプに関してはドキュメントを参照ください。
2. エンティティの選択
- 検索から設定したいアプリケーションを選択

3. スコープの定義
- スコープ内の呼び出し
- インバウンド呼び出し:アプリケーション外部からの呼び出しかつ呼び出し先のサービスが、選択したアプリケーション・パースペクティブに含まれている呼び出し
-
すべての呼び出し:アプリケーション外部からの呼び出しと、アプリケーション内の呼び出しの両方を含む

-
非表示の呼び出しを含める (オプション):
- 内部呼び出し: サービス内の呼び出しを含む
- シンセティック呼び出し: シンセティックエンドポイントを宛先とする呼び出し
- サービスおよびエンドポイント
- 選択
- サービス:すべてのサービス、または特定のサービスを選択
- エンドポイント: すべてのエンドポイント、または特定のエンドポイントを選択
- フィルター
- フィルターを追加

4. インジケーターの定義
- SLOの指標の設定
-
アベイラビリティ:定義された期間における呼び出し結果の成功率を測定します。
- 可用性タイプ
- 時間ベース:1分間の呼び出しをまとめて成功率を計算。しきい値よりも低い場合はエラーバジェットが1分消費されます。
- 集約:平均値(1分あたりの平均遅延)
- しきい値:しきい値を設定
- イベント数:期間全体の呼び出しの成功率を計算し、しきい値を満たさない呼び出し率がエラーバジェットを超えたらSLO違反になります。
-
待ち時間:呼び出しの応答時間を測定します。
- 待ち時間タイプ
- 時間ベース:1分ごとにメトリクスを集計し、しきい値を超えた場合、その時間のエラー予算が減少します。
- 集約:平均値(1分あたりの平均遅延)
- しきい値:しきい値を設定
- イベント数:呼び出しごとに評価をし、しきい値を超える呼び出しの比率がSLO目標を下回った場合SLO違反になります。
-
トラフィック:1分ごとの一定量の呼び出しが発生しているか測定する。
- トラフィック・タイプ:1分間に発生したイベント数を数え、設定したしきい値を下回るとエラーバジェットを消費します。
- すべての呼び出し:システム全体のトラフィック量を測ります
- エラーのある呼び出し数:エラーだけをカウントします
- サービス・レベル指標(SLI)のしきい値:しきい値を設定します
-
カスタム:カスタムフィルターを使用して定義を指定します。

しきい値の仕組み:Instanaは毎分、平均待ち時間を計算します。 平均が200msを超えた場合 、その時間は「エラー」としてマークされ、エラー予算を消費します。
5. 目標の設定
- SLOターゲット:達成すべきパーセンテージを指定します
- 時間枠
- 固定:開始日から指定された期間で評価します(1/1から5日間であれば1/6にリセットされます)
- 期間
- 長さ:日数または週数を指定
- 開始日、時刻を選択
- ローリング:直近の指定した期間を継続的に評価します。更新は分単位で行われます
- 期間
- 長さ:日数または週数を指定
- タイムゾーンをバインド(オプション):SLOの時間枠のタイムゾーンを指定できます。
エラー予算のプレビュー : 504分 (7日 × 24時間 × 60分 × 5%)
*5%は100%からSLOの95%を引いて求められた数字

6. 詳細の入力
- 名前: 任意の名前を設定します
- タグ(オプション): SLOを分類するためにタグを指定できます
- チーム:SLOのアクセス権限を管理するチームを割り当て可能です。

SLOダッシュボードの理解
作成後、SLOダッシュボードが表示され、以下が表示されます:
| ウィジェット名 | 説明 |
|---|---|
| 状況 | 現在の達成率(例: 96.5 %)と目標値(95%)の比較 |
| 残りのエラー予算 | エラー予算内の残り時間 (例: 504分のうち450分) |
| 燃焼率 | エラー予算が消費される速度(例:予想より 1.2x 20%速い) |
| インディケーターチャート | 時間経過に伴う遅延と閾値線 |
| エラー予算チャート | 時間経過に伴うエラー予算の消費状況 |
| トラフィックチャート | 時間経過に伴うリクエスト量 |
