slo-implementation は何をしますか?
Service Level Indicators(SLI)とService Level Objectives(SLO)を定義・実装し、エラーバジェットとアラートを設定します。信頼性目標の策定、SREプラクティスの導入、サービスのパフォーマンス測定時に使用します。
概要
このスキルは、SRE(Site Reliability Engineering)の原則に基づき、サービスの信頼性目標を明確に定義し、実用的な監視とアラートの設定を支援します。SLI(サービスレベル指標)の測定、SLO(サービスレベル目標)の設定、エラーバジェットの追跡、そしてそれに基づくアラートの生成まで、一貫したワークフローを提供します。
主な機能
- SLIの定義: レイテンシ、エラー率、スループット、可用性などの主要な指標を定義します。
- SLOの設定: 目標値(例: 99.9%の可用性、500ms未満のレイテンシ)を設定します。
- エラーバジェット管理: 許容されるダウンタイムやエラー率の予算を計算し、追跡します。
- アラート設定: エラーバジェット消費率に基づくアラートルールを生成します。
- レポート生成: SLOの達成状況を可視化するレポートを生成します。
サポート対象プラットフォーム
- Prometheus + Grafana(オープンソーススタック)
- Datadog(SaaSモニタリング)
- New Relic(SaaSモニタリング)
- AWS CloudWatch(AWSネイティブ)
- Google Cloud Monitoring(GCPネイティブ)
使い方
- 監視対象のサービスを特定します。
- 重要なユーザージャーニーに基づいてSLIを定義します(例: ログインのレイテンシ)。
- ビジネス要件に基づいてSLOを設定します(例: 週間のログイン成功率99.9%)。
- エラーバジェットを計算します(例: 週あたりの許容ダウンタイムは約10分)。
- エラーバジェット消費率に基づくアラートルールを生成します。
例
以下は、PrometheusとGrafanaを使用した簡単な設定例です。
SLIとSLOの定義(YAML)
sli:
- name: request_latency
metric: http_request_duration_seconds
threshold: 0.5
window: 1w
slo:
- name: latency_slo
target: 99.9%
window: 28d
エラーバジェットアラート(Prometheus)
groups:
- name: slo_alerts
rules:
- alert: LatencySLOWarning
expr: |
(
1 - (
rate(http_request_duration_seconds_bucket{le="0.5"}[5m])
/ rate(http_request_duration_seconds_count[5m])
)
) > (0.001 * 0.5)
for: 5m
labels:
severity: warning
annotations:
summary: "Latency SLO warning: error budget consumed rapidly"
ベストプラクティス
- 重要業績評価指標(KPI)に合わせる: SLIはユーザーエクスペリエンスに直接関連する指標を選びます。
- 適切な目標値を設定する: 過度に高い目標(100%)は非現実的であり、ビジネス価値とトレードオフを考慮します。
- エラーバジェットを活用する: エラーバジェット消費率が高い場合は、新機能開発よりも信頼性向上を優先します。
- 定期的な見直し: SLIとSLOはサービスが進化するにつれて見直し、調整します。