コンテンツにスキップ

SLO の作成


SLO を作成すると、サービスに測定方法、評価期間、目標を設定し、達成率が低下したときにアラートを受け取ることができます。作成には SLO 設定管理権限が必要です。モニタータイプを選択する場合は、先に対応するモニターを作成してください。メトリクスタイプを選択する場合は、先にビジネス数量メトリクスを現在のワークスペースに収集してください。

モニター > SLO に移動し、SLO を作成をクリックします。

SLO の設定

  1. SLI タイプを選択します。モニタータイプはSLI モニターを関連付け、メトリクスタイプは合計数と成功数のクエリを設定します。
  2. 評価期間、検出頻度、達成率の目標と最低目標を設定します。
  3. 必要に応じてタグを追加し、アラートポリシーを関連付けてから保存します。

評価期間と検出頻度

評価期間は各評価ラウンドの対象期間を決定し、直近 7 日間または 30 日間に対応しています。検出頻度は SLO の再計算と検出の間隔を決定し、5 分または 10 分に対応しています。たとえば、30 日間と 5 分を選択した場合、5 分ごとに過去 30 日間のサービスパフォーマンスを評価することを意味します。参照元モニターは、それぞれの検出頻度で引き続き実行されます。

達成率:目標と最低目標

目標と最低目標は、同じ実際の達成率に対して設定する 2 つのしきい値で、同じ評価期間を共有します。

  • 目標:サービスに期待する信頼性の水準です。たとえば、目標が 99.9% の場合、モニタータイプではアップタイムの割合が 99.9% に達することが求められ、メトリクスタイプでは合計数に占める成功数の割合が 99.9% に達することが求められます。モニタータイプの初期エラーバジェットもこの目標から計算されます。
  • 最低目標:サービスが許容できる達成率の下限です。この下限を下回ると緊急イベントが生成され、より深刻なサービス品質の低下を検知するために使用されます。

設定は 0 < 最低目标 < 目标 < 100 を満たす必要があります。たとえば、目標が 99.9%、最低目標が 99.5% の場合:

実際の達成率 検出結果
≥ 99.9% 目標を達成。
≥ 99.5% かつ < 99.9% 警告イベントを生成。
< 99.5% 緊急イベントを生成。

SLO は自身の達成率に基づいてイベントを生成します。通知を送信する必要がある場合は、アラートポリシーを関連付け、ポリシーで対応するイベントレベルの通知先を設定してください。通知時間や繰り返し通知などの動作はポリシーに従って実行されます。

名前、SLI タイプ、目標、最低目標は保存後に固定されます。その他の設定の編集方法については、SLO の管理を参照してください。

タグ

ページ左上隅のTags を追加でグローバルタグを関連付けると、ビジネスやチームなどで SLO を分類・フィルタリングできます。これらのタグは、この SLO がその後生成する検出イベントの df_label フィールドに書き込まれ、イベントのフィルタリングやデータ連携に使用できます。

タグは SLO とそのイベントを識別するために使用します。以下のグループ化ディメンションは、参照元モニターのイベント内のフィールド値に基づいて達成率を個別に計算するために使用します。

モニタータイプ:SLI の関連付け

SLI(サービスレベル指標)は、サービスの品質を測定する指標です。モニタータイプでは、SLI 設定項目で 1 つ以上の既存モニターを選択します。システムは、これらのモニターに対応するアップタイムの割合でサービス品質を測定します。

同じ評価対象を代表できるモニターを選択してください。たとえば、決済サービスを評価する場合は、「決済 API の応答が遅い」と「決済リクエストのエラー率が高い」という 2 つのモニターを関連付けることができます。いずれかのモニターで異常が発生すると、対応する異常時間が SLO に計上されます。同じ時間帯の複数の異常は合算されます。減点、達成率、エラーバジェットの関係については、モニタータイプの計算説明を参照してください。

グループ化ディメンション

グループ化ディメンションは、どのビジネスオブジェクトごとに評価するかを決定します。project(プロジェクト)、env(環境)、service(サービス)に対応しており、1 つ以上のフィールドを選択できます。

設定方法 統計結果と適用シーン
空欄 関連付けた SLI を 1 つのまとまりとして扱い、異常時間を合算して 1 つの達成率を計算します。サービスやビジネス全体のパフォーマンスを評価する場合に適しています。
service を選択 サービスごとに計算します。たとえば、payment-api と order-api にそれぞれ達成率が算出され、あるサービスの異常はそのサービスの結果に計上されます。
env、service を選択 実際のフィールド値の組み合わせごとに計算します。たとえば、prod + payment-api、staging + payment-api のように、同じサービスを環境別に評価する場合に適しています。

グループ化する前に、参照元モニターが生成する異常イベントに選択したフィールドとその値が含まれていることを確認してください。たとえば、モニターの検出ディメンションで env、service を渡します。システムはこれらのフィールドに基づいて異常を分類します。選択したフィールドのいずれかが欠落しているイベントは無視され、統計の完全性に影響します。正常なグループの補完には、アプリケーションパフォーマンスモニタリング(APM)の直近のトレースデータが使用されます。対応するビジネスディメンションがトレースとともに報告されていることを確認する必要があります。

SLO 詳細または SLO チャートで、各グループ化ディメンションの具体的な値を選択すると、対応する組み合わせの結果を確認できます。各組み合わせは独立して異常時間を累積します。プロジェクト全体を評価する必要がある場合は、project のみでグループ化した SLO を作成してください。グループ化設定を変更すると、次の検出周期から有効になり、履歴データは元のグループ化のまま保持されます。

メトリクスタイプ:合計数と成功数の設定

合計数と成功数にそれぞれクエリを設定します。ビジュアルメトリクスクエリ、DQL、PromQL に対応しています。2 つのクエリは、同じビジネス範囲、計量単位、評価期間をカバーする必要があります。成功数は合計数のうち成功条件を満たす数で、总数 > 0、0 ≤ 成功数 ≤ 总数 を満たす必要があります。

各クエリでは、各時系列を 1 つの期間数量値に集約する必要があります。複数の時系列が返された場合、システムはその数量を合算します。異なるビジネス範囲を個別に評価する必要がある場合は、それぞれ SLO を作成してください。

DQL の例:決済リクエスト成功率

メジャーメント payment_requests において、request_count が各収集間隔で新規に発生したリクエスト数を記録し、service がサービスを識別し、result がリクエスト結果を識別するとします。payment-api のリクエスト成功率を評価するには、次のように設定できます。

合計数:

M::`payment_requests`:(sum(`request_count`)) { `service` = 'payment-api' }

成功数:

M::`payment_requests`:(sum(`request_count`)) { `service` = 'payment-api', `result` = 'success' }

メジャーメント、フィールド、タグを実際に収集した内容に置き換えてください。時間範囲は SLO の評価期間によって制御されます。直近 30 日間の合計数が 100,000、成功数が 99,950 の場合、達成率は 99,950 ÷ 100,000 × 100% = 99.95% となります。

PromQL の例:累積カウンター

PromQL はインスタントクエリとして実行されるため、式内で期間の統計を完了する必要があります。たとえば、payment_requests_total がリクエスト数を累積し続ける場合、評価期間が 30 日のときは increase を使用してその期間の増分を計算できます。

合計数:

sum(increase(payment_requests_total{service="payment-api"}[30d]))

成功数:

sum(increase(payment_requests_total{service="payment-api", result="success"}[30d]))

メトリクス名とタグを実際に収集した内容に置き換えてください。評価期間を変更する場合は、2 つの式の時間範囲も合わせて調整してください。たとえば、[30d] を [7d] に変更します。

合計数と成功数には、期間内のビジネス数量を使用してください。所要時間、パーセンタイル、計算済みの成功率は、他の検出方法に適しています。

作成後、検出が有効な結果を生成するまで待つ必要があります。データなし、合計数が 0、クエリ失敗が発生した場合は、SLO 詳細の説明に従ってデータを確認できます。

フィードバック

このページは役に立ちましたか?