slo-implementation
Service Level Indicators(SLI)とService Level Objectives(SLO)をエラーバジェットとアラート機能付きで定義・実装できます。信頼性目標の設定、SRE(Site Reliability Engineering)プラクティスの導入、またはサービスパフォーマンスの測定に活用してください。
description の原文を見る
Define and implement Service Level Indicators (SLIs) and Service Level Objectives (SLOs) with error budgets and alerting. Use when establishing reliability targets, implementing SRE practices, or measuring service performance.
SKILL.md 本文
SLO 実装
Service Level Indicators (SLI)、Service Level Objectives (SLO)、およびエラーバジェットを定義・実装するためのフレームワークです。
目的
SLI、SLO、およびエラーバジェットを使用して、信頼性と開発速度のバランスを取りながら、測定可能な信頼性目標を実装します。
使用場面
- サービスの信頼性目標を定義する
- ユーザー認識の信頼性を測定する
- エラーバジェットを実装する
- SLO ベースのアラートを作成する
- 信頼性の目標を追跡する
SLI/SLO/SLA の階層
SLA (Service Level Agreement)
↓ 顧客との契約
SLO (Service Level Objective)
↓ 内部の信頼性目標
SLI (Service Level Indicator)
↓ 実測定
SLI の定義
一般的な SLI タイプ
1. 可用性 SLI
# 成功したリクエスト / 総リクエスト数
sum(rate(http_requests_total{status!~"5.."}[28d]))
/
sum(rate(http_requests_total[28d]))
2. レイテンシ SLI
# レイテンシ閾値以下のリクエスト / 総リクエスト数
sum(rate(http_request_duration_seconds_bucket{le="0.5"}[28d]))
/
sum(rate(http_request_duration_seconds_count[28d]))
3. 耐久性 SLI
# 成功した書き込み / 総書き込み数
sum(storage_writes_successful_total)
/
sum(storage_writes_total)
参考: references/slo-definitions.md を参照してください
SLO ターゲットの設定
可用性 SLO の例
| SLO % | 月間ダウンタイム | 年間ダウンタイム |
|---|---|---|
| 99% | 7.2 時間 | 3.65 日 |
| 99.9% | 43.2 分 | 8.76 時間 |
| 99.95% | 21.6 分 | 4.38 時間 |
| 99.99% | 4.32 分 | 52.56 分 |
適切な SLO を選択する
考慮すべき事項:
- ユーザー期待値
- ビジネス要件
- 現在のパフォーマンス
- 信頼性のコスト
- 競合他社のベンチマーク
SLO の例:
slos:
- name: api_availability
target: 99.9
window: 28d
sli: |
sum(rate(http_requests_total{status!~"5.."}[28d]))
/
sum(rate(http_requests_total[28d]))
- name: api_latency_p95
target: 99
window: 28d
sli: |
sum(rate(http_request_duration_seconds_bucket{le="0.5"}[28d]))
/
sum(rate(http_request_duration_seconds_count[28d]))
エラーバジェットの計算
エラーバジェット計算式
Error Budget = 1 - SLO Target
例:
- SLO: 99.9% 可用性
- エラーバジェット: 0.1% = 月間 43.2 分
- 現在のエラー: 0.05% = 月間 21.6 分
- 残りバジェット: 50%
エラーバジェットポリシー
error_budget_policy:
- remaining_budget: 100%
action: 通常の開発速度
- remaining_budget: 50%
action: リスクのある変更を延期することを検討
- remaining_budget: 10%
action: 重大でない変更を凍結
- remaining_budget: 0%
action: 機能凍結、信頼性向上に注力
参考: references/error-budget.md を参照してください
SLO 実装
Prometheus 記録ルール
# SLI 記録ルール
groups:
- name: sli_rules
interval: 30s
rules:
# 可用性 SLI
- record: sli:http_availability:ratio
expr: |
sum(rate(http_requests_total{status!~"5.."}[28d]))
/
sum(rate(http_requests_total[28d]))
# レイテンシ SLI (リクエスト < 500ms)
- record: sli:http_latency:ratio
expr: |
sum(rate(http_request_duration_seconds_bucket{le="0.5"}[28d]))
/
sum(rate(http_request_duration_seconds_count[28d]))
- name: slo_rules
interval: 5m
rules:
# SLO コンプライアンス (1 = SLO を満たしている、0 = 違反)
- record: slo:http_availability:compliance
expr: sli:http_availability:ratio >= bool 0.999
- record: slo:http_latency:compliance
expr: sli:http_latency:ratio >= bool 0.99
# 残りエラーバジェット (パーセンテージ)
- record: slo:http_availability:error_budget_remaining
expr: |
(sli:http_availability:ratio - 0.999) / (1 - 0.999) * 100
# エラーバジェット消費率
- record: slo:http_availability:burn_rate_5m
expr: |
(1 - (
sum(rate(http_requests_total{status!~"5.."}[5m]))
/
sum(rate(http_requests_total[5m]))
)) / (1 - 0.999)
SLO アラートルール
groups:
- name: slo_alerts
interval: 1m
rules:
# 高速消費: 14.4 倍速、1 時間ウィンドウ
# 1 時間でエラーバジェットの 2% を消費
- alert: SLOErrorBudgetBurnFast
expr: |
slo:http_availability:burn_rate_1h > 14.4
and
slo:http_availability:burn_rate_5m > 14.4
for: 2m
labels:
severity: critical
annotations:
summary: "エラーバジェットの高速消費を検出"
description: "エラーバジェットが {{ $value }}x の速度で消費中"
# 低速消費: 6 倍速、6 時間ウィンドウ
# 6 時間でエラーバジェットの 5% を消費
- alert: SLOErrorBudgetBurnSlow
expr: |
slo:http_availability:burn_rate_6h > 6
and
slo:http_availability:burn_rate_30m > 6
for: 15m
labels:
severity: warning
annotations:
summary: "エラーバジェットの低速消費を検出"
description: "エラーバジェットが {{ $value }}x の速度で消費中"
# エラーバジェット枯渇
- alert: SLOErrorBudgetExhausted
expr: slo:http_availability:error_budget_remaining < 0
for: 5m
labels:
severity: critical
annotations:
summary: "SLO エラーバジェットが枯渇しました"
description: "残りエラーバジェット: {{ $value }}%"
SLO ダッシュボード
Grafana ダッシュボード構成:
┌────────────────────────────────────┐
│ SLO コンプライアンス (現在) │
│ ✓ 99.95% (ターゲット: 99.9%) │
├────────────────────────────────────┤
│ 残りエラーバジェット: 65% │
│ ████████░░ 65% │
├────────────────────────────────────┤
│ SLI トレンド (28 日間) │
│ [時系列グラフ] │
├────────────────────────────────────┤
│ 消費率分析 │
│ [時間ウィンドウごとの消費率] │
└────────────────────────────────────┘
クエリの例:
# 現在の SLO コンプライアンス
sli:http_availability:ratio * 100
# 残りエラーバジェット
slo:http_availability:error_budget_remaining
# 現在の消費率でエラーバジェットが枯渇するまでの日数
(slo:http_availability:error_budget_remaining / 100)
*
28
/
(1 - sli:http_availability:ratio) * (1 - 0.999)
マルチウィンドウ消費率アラート
# 短期と長期ウィンドウの組み合わせで誤検知を削減
rules:
- alert: SLOBurnRateHigh
expr: |
(
slo:http_availability:burn_rate_1h > 14.4
and
slo:http_availability:burn_rate_5m > 14.4
)
or
(
slo:http_availability:burn_rate_6h > 6
and
slo:http_availability:burn_rate_30m > 6
)
labels:
severity: critical
SLO レビュープロセス
週間レビュー
- 現在の SLO コンプライアンス
- エラーバジェットステータス
- トレンド分析
- インシデントの影響
月間レビュー
- SLO 達成度
- エラーバジェット使用状況
- インシデント事後分析
- SLO 調整
四半期レビュー
- SLO の関連性
- ターゲット調整
- プロセス改善
- ツール強化
ベストプラクティス
- ユーザー向けサービスから開始する
- 複数の SLI を使用する (可用性、レイテンシなど)
- 達成可能な SLO を設定する (100% を目指さない)
- マルチウィンドウアラートを実装する ノイズを削減するために
- エラーバジェットを継続的に追跡する
- SLO を定期的にレビューする
- SLO の決定を文書化する
- ビジネス目標と連携させる
- SLO レポートを自動化する
- 優先順位付けに SLO を使用する
参考ファイル
assets/slo-template.md- SLO 定義テンプレートreferences/slo-definitions.md- SLO 定義パターンreferences/error-budget.md- エラーバジェット計算
親ハブ
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- majiayu000
- ライセンス
- MIT
- 最終更新
- 2026/5/4
Source: https://github.com/majiayu000/claude-skill-registry / ライセンス: MIT