Google Cloud

Cloud Monitoring SLO + Burn Rate アラート設定チュートリアル

2026-05-24
NicheeLab編集部

Cloud Monitoring の SLO 機能を使った本番アラート設計を完全チュートリアル化します。 SLI 選定から Burn Rate Multi-window アラート、Terraform IaC 化、Synthetic Monitoring まで網羅します。

SLO 設計フロー

  1. ユーザー体験を定義 (例: API レスポンスが 500ms 以内に返ること)
  2. SLI 選定 (Availability / Latency / Throughput / Correctness)
  3. SLO 設定 (例: 99.9% を Rolling 28 日で維持)
  4. Error Budget 計算 (99.9% → 月 43 分のダウン許容)
  5. Burn Rate アラート Multi-window 設定
  6. 定期的に SLO レビュー (四半期)

SLI 例

サービスSLI
REST APIHTTP 2xx/3xx 率 + P95 Latency
非同期処理処理成功率 + Queue 滞留時間
バッチ処理完了時間内成功率
データパイプラインFreshness + Correctness
StorageRead/Write 成功率 + Latency

Cloud Run の SLO 設定 (Terraform)

resource "google_monitoring_service" "api" {
  service_id   = "api-service"
  display_name = "Order API"

  basic_service {
    service_type = "CLOUD_RUN"
    service_labels = {
      service_name = "order-api"
      location     = "asia-northeast1"
    }
  }
}

resource "google_monitoring_slo" "availability" {
  service             = google_monitoring_service.api.service_id
  slo_id              = "availability-99-9"
  display_name        = "99.9% Availability over 28d"
  goal                = 0.999
  rolling_period_days = 28

  basic_sli {
    availability {}
  }
}

resource "google_monitoring_slo" "latency" {
  service             = google_monitoring_service.api.service_id
  slo_id              = "latency-p95-500ms"
  display_name        = "95% requests under 500ms"
  goal                = 0.95
  rolling_period_days = 28

  basic_sli {
    latency {
      threshold = "0.5s"
    }
  }
}

Burn Rate アラート (Multi-window Multi-burn-rate)

resource "google_monitoring_alert_policy" "fast_burn" {
  display_name = "Fast burn: 14.4x in 1h"
  combiner     = "OR"

  conditions {
    display_name = "Fast burn"
    condition_threshold {
      filter = <<EOT
select_slo_burn_rate("${google_monitoring_slo.availability.name}", 3600s)
EOT
      threshold_value = 14.4
      duration        = "60s"
      comparison      = "COMPARISON_GT"
    }
  }

  notification_channels = [google_monitoring_notification_channel.pagerduty.id]
}

resource "google_monitoring_alert_policy" "slow_burn" {
  display_name = "Slow burn: 3x in 24h"
  combiner     = "OR"

  conditions {
    display_name = "Slow burn"
    condition_threshold {
      filter = <<EOT
select_slo_burn_rate("${google_monitoring_slo.availability.name}", 86400s)
EOT
      threshold_value = 3
      duration        = "300s"
      comparison      = "COMPARISON_GT"
    }
  }

  notification_channels = [google_monitoring_notification_channel.slack.id]
}

通知チャネル設定

# PagerDuty
resource "google_monitoring_notification_channel" "pagerduty" {
  display_name = "PagerDuty: SRE"
  type         = "pagerduty"
  labels = { service_key = var.pagerduty_key }
}

# Slack
resource "google_monitoring_notification_channel" "slack" {
  display_name = "Slack: #alerts"
  type         = "slack"
  labels = {
    channel_name = "#alerts"
    auth_token   = var.slack_token
  }
}

# Webhook
resource "google_monitoring_notification_channel" "webhook" {
  display_name = "Custom Webhook"
  type         = "webhook_tokenauth"
  labels       = { url = "https://api.example.com/alerts" }
}

OpenTelemetry 計装例 (Python)

from opentelemetry import metrics, trace
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.metrics import MeterProvider
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
from opentelemetry.exporter.cloud_monitoring import CloudMonitoringMetricsExporter

resource = Resource.create({"service.name": "order-api", "service.version": "1.0.0"})
reader = PeriodicExportingMetricReader(CloudMonitoringMetricsExporter())
metrics.set_meter_provider(MeterProvider(resource=resource, metric_readers=[reader]))

meter = metrics.get_meter(__name__)
order_counter = meter.create_counter("orders_total", description="Total orders")
order_latency = meter.create_histogram("order_latency_ms", unit="ms")

# アプリ内で記録
order_counter.add(1, {"status": "success"})
order_latency.record(123.4)

Synthetic Monitoring (E2E)

// Puppeteer Script (synthetic-script.js)
const synthetics = require('@google-cloud/synthetics-sdk');

synthetics.GenericSynthetic(async () => {
  const browser = await synthetics.launch();
  const page = await browser.newPage();
  await page.goto('https://app.example.com/login');
  await page.fill('#email', '[email protected]');
  await page.click('#login-button');
  await page.waitForSelector('#dashboard');
  return { success: true };
});

# デプロイ (Cloud Functions として)
gcloud functions deploy synthetic-login \
  --gen2 --runtime=nodejs20 --trigger-http

Golden Signal ダッシュボード

  • Latency: P50 / P95 / P99 (Time Series)
  • Traffic: Request/秒 (Line Chart)
  • Errors: エラー率 (Scorecard + 履歴)
  • Saturation: CPU / メモリ / Queue 滞留
  • SLO 進捗 (Error Budget Gauge)

運用チェックリスト

  • ☐ SLI 定義 (Cloud Run / GKE)
  • ☐ SLO 設定 (99.9% / 28 日 Rolling)
  • ☐ Fast burn アラート → PagerDuty
  • ☐ Slow burn アラート → Slack
  • ☐ Uptime Check (5 拠点)
  • ☐ Synthetic Monitoring (主要 UX)
  • ☐ Error Budget Policy 文書化
  • ☐ Postmortem テンプレート準備
  • ☐ On-call ローテーション

SLO はどう設計する?

ユーザー体験に直結する SLI を選ぶ (Availability / Latency P99)。SLO はビジネス要件と運用負荷のバランス、通常 99.9% から始める。

Burn Rate アラートの推奨設定は?

Multi-window Multi-burn-rate パターン: Fast burn (14.4x × 1h) → PagerDuty 即時、Slow burn (3x × 24h) → Email 翌営業日。

Cloud Monitoring の SLO 機能でどこまで自動化される?

SLI 計算 + SLO 評価 + Error Budget 可視化 + Burn Rate アラートが自動。手動は SLI 定義 + 通知チャネル設定のみ。

OpenTelemetry で計装すべき?

推奨。Vendor lock-in 回避 + 標準仕様 + Auto-instrumentation (Java/Python/Go)。Cloud Monitoring / Trace / Logging に標準送信可。

通知チャネルは何を使う?

本番アラート: PagerDuty、社内通知: Slack、定期レポート: Email、自動化: Pub/Sub → Cloud Functions。複数併用が標準。

Datadog / New Relic と併用するべき?

Cloud Monitoring で十分なケースが多い。Multi-cloud / 高度な APM 必要なら Datadog 併用。コスト最優先なら Cloud Monitoring のみ。

ダッシュボードはどう作る?

Service ごとに 1 ダッシュボード推奨。Golden Signal (Latency / Traffic / Errors / Saturation) を含める。Terraform で IaC 化が定石。

Synthetic Monitoring は何ができる?

ブラウザ操作シナリオを定期実行 (Puppeteer ベース、2024 GA)。ログイン → 検索 → 購入 等の E2E パスを外部監視可能。

関連記事・可観測性 / SRE

GCP Professional Cloud Developer (PCD) 完全ガイド|Cloud Run・GKE・CI/CD・APM

Google Cloud Professional Cloud Developer の試験範囲、Cloud Run / GKE / Cloud Build / Cloud Trace、AWS DVA / Azure AZ-204 比較、学習ロードマップを徹底解説。

GCP PCDOE 試験対策|SRE / SLI / SLO / Error Budget 実装パターン完全ガイド

Google Cloud Professional Cloud DevOps Engineer (PCDOE) の SRE 領域を実装視点で深掘り。SLI / SLO / Error Budget / Burn Rate / Toil 削減 / Postmortem / Cloud Monitoring SLO 機能を解説。

Cloud Scheduler + Cloud Functions/Run で定期バッチ自動化チュートリアル (GCP)

Google Cloud Scheduler と Cloud Functions / Cloud Run Job で定期バッチ自動化。cron 形式、OIDC 認証、リトライ、Dead Letter、Workflows 連携、Cloud Run Job 並列実行を 2026 年最新版で解説。

GCP Professional Cloud DevOps Engineer (PCDOE) 完全ガイド|SRE・GKE・CI/CD・SLO

Google Cloud Professional Cloud DevOps Engineer の試験範囲、SRE / SLI / SLO / Error Budget、GKE / Cloud Build / Cloud Deploy、AWS DOP・Azure AZ-400 比較を徹底解説。

※ Google Cloud は Google LLC の商標です。最新は SLO Monitoring 公式 をご確認ください。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

GCP 試験対策ページを見る
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Google Cloud

Google Cloud (GCP) 認定資格ロードマップ 2026 完全版|全 15 試験を体系化

Google Cloud 認定資格 全 15 試験 (Foundational 2 + Associate 3 + Pr...

Google Cloud

Cloud Digital Leader (CDL) 完全ガイド|出題範囲・学習リソース・合格戦略

Google Cloud Cloud Digital Leader (CDL) の完全ガイド。6 ドメイン 92 bul...

Google Cloud

Generative AI Leader (GAIL) 完全ガイド|Google Cloud 生成 AI 認定

Google Cloud Generative AI Leader (GAIL、2025-05-14 リリース) の完全...

Google Cloud

Vertex AI 入門|Google Cloud 統合 ML プラットフォームの全機能

Google Cloud Vertex AI の入門解説。Vertex AI Studio / Agent Builde...

Google Cloud

GCP Associate Cloud Engineer (ACE) 完全ガイド|試験範囲・受験料・学習ロードマップ

Google Cloud Associate Cloud Engineer (ACE) の試験範囲・受験料 125 US...

Google Cloudの記事一覧 (102件)
© 2026 NicheeLab All rights reserved.