G-genの福井です。Cloud Monitoring の SLO モニタリングの設定手順を紹介します。

はじめに
本記事では、Google Cloud の Cloud Monitoring を利用し、サービスの品質を定量的に管理するための SLO モニタリングを設定する手順を解説します。
サービス運用では、「システムの現在の状態は健全か」「ユーザーに快適な体験を提供できているか」という問いに、データに基づいて客観的に答えることが求められます。Google が提唱する SRE(Site Reliability Engineering)のプラクティスでは、これらの問いに答える判断基準として SLO(Service Level Objective)を用います。
SLO モニタリングは、「感覚的な運用」から脱却し、観測した数値に基づいてサービス品質の管理や改善活動の意思決定を行うための仕組みです。
具体的な設定手順に入る前に、SLO を理解する上で不可欠な3つの基本用語を解説します。
| 用語 | 概要 | 具体例 |
|---|---|---|
| SLI(Service Level Indicator) | サービスの健康状態を定量的に測る指標。良いサービスを定義する「物差し」の役割を果たす | ・可用性(リクエストの成功率) ・レイテンシ(リクエストの応答時間) |
| SLO(Service Level Objective) | SLI で計測した値が達成すべき具体的な目標値。この目標の遵守状況が、サービスの信頼性を判断する基準となる | ・月間の可用性が 99.9% であること ・リクエストの 95% が 500ms 以内に応答されること |
| エラーバジェット(Error Budget) | SLOで定めた目標を100%から引いた残り、つまり「使い切っても良いエラーの許容量」です。この予算内で新機能のリリースを行い、枯渇しそうなら品質改善に注力するなど、開発速度と信頼性のバランスを取るために利用される | ・SLO が 99.9% の場合、0.1% がエラーバジェットになる ・この 0.1% の範囲内での品質低下は許容される |
SLO 設定の前提
今回の手順解説では、Google Cloud 上で稼働する、ごく一般的な Web アプリケーションを例に、設定手順を解説します。
今回の構成と利用するサービスは以下の通りです。
| 項目 | 内容 |
|---|---|
| モニタリング対象サービス | Cloud Run で稼働する Web アプリケーション |
| アクセス経路 | Cloud Run のサービス URL をインターネットに公開 |
| モニタリングツール | Cloud Monitoring |
SLO を設定する上での最も重要な前提条件は、対象のサービスがすでに稼働しており、Cloud Monitoring 上で指標(メトリクス)が収集されていることです。
SLI / SLO は既存のメトリクスに基づいて定義されるため、まだデプロイされていないサービスや、全くトラフィックがないサービスに対して設定することはできません。本記事でも、すでに Cloud Run にアプリケーションがデプロイされ、サービス URL を通じてトラフィックが発生している状態から手順を開始します。
Service の作成
SLO モニタリングを開始するには、まずモニタリング対象となる「Service」を Cloud Monitoring に登録します。
ここでの「Service」とは、Cloud Run や GKE、特定の VM 群といった、アプリケーションやマイクロサービスの論理的な単位を指します。
Google Cloud コンソールの Cloud Monitoring 画面で、[検出] > [SLO] > [サービスを定義] を選択します。

モニタリング対象のサービスを一覧から選択し、[送信]を選択します。

- 参考: サービスを定義する
SLO の作成
作成した Service の信頼性を評価するための具体的な目標、SLO(Service Level Objective)を設定します。
今回は、代表的な SLO として「可用性」と「レイテンシ」の2種類を設定する手順を解説します。
可用性 SLO の設定
可用性は、サービスがリクエストに対して正常に応答しているかどうかを示す指標であり、最も基本的な SLO の一つです。ここでは「リクエスト総数のうち、正常なリクエストが占める割合」を目標として設定します。
Google Cloud コンソールの Cloud Monitoring 画面で、[検出] > [SLO] > 作成した Service を選択します。

[+ SLO を作成] を選択します。

SLI の設定
指標の選択に 可用性、リクエスト ベースまたはウインドウ ベースの選択に リクエスト ベース を選択し、[続行] を選択します。

[続行] を選択します。

SLO の設定
直近30日間において、リクエストの99.9%が5xxエラー以外で応答されること を目標として定義するため、以下のように設定します。
期間の種類である「連続」は、現在から過去に遡った一定期間を評価対象とするため、継続的なサービスレベルの評価に適しています。設定後、[続行] を選択します。
| 項目 | 選択値 |
|---|---|
| 期間の種類 | 連続 |
| 期間の長さ | 30 |
| 目標 | 99.9 |

[SLO を作成] を選択します。

- 参考: SLO の作成
レイテンシ SLO の設定
ユーザーの体感品質に直結するもう一つの重要な指標、レイテンシ(応答時間)に関する SLO を設定します。
ここでは「全リクエストのうち、一定時間内に応答が完了したリクエストの割合」を目標として定義します。
手順は可用性 SLO の設定とほぼ同じです。Service ダッシュボードの [+ SLO を作成] ボタンから開始します。
SLI の設定
指標の選択に レイテンシ、リクエスト ベースまたはウインドウ ベースの選択に リクエスト ベース を選択し、[続行] を選択します。

正常と判断する応答時間の上限値を設定します。
レイテンシのしきい値に 500 を入力し、[続行] を選択します。

SLO の設定
直近30日間において、リクエストの95%が500ms以内に応答されること を目標として定義するため、以下を選択し、[続行] を選択します。
| 項目 | 選択値 |
|---|---|
| 期間の種類 | 連続 |
| 期間の長さ | 30 |
| 目標 | 95 |

[SLO を作成] を選択します。

エラーバジェットのアラート設定
アラート設定の必要性
SLO を設定しただけでは、サービス品質の低下が自動的に通知されるわけではありません。そのため、エラーバジェットが危険な水準まで消費される前に通知を受け取る仕組みとして、アラートの設定は不可欠です。
Cloud Monitoring の SLO モニタリングでは、エラーバジェットの消費速度(バーンレート) に基づいてアラートを発行することが推奨されています。
バーンレートとは、エラーバジェットを消費していくペースを指します。例えば、「この1時間のエラー発生ペースが続くと、SLO期間(30日間)で許容されるエラーバジェットを10日で使い切ってしまう」といった状況を検知するのがバーンレートアラートです。これにより、一時的なエラーの急増に過剰反応することなく、持続的かつ重大な品質低下を早期に警告できます。
エラーバジェットのアラートの種類
バーンレートに基づくアラートは、その緊急性に応じて、一般的に「高速バーン」と「低速バーン」の2種類を設定することが推奨されます。
| アラートの種類 | 目的 | 推奨される設定(目安) |
|---|---|---|
| 高速バーン | 重大なレート変化の即時検知 サービスの致命的な障害など、エラーバジェットを急激に消費する事態を直ちに検知します。 |
・バーンレートしきい値:10(30日間のSLO期間の場合、3日でバジェットを消費するペース)・ルックバック期間: 1時間 ・用途:緊急対応(夜間・休日呼び出しなど) |
| 低速バーン | 長期的な品質低下の検知 緊急ではないが、このままでは期間終了までに目標を達成できない、緩やかな品質低下を検知します。 |
・バーンレートしきい値:2(30日間のSLO期間の場合、15日でバジェットを消費するペース)・ルックバック期間: 24時間・用途:計画的な日中対応(チケット発行など) |
このように複数のアラートを組み合わせることで、様々なパターンの品質低下に対応できます。
アラートポリシーの作成手順
アラートを設定したい SLO の行にある [アラートの起動アイコン] を選択します。

ルックバック期間に 60、バーンレートのしきい値に10を入力し、[次へ]を選択します。

通知チャンネルの作成から行う場合は、通知チャンネルを選択し、[Manage Notification Channels] を選択します。

Email 行の [Add New] を選択します。

Email Address に 通知先のメールアドレス、Display Name に 通知チャンネルの表示名 を入力し、[Save] を選択します。

通知チャンネルに 作成した通知チャンネル を選択し、[次へ] を選択します。

[Save] を選択します。

- 参考: アラート ポリシーの作成
ダッシュボードの確認
Service の定義、SLO の設定、アラートポリシーの作成が完了すると、SLO モニタリングの運用フェーズに入ります。その中心となるのが、各 Service ごとに自動で生成される専用のダッシュボードです。
このダッシュボードには、サービスの信頼性に関する様々な情報が集約されており、日々の健全性確認や問題発生時の状況把握に役立ちます。
今回は、アクセスすると 5xx エラー となる Cloud Run サービスに対して、SLO モニタリングの設定を追加しています。
モニタリングの設定を行った後、Cloud Run サービスに複数回アクセスした状態のダッシュボードです。

SLO アラートの設定で通知されたメールです。

- 参考: サービス ダッシュボードの使用
福井 達也(記事一覧)
カスタマーサクセス課 エンジニア
2024年2月 G-gen JOIN
元はアプリケーションエンジニア(インフラはAWS)として、PM/PL・上流工程を担当。G-genのGoogle Cloudへの熱量、Google Cloudの魅力を味わいながら日々精進
