AI

SLO管理比較:Pyrra vs Sloth vs OpenSLO でSLI/SLOを自動化する

オープンソースラボ編集部2026年6月17日

SLO管理比較:Pyrra vs Sloth vs OpenSLO でSLI/SLOを自動化する

📊 サービスレベル目標(SLO)をコードで管理するツール。Pyrra・Sloth・OpenSLOの特徴と選択基準を解説します。

SLO管理ツールとは

サービスレベル指標(SLI)とサービスレベル目標(SLO)を宣言的に定義し、Prometheusのアラートルールを自動生成するツールです。エラーバジェットの可視化でSREチームの意思決定を支援します。

主要ツール比較表

項目PyrraSlothOpenSLO
ライセンスApache 2.0Apache 2.0Apache 2.0
出力PrometheusRulePrometheusRule各種形式
UI◎ 組み込み
Kubernetes CRD
複数ウィンドウ◎(5m/1h/1d)
エラーバジェット表示
YAML仕様独自独自標準仕様
Grafana統合

各ツールの特徴

Pyrra

SLOをKubernetes CRDで定義し、PrometheusRuleを自動生成するコントローラー。組み込みUIでエラーバジェットをリアルタイム表示できます。

主な特徴:

  • Kubernetes Operatorとして動作
  • 組み込みWebUIでSLO状態・エラーバジェットを可視化
  • マルチウィンドウアラーティング(5分/1時間/1日)を自動設定
  • SLOの達成率をPrometheusメトリクスとして公開
# Pyrra SLO定義
apiVersion: pyrra.dev/v1alpha1
kind: ServiceLevelObjective
metadata:
  name: api-availability
  namespace: monitoring
spec:
  target: "99.9"      # 99.9%の可用性目標
  window: 28d         # 28日間のウィンドウ
  description: "APIサーバーの可用性"
  indicator:
    ratio:
      errors:
        metric: http_requests_total{job="api",code=~"5.."}
      total:
        metric: http_requests_total{job="api"}
---
# レイテンシーSLO
apiVersion: pyrra.dev/v1alpha1
kind: ServiceLevelObjective
metadata:
  name: api-latency
spec:
  target: "99"
  window: 28d
  indicator:
    latency:
      success:
        metric: http_request_duration_seconds_bucket{job="api",le="0.5"}
      total:
        metric: http_request_duration_seconds_count{job="api"}
# Helmでインストール
helm repo add pyrra https://pyrra-dev.github.io/pyrra/helm-chart
helm install pyrra pyrra/pyrra   --namespace monitoring   --set apiServer.enabled=true

向いているケース: UI重視・エラーバジェット可視化・Kubernetes環境

Sloth

CLIとKubernetes Operatorの両方で使えるSLOジェネレーター。YAMLからPrometheusRuleを1コマンドで生成します。

主な特徴:

  • CLIモードとKubernetes Operatorモードを選べる
  • カスタムSLIプラグインで独自指標に対応
  • Grafanaダッシュボードの自動生成
  • OpenSLO仕様への変換が可能
# sloth.yaml
version: "prometheus/v1"
service: "my-api"
slos:
  - name: "requests-availability"
    description: "APIリクエストの可用性"
    objective: 99.9
    sli:
      events:
        error_query: sum(rate(http_requests_total{job="api",code=~"5.."}[{{.window}}]))
        total_query: sum(rate(http_requests_total{job="api"}[{{.window}}]))
    alerting:
      name: MyAPIHighErrorRate
      labels:
        team: backend
      annotations:
        summary: "APIエラー率がSLOを超過しています"
      page_alert:
        labels:
          severity: critical
      ticket_alert:
        labels:
          severity: warning
# CLIで PrometheusRule を生成
sloth generate -i sloth.yaml -o rules.yaml

# Kubernetes に適用
kubectl apply -f rules.yaml

# Operatorとして常時稼働
helm repo add sloth https://slok.github.io/sloth
helm install sloth sloth/sloth   --namespace monitoring

向いているケース: CLI中心・CI/CDでPrometheusRule生成・非K8s環境も

OpenSLO

ベンダー中立のSLO仕様標準。Dynatrace・Datadog・SumoLogic等が採用している共通フォーマットで、複数ツールへの変換が目的です。

主な特徴:

  • ベンダー中立の標準仕様(CNCF Sandboxプロジェクト)
  • osl CLIで複数バックエンド(Prometheus/Datadog/Dynatrace)へ変換
  • SlothのOpenSLOフォーマット入力をサポート
  • コミュニティ主導の拡張仕様
# OpenSLO仕様
apiVersion: openslo/v1
kind: SLO
metadata:
  name: api-availability
  displayName: APIサーバー可用性
spec:
  description: "HTTPリクエストの成功率"
  service: my-api
  indicator:
    metadata:
      name: api-good-requests
    spec:
      ratioMetric:
        counter: true
        good:
          metricSource:
            type: Prometheus
            spec:
              query: http_requests_total{job="api",code!~"5.."}
        total:
          metricSource:
            type: Prometheus
            spec:
              query: http_requests_total{job="api"}
  timeWindow:
    - duration: 28d
      isRolling: true
  objectives:
    - displayName: "99.9%可用性"
      target: 0.999

向いているケース: マルチプロバイダー・将来の移植性・標準仕様重視

選択ガイド

状況推奨
エラーバジェットUI・K8sPyrra
CLI/CI統合・Prometheus生成Sloth
マルチプロバイダー・標準仕様OpenSLO

内部リンク

外部リソース

FAQ

Q. SLOを設定するには何のメトリクスが必要ですか?

最低でも「リクエスト総数」と「エラー数」のPrometheusメトリクスが必要です。latency SLOにはヒストグラム(_bucket)が必要です。

Q. エラーバジェットとは何ですか?

SLOを達成するために許容できるエラーの総量です。例:99.9%SLOなら28日間で約40分のダウンタイムが許容されます。このバジェットを使い切ると新機能リリースを止める等の判断に使います。

Q. アラートのPagerDuty連携はどうやりますか?

Pyrra/SlothはPrometheusRuleを生成するため、AlertManagerのPagerDutyレシーバーに繋ぐことで自動的に連携できます。

Q. 複数サービスのSLOを一元管理したい場合は?

Pyrraは複数SLOの一覧UIを提供しています。Grafanaダッシュボードと組み合わせて「SLOダッシュボード」を作るのが一般的なアプローチです。

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。