Cloud Monitor は、しきい値を超過した際にトリガーされるアラート通知を、HTTP または HTTPS POST を介してご利用の O&M システムまたは通知システムにプッシュできます。これにより、Cloud Monitor コンソールへのポーリングを行わずに、アラートをプログラムで処理することが可能です(例:ランブックの実行、インシデントの作成、通知のルーティング)。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
ご利用の O&M システムまたは通知システム向けに、パブリックにアクセス可能な URL を用意していること
ファイアウォールの許可リストに、以下の CIDR ブロックを追加していること:
47.74.206.0/26、47.74.206.64/26、47.74.206.128/26、47.74.206.192/26、および8.222.159.116
仕組み
アラートルールがトリガーされると、Cloud Monitor は設定済みのコールバック URL に対して POST リクエストを送信します。このリクエストでは、Content-Type: application/x-www-form-urlencoded を使用します。
コールバックが失敗した場合、Cloud Monitor は最大 3 回再試行します。各リクエストのタイムアウトは 5 秒です。エンドポイントがこの時間内に応答することを確認してください。
制限事項
Cloud Monitor コンソールでは、一度に複数のしきい値アラートコールバックを設定することはできません。複数のコールバック URL を設定するには、API を使用してください。
CreateMetricRuleTemplate を呼び出して、コールバック URL を含むアラートテンプレートを作成し、その後 ApplyMetricRuleTemplate を呼び出して、アプリケーショングループにテンプレートを適用します。
PutGroupMetricRule を呼び出して、アプリケーショングループ向けのアラートルールを作成または変更し、コールバック URL を指定します。
アラートコールバックの設定
Cloud Monitor コンソール にログインします。
左側ナビゲーションウィンドウで、アラート > アラートルール の順に選択します。
アラートルール ページで、変更対象のアラートルールを見つけ、編集 をクリックします(操作 列)。
説明新規ルールでコールバックを設定する場合は、まずアラートルールを作成し、その後本手順に戻ってください。
アラートルールの編集 パネルで、アラートコールバック フィールドにコールバック URL を入力します。
(任意)コールバック URL のテスト:
コールバック URL の横にある テスト をクリックします。
Webhook テスト パネルで、テストテンプレートタイプ および 言語 を設定し、テスト をクリックします。
返された状態コードおよびテスト結果の詳細を確認し、接続性を検証します。
閉じる をクリックします。
確認 をクリックします。
POST リクエストのリファレンス
アラートルールがトリガーされると、Cloud Monitor は以下のパラメーターを含む POST リクエストをコールバック URL に送信します。
今後のアップデートで、Cloud Monitor が新しいパラメーターを追加する可能性があります。Webhook ハンドラーが未知のパラメーターを受信しても、受け入れて無視するように実装してください。
リクエストのサンプル
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
expression=$Average>=95&metricName=Host.mem.usedutilization&instanceName=instance-name-****&signature=eEq1zHuCUp0XSmLD8p8VtTKF****&metricProject=acs_ecs&userId=110803419679****&curValue=97.39&alertName=Basic monitoring-ECS-Memory usage&namespace=acs_ecs_dashboard&triggerLevel=WARN&alertState=ALERT&preTriggerLevel=WARN&ruleId=applyTemplateee147e59-664f-4033-a1be-e9595746****&dimensions={userId=110803419679****, instanceId=i-8psdh7l6lphbn10l****}×tamp=1508136760&productGroupName=test_Group&groupId=1666****&lastTime=2 minutes&rawMetricName=cpu_total®ionId=cn-hangzhou®ionName=中国 (杭州)&transId=53767d2a-ae72-11ed-b2ca-00163e2c****&unit=%パラメーター
| パラメーター | データ型 | 説明 |
|---|---|---|
alertName | String | アラート名。例:Basic monitoring-ECS-Memory usage |
alertState | String | アラートステータス。有効な値: OK(正常)、ALERT(発火中)、INSUFFICIENT_DATA(データ不足)。例:ALERT |
curValue | String | アラートが発火または解消された際のメトリック値。例:97.39 |
dimensions | String | アラートが発火したリソース。例:{userId=110803419679**, instanceId=i-8psdh7l6lphbn10l**} |
expression | String | アラート条件(式)。例:$Average>=95 |
groupId | String | アプリケーショングループの ID。例:1666**** |
instanceName | String | インスタンス名。例:instance-name-**** |
lastTime | String | アラートが継続している時間(単位:分)。例:2 分 |
metricName | String | メトリック名。全リストについては、「付録 1:メトリック」のメトリック名Host.mem.usedutilization |
metricProject | String | クラウドサービス名。ほとんどのサービスでは、metricProject は namespace と同一です。例外については、「名前空間マッピング」をご参照ください。例:acs_ecs |
namespace | String | クラウドサービスの名前空間。ほとんどのサービスでは、namespace は metricProject と同一です。例外については、「名前空間マッピング」をご参照ください。全リストについては、「付録 1:メトリック」をご参照ください。例:acs_ecs_dashboard |
preTriggerLevel | String | 前回のアラートの重大度レベル。有効な値: CRITICAL、WARN、INFO。例:WARN |
productGroupName | String | アプリケーショングループ名。例:test_Group |
rawMetricName | String | メトリック ID。全リストについては、「付録 1:メトリック」のメトリック IDcpu_total |
regionId | String | リージョン ID。例:cn-hangzhou |
regionName | String | リージョン名。例:中国 (杭州) |
ruleId | String | このアラートをトリガーしたアラートルールの ID。例:applyTemplateee147e59-664f-4033-a1be-e9595746**** |
timestamp | String | 現在のアラートが発火された時刻(タイムスタンプ形式)。例:1508136760 |
transId | String | アラート発火から解消までの間、ルール内で使用されるリソースの ID。例:53767d2a-ae72-11ed-b2ca-00163e2c**** |
triggerLevel | String | 現在のアラートの重大度レベル。有効な値: CRITICAL、WARN、INFO。例:WARN |
unit | String | メトリックの単位。全リストについては、「付録 1:メトリック」の単位% |
userId | String | ユーザー ID。例:110803419679**** |
名前空間のマッピング
ほとんどのクラウドサービスでは、POST リクエスト内の namespace と metricProject は同一です。以下に、両者が異なるサービスを示します。
| クラウドサービスの名前空間 | コールバック用名前空間 |
|---|---|
acs_ecs_dashboard | acs_ecs |
acs_slb_dashboard | acs_slb |
acs_rds_dashboard | acs_rds |
acs_oss_dashboard | acs_oss |
acs_sls_dashboard | acs_sls |
acs_ess_dashboard | acs_ess |
acs_containerservice_dashboard | acs_containerservice |
acs_apigateway_dashboard | acs_apigateway |
acs_redis_dashboard | acs_kvstore |
acs_ocs_new | acs_ocs |
acs_mns_new | acs_mns |