Webhook の通知テンプレートを設定することで、Application Real-Time Monitoring Service (ARMS) はオープンソースの Alertmanager フォーマットでアラート内容を送信できます。
制限事項
Webhook を使用してアラート通知をカスタマイズする際は、以下の制限事項にご注意ください。
-
Content-Type は application/json である必要があります。
-
$contentフィールドとは併用できません。$alertmanager_contentを使用する場合、$contentは有効になりません。 -
ARMS コンソールの Webhook テスト機能では、
$alertmanager_contentの置き換えをテストすることはできません。
設定手順の詳細については、「Webhook を使用したアラート通知のカスタマイズ」をご参照ください。
アラートペイロードのフォーマット
ARMS は、次の例に示すように、オープンソースの Alertmanager フォーマットでアラートペイロードを Webhook に送信します。詳細については、Prometheus の公式ドキュメントをご参照ください。
{
"alerts": [
{
"annotations": {
"_aliyun_arms_alert_value": "15.521240234375",
"_aliyun_arms_alert_message": "null\nMessage ID: ac10c42a16124966960554200d2450-7996494\n",
"_aliyun_arms_alert_now_value": "15.521240234375",
"message": "Alert: Namespace: {{$labels.namespace}} / Pod: {{$labels.pod_name}} / Container: {{$labels.container}} Memory usage exceeds 80%. Current value: {{ printf \"%.2f\" $value }}%",
"value": "15.521240234375",
"_aliyun_arms_alert_past_value": "15.521240234375"
},
"endsAt": "2021-02-22T07:27:15.404000000Z",
"fingerprint": "bec72890cc2c7b4a027e008df0cd1013",
"labels": {
"container": "kube-state-metrics",
"severity": "warning",
"_aliyun_arms_alert_level": "ERROR",
"instance": "10.0.80.186:10255",
"clustername": "klyz1688-kubernetes-1",
"_aliyun_arms_alert_type": "101",
"_aliyun_arms_integration_name": "test-integration-prometheus",
"alertname": "Container memory usage > 80%",
"_aliyun_arms_userid": "1131971649496228",
"_aliyun_arms_involvedObject_name": "klyz1688-kubernetes-1",
"pod_name": "kube-state-metrics-ccb59dbff-jljg4",
"_aliyun_arms_involvedObject_id": "cb36dcafb9b9340498fad2e1f40b9a254",
"_aliyun_arms_region_id": "cn-hangzhou",
"_aliyun_arms_involvedObject_kind": "cluster",
"_aliyun_arms_product_type": "PROMETHEUS",
"name": "k8s_kube-state-metrics_kube-state-metrics-ccb59dbff-jljg4_arms-prom_359508f3-7e76-4740-b915-41ea48849641_0",
"namespace": "arms-prom",
"_aliyun_arms_integration_id": "80",
"_aliyun_arms_involvedObject_type": "ManagedKubernetes",
"_aliyun_arms_alert_rule_id": "3927051"
},
"startsAt": "2021-02-22T07:18:15.578000000Z",
"status": "firing"
}
],
"commonAnnotations": {
"_aliyun_arms_alert_value": "15.521240234375",
"_aliyun_arms_alert_message": "null\nMessage ID: ac10c42a16124966960554200d2450-7996494\n",
"_aliyun_arms_alert_now_value": "15.521240234375",
"message": "Alert: Namespace: {{$labels.namespace}} / Pod: {{$labels.pod_name}} / Container: {{$labels.container}} Memory usage exceeds 80%. Current value: {{ printf \"%.2f\" $value }}%",
"value": "15.521240234375",
"_aliyun_arms_alert_past_value": "15.521240234375"
},
"commonLabels": {
"container": "kube-state-metrics",
"severity": "warning",
"_aliyun_arms_alert_level": "ERROR",
"instance": "10.0.80.186:10255",
"clustername": "klyz1688-kubernetes-1",
"_aliyun_arms_alert_type": "101",
"_aliyun_arms_integration_name": "test-integration-prometheus",
"alertname": "Container memory usage > 80%",
"_aliyun_arms_userid": "1131971649496228",
"_aliyun_arms_involvedObject_name": "klyz1688-kubernetes-1",
"pod_name": "kube-state-metrics-ccb59dbff-jljg4",
"_aliyun_arms_involvedObject_id": "cb36dcafb9b9340498fad2e1f40b9a254",
"_aliyun_arms_region_id": "cn-hangzhou",
"_aliyun_arms_involvedObject_kind": "cluster",
"_aliyun_arms_product_type": "PROMETHEUS",
"name": "k8s_kube-state-metrics_kube-state-metrics-ccb59dbff-jljg4_arms-prom_359508f3-7e76-4740-b915-41ea48849641_0",
"namespace": "arms-prom",
"_aliyun_arms_integration_id": "80",
"_aliyun_arms_involvedObject_type": "ManagedKubernetes",
"_aliyun_arms_alert_rule_id": "3927051"
},
"externalURL": "https://alerts.console.aliyun.com/#/alarm/alert/detail/2848",
"groupLabels": {
"alertname": "Container memory usage > 80%"
},
"receiver": "testjiubian",
"status": "firing"
}
Webhook を使用した Alertmanager フォーマットのアラート受信
-
ARMS コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
-
Webhook の統合 タブをクリックし、webhook の新規作成 をクリックします。
-
ダイアログボックスで、パラメーターを設定します。詳細については、「ステップ 2: Webhook 連絡先の作成」をご参照ください。[Webhook の作成] ダイアログボックスで、[Webhook 名] に
my-webhookなどを入力し、[メソッド] で [Post] を選択し、送信先 URL を入力します。[ヘッダー] の [Content-Type] をapplication/jsonに設定します。[通知テンプレート] と [解決済みテンプレート] の両方に$alertmanager_contentを入力します。その後、[テスト送信] をクリックして設定を検証します。