エラー バジェットのレートに関するアラート ポリシーは、SLO データの取得で説明されている時系列セレクタ select_slo_burn_rate
に基づいて決まります。その他の時系列セレクタも、アラート ポリシーの基礎として使用できます。SLO ベースのアラート ポリシーの詳細については、バーンレートに関するアラートをご覧ください。
アラート ポリシーを作成するには、alertPolicies.create
メソッドを使用します。このメソッドの一般的な使用方法は、アラート ポリシーの管理に記載されています。
SLO のアラート ポリシーは、その他の指標しきい値のアラート ポリシーに似ていますが、1 点だけ異なる点があります。それは、MetricThreshold
の filter
条件の指定で指標のタイプとモニタリング対象リソースのタイプのペアではなく、時系列セレクタを使用することです。
SLO ベースのアラート ポリシーの条件
アラート ポリシーには少なくとも 1 つの条件が必要です。SLO ベースの状態の場合は、MetricThreshold
型の条件を使用します。
指標しきい値の条件には、filter
と aggregations
の時系列構成のペアを 2 組含めることができます。SLO データは他の時系列データとは異なる方法で取得されるため、SLO の条件で使用される唯一のフィールドは filter
フィールドだけです。
SLO の条件では、comparison
、thresholdValue
、duration
、および trigger
フィールドが設定されます。
この例では、バーンレートが通常速度の 2 倍を超えた場合に違反とする条件を作成します。構造は次のようになります。
"conditions": [ { "displayName":"SLO burn rate alert for ${SLO_ID} exceeds 2", "conditionThreshold": { "filter": DATA_RETRIEVAL_FILTER_FOR_SLO, "comparison":"COMPARISON_GT", "thresholdValue": 2, "duration": { "seconds":"0", }, }, } ],
filter
フィールドを設定するには、特定の SLO のリソース名が必要になります。この値の形式は次のとおりです。projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}
。SLO ID の確認方法については、SLO の一覧表示をご覧ください。
バーンレートに関するアラートを作成するには、時系列セレクタ select_slo_burn_rate
を使用します。このセレクタには、ターゲット SLO とルックバック期間という 2 つの値があります。詳細については、select_slo_burn_rate
をご覧ください。
たとえば、次のフィルタは、1 時間のルックバック期間を持つターゲット SLO のバーンレートを取得します。
"filter":"select_slo_burn_rate(\"projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}\", \"60m\")"
アラート ポリシーの残りの部分
アラート ポリシーを完了するには、残りのフィールドに値を指定します。
displayName
: アラート ポリシーの説明。combiner
: 条件を組み合わせるロジックを記述します。このポリシーには条件が 1 つしかないため、AND
とOR
のいずれも正しく動作します。notificationChannels
: アラート ポリシーがトリガーされたときに使用する既存の通知チャネルの配列。通知チャネルの検索と作成については、通知チャネルをご覧ください。documentation
: 条件に違反したときに送信される、受信した側が問題を診断するための情報。詳細については、Documentation
をご覧ください。
アラート ポリシーの作成
次の例では、API を使用してバーンレートのアラート ポリシーを作成します。アラート ポリシーの一覧表示、変更、削除については、API ごとのアラート ポリシーの管理をご覧ください。
プロトコル
curl
を使用してアラート ポリシーを作成するには、POST
メッセージを https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies
エンドポイントに送信、および、アラート ポリシーをリクエストの本文に指定します。リクエスト本文の JSON に、1 時間のルックバック期間が設定された select_slo_burn_rate
時系列セレクタに基づくしきい値条件を使用するアラート ポリシーを記述します。
リクエストの本文を格納する変数を作成します。
CREATE_ALERT_POST_BODY=$(cat <<EOF { "displayName":"SLO burn-rate alert for ${SLO_ID} with a threshold of 2", "combiner":"AND", "conditions": [ { "displayName":"SLO burn rate alert for ${SLO_ID} exceeds 2", "conditionThreshold": { "filter":"select_slo_burn_rate(\"projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}\", \"60m\")", "comparison":"COMPARISON_GT", "thresholdValue": 2, "duration": { "seconds":"0", }, }, } ], "notificationChannels": ["${NOTIFICATION_CHANNEL}", ], "documentation": { "content": "SLO burn for the past 60m exceeded twice the acceptable budget burn rate.", "mime_type": "text/markdown", }, } EOF )
リクエストをエンドポイントに送信します。
curl --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}" --header "Content-Type: application/json" -X POST -d "${CREATE_ALERT_POST_BODY}" https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies