本文へ移動
cccskills
無料GitHub で公開

slo-implementation

エラーバジェットとアラートを用いたサービスレベルインジケーター(SLI)とサービスレベル目標(SLO)を定義・実装します。信頼性ターゲットの確立、SREプラクティスの実装、サービスパフォーマンスの測定時に使用します。

インストール方法を見る

含まれるファイル(1)

  • SKILL.md9.5 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

English | 日本語

SLO実装

サービスレベルインジケーター(SLI)、サービスレベル目標(SLO)、エラーバジェットを定義・実装するフレームワーク。

目的

SLI、SLO、エラーバジェットを使用して測定可能な信頼性ターゲットを実装し、信頼性とイノベーション速度のバランスを取ります。

使用タイミング

  • サービス信頼性ターゲットの定義
  • ユーザーが認識する信頼性の測定
  • エラーバジェットの実装
  • SLOベースのアラートの作成
  • 信頼性目標の追跡

SLI/SLO/SLAの階層

SLA(サービスレベル契約)
  ↓ 顧客との契約
SLO(サービスレベル目標)
  ↓ 内部信頼性ターゲット
SLI(サービスレベルインジケーター)
  ↓ 実際の測定

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]))

エラーバジェット計算

エラーバジェットの公式

エラーバジェット = 1 - SLOターゲット

例:

  • 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 = SLO違反)
      - 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: "Fast error budget burn detected"
          description: "Error budget burning at {{ $value }}x rate"

      # 低速バーン: 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: "Slow error budget burn detected"
          description: "Error budget burning at {{ $value }}x rate"

      # エラーバジェット枯渇
      - alert: SLOErrorBudgetExhausted
        expr: slo:http_availability:error_budget_remaining < 0
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "SLO error budget exhausted"
          description: "Error budget remaining: {{ $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の関連性
  • ターゲット調整
  • プロセス改善
  • ツール強化

ベストプラクティス

  1. ユーザー向けサービスから始める
  2. 複数のSLIを使用(可用性、レイテンシなど)
  3. 達成可能なSLOを設定(100%を目指さない)
  4. ノイズを減らすためにマルチウィンドウアラートを実装
  5. エラーバジェットを一貫して追跡
  6. 定期的にSLOをレビュー
  7. SLOの決定を文書化
  8. ビジネス目標と整合
  9. SLOレポートを自動化
  10. 優先順位付けにSLOを使用

リファレンスファイル

  • assets/slo-template.md - SLO定義テンプレート
  • references/slo-definitions.md - SLO定義パターン
  • references/error-budget.md - エラーバジェット計算

関連スキル

  • prometheus-configuration - メトリクス収集のため
  • grafana-dashboards - SLO可視化のため

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Migrate from AngularJS to Angular using hybrid mode, incremental component rewriting, and dependency injection updates. Use when upgrading AngularJS applications, planning framework migrations, or modernizing legacy Angular code.

日本語の概要は準備中です。原文の説明を表示しています。

amurata/cc-tools62025年11月28日 更新

angular-migration

無料日本語概要

ハイブリッドモード、段階的コンポーネント書き換え、依存性注入更新を使用してAngularJSからAngularへ移行します。AngularJSアプリケーションのアップグレード、フレームワーク移行の計画、またはレガシーAngularコードのモダナイゼーション時に使用します。

amurata/cc-tools62025年11月28日 更新

api-design-principles

無料日本語概要

開発者を喜ばせる直感的でスケーラブルで保守可能なAPIを構築するために、RESTとGraphQL APIの設計原則をマスターします。新しいAPIの設計、API仕様のレビュー、またはAPI設計標準の確立時に使用してください。

amurata/cc-tools62025年11月28日 更新

Master REST and GraphQL API design principles to build intuitive, scalable, and maintainable APIs that delight developers. Use when designing new APIs, reviewing API specifications, or establishing API design standards.

日本語の概要は準備中です。原文の説明を表示しています。

amurata/cc-tools62025年11月28日 更新

Implement proven backend architecture patterns including Clean Architecture, Hexagonal Architecture, and Domain-Driven Design. Use when architecting complex backend systems or refactoring existing applications for better maintainability.

日本語の概要は準備中です。原文の説明を表示しています。

amurata/cc-tools62025年11月28日 更新

architecture-patterns

無料日本語概要

クリーンアーキテクチャ、ヘキサゴナルアーキテクチャ、ドメイン駆動設計を含む実証済みのバックエンドアーキテクチャパターンを実装します。複雑なバックエンドシステムの設計や、保守性向上のための既存アプリケーションのリファクタリング時に使用します。

amurata/cc-tools62025年11月28日 更新

amurata のスキルをすべて見る

このスキルの問題を報告する