通知ポリシーを作成する際に、アラート通知をカスタムWebhook URLに送信するように指定できます。Application Real-Time Monitoring Service (ARMS) のアラート管理サブサービスを使用すると、特定のインスタントメッセージングアプリの連絡先にアラート通知を送信できます。このトピックでは、Webhookを使用してLarkに通知を送信する方法について説明します。
ステップ 1: Webhook URL を取得する
コンピューターで Lark チャットボットを構成します。
Lark を開き、ログオンします。
+ アイコンをクリックし、新規グループ をクリックして、アラート通知を受信するために使用する Lark グループを作成します。
設定アイコンをクリックし、次にボットタブをクリックします。
ボット タブで、ボットの追加 をクリックします。
ボットの追加 ダイアログ ボックスの カスタム ボット セクションで、[追加] をクリックします。
ボット名 および 説明 パラメーターを設定し、追加 をクリックします。
コピー (Webhook URL の横) をクリックし、完了をクリックします。
ステップ 2: 連絡先の Webhook を作成する
ARMS consoleにログオンします。左側のナビゲーションペインで、 を選択します。
[連絡先グループの編集] ダイアログ ボックスで、Webhook タブをクリックし、次に Webhook の追加 をクリックします。
Webhookの作成ダイアログボックスで、次のパラメーターを構成します。次の表に、パラメーターの説明を示します。
パラメーター
説明
Webhook名
必須。Webhook の名前を入力します。
POST または GET
必須。リクエストメソッドを指定し、URL を入力します。URL は 256 文字を超えることはできません。
この例では、Post を選択し、手順 1: Webhook URL を取得する で保存した webhook URL をフィールドに貼り付けます。
ヘッダーまたはパラメーター
オプション。リクエストヘッダーを指定します。リクエストヘッダーは200文字を超えることはできません。追加 をクリックして、ヘッダーまたはパラメーターを追加します。デフォルトのリクエストヘッダーは Content-Type: text/plain; charset=UTF-8 です。ヘッダーとパラメーターの合計数は6を超えることはできません。
この例では、次の 2 つの ヘッダー を設定します。
Arms-Content-Type : json
Content-Type : application/json
通知テンプレート
オプション。アラートがトリガーされたときに送信するコンテンツを指定します。このパラメーターは、[Post] を選択した場合にのみ表示されます。プレースホルダー $content を使用して通知コンテンツを指定できます。コンテンツは 500 文字を超えることはできません。詳細については、通知テンプレートと Webhook テンプレートの構成を参照してください。
次の形式で通知内容を指定します。
{ // アラート名 "Alert name":"{{ .commonLabels.alertname }}{{if .commonLabels.clustername }}", // クラスタ名 "Cluster name":"{{ .commonLabels.clustername }} {{ end }}{{if eq "app" .commonLabels._aliyun_arms_involvedObject_kind }}", // アプリケーション名 "Application name":"{{ .commonLabels._aliyun_arms_involvedObject_name }} {{ end }}", // 通知ポリシー "Notification policy":"{{ .dispatchRuleName }}", // アラート時刻 "Alert time":"{{ .startTime }}", // 通知コンテンツ "Notification content":"{{ for .alerts }} {{ .annotations.message }} {{ end }}" }
この例では、次のテンプレートが使用されます。
{ "msg_type": "text", "content": { "text": "Alert name: {{ .commonLabels.alertname }}\n{{if .commonLabels.clustername }}Cluster name: {{ .commonLabels.clustername }}\n{{ end }}{{if eq "app" .commonLabels._aliyun_arms_involvedObject_kind }}Application name: {{ .commonLabels._aliyun_arms_involvedObject_name }}\n{{ end }}Notification policy: {{ .dispatchRuleName }} \nAlert time: {{ .startTime }} \nNotification content: {{ for .alerts }} {{ .annotations.message }}\n {{ end }}" } }
アラートをクリアするためのテンプレート
省略可能。アラートが解決されたときに送信するコンテンツを指定します。このパラメーターは、[Post] を選択した場合にのみ表示されます。$content プレースホルダーを使用して通知コンテンツを指定できます。コンテンツは 500 文字を超えることはできません。詳細については、通知テンプレートと Webhook テンプレートの構成を参照してください。
次の形式で通知コンテンツを指定します。
{ // アラート名 "Alert name":"{{ .commonLabels.alertname }}{{if .commonLabels.clustername }}", // クラスタ名 "Cluster name":"{{ .commonLabels.clustername }} {{ end }}{{if eq "app" .commonLabels._aliyun_arms_involvedObject_kind }}", // アプリケーション名 "Application name":"{{ .commonLabels._aliyun_arms_involvedObject_name }} {{ end }}", // 通知ポリシー "Notification policy":"{{ .dispatchRuleName }}", // アラートが解決された時刻 "Time when the alert is resolved":"{{ .endTime }}", // 通知コンテンツ "Notification content":"{{ for .alerts }} {{ .annotations.message }} {{ end }}" }
この例では、次のテンプレートが使用されます。
{ "msg_type": "text", "content": { "text": "Alert name: {{ .commonLabels.alertname }}\n{{if .commonLabels.clustername }}Cluster name: {{ .commonLabels.clustername }}\n{{ end }}{{if eq "app" .commonLabels._aliyun_arms_involvedObject_kind }}Application name: {{ .commonLabels._aliyun_arms_involvedObject_name }}\n{{ end }}Time when the alert is resolved: {{ .startTime }} \nNotification policy: {{ .dispatchRuleName }} \nNotification content: {{ for .alerts }} {{ .annotations.message }}\n {{ end }}" } }
オプション: テスト をクリックして、構成が有効かどうかを確認します。
OK をクリックします。
ステップ 3: 通知ポリシーを構成する
通知ポリシーを作成または変更するときに、通知オブジェクト パラメーターを ユニバーサル Webhook に設定し、Webhook を選択できます。詳細については、通知ポリシーの作成と管理 を参照してください。
Webhook を使用して送信されるアラート通知のタイムアウト期間は 5 秒です。通知の送信後 5 秒以内に Webhook が応答を受信しない場合、通知の送信は失敗します。