Lors de la création d'une politique de notification, vous pouvez envoyer des notifications d'alerte à une URL de webhook personnalisée. La fonctionnalité de gestion des alertes permet d'acheminer les alertes vers des services tiers via une intégration webhook. Cette rubrique utilise Lark comme exemple pour illustrer la création et la configuration d'un webhook pour les alertes.
Étape 1 : Obtenir une URL de webhook
Ouvrez Lark et connectez-vous.
Cliquez sur l'icône +, puis sur Create Group pour créer un groupe destiné à recevoir les alertes.
Cliquez sur l'icône des paramètres du groupe, puis sélectionnez l'onglet Bots.
Dans l'onglet Bots, cliquez sur Add Bot.
Dans le panneau Add Bot, sélectionnez Custom Bot.
Sur la page de configuration, définissez le Display name et la Description, puis cliquez sur Add.
-
Dans la section Webhook URL, cliquez sur Copy Link, puis sur Finish.
Dans la section Security Settings, cochez la case Custom Keywords et ajoutez le mot-clé
alert.
Étape 2 : Créer une intégration webhook
Connectez-vous à la console Managed Service for Prometheus. Dans le volet de navigation de gauche, choisissez .
-
Sélectionnez l'onglet Webhook integration, cliquez sur Create webhook en haut à droite, puis configurez les paramètres suivants dans le panneau Create webhook.
Paramètre
Description
Webhook name
Saisissez un nom personnalisé pour le webhook.
Méthode de requête
Sélectionnez la méthode de requête (POST ou GET) et saisissez une URL commençant par http:// ou https://. L'URL ne doit pas dépasser 100 caractères.
Pour cet exemple, sélectionnez POST et collez l'URL du webhook obtenue à l'Étape 1 : Obtenir une URL de webhook dans la zone de texte à droite.
En-tête, paramètre
Définissez l'en-tête de requête et les paramètres. Chaque en-tête et paramètre ne doit pas dépasser 200 caractères.
Cliquez sur + Add pour ajouter d'autres en-têtes ou paramètres. L'en-tête de requête par défaut est
Content-Type: text/plain; charset=UTF-8. Le nombre total d'en-têtes et de paramètres ne peut pas dépasser six.Pour cet exemple, définissez les deux en-têtes suivants :
-
Arms-Content-Type : json
-
Content-Type : application/json
Si vous sélectionnez POST comme méthode de requête, vous devez également configurer les paramètres suivants.
Notification template
Modèle pour les notifications d'alertes déclenchées. Vous pouvez utiliser l'espace réservé $content pour afficher le contenu de la notification. Le modèle ne doit pas dépasser 500 caractères. Pour plus d'informations, consultez la rubrique Configurer les modèles de notification et les modèles webhook.
Voici un exemple de modèle de notification :
{ "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 }}", "Alert content":"{{ for .alerts }} {{ .annotations.message }} {{ end }}" }Pour l'exemple avec Lark, vous pouvez définir le format de texte suivant :
{ "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 }} \nAlert content: {{ for .alerts }} {{ .annotations.message }}\n {{ end }}" } }Template to Clear Alerts
Modèle pour les notifications envoyées lors de la résolution d'une alerte. Vous pouvez utiliser l'espace réservé $content pour afficher le contenu de la notification. Le modèle ne doit pas dépasser 500 caractères. Pour plus d'informations, consultez la rubrique Configurer les modèles de notification et les modèles webhook.
Voici un exemple :
{ "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 }}", "Recovery time":"{{ .endTime }}", "Alert content":"{{ for .alerts }} {{ .annotations.message }} {{ end }}" }Pour l'exemple avec Lark, vous pouvez définir le format de texte suivant :
{ "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 }}Recovery time: {{ .startTime }} \nNotification policy: {{ .dispatchRuleName }} \nResolved alert content: {{ for .alerts }} {{ .annotations.message }}\n {{ end }}" } } -
(Facultatif) Cliquez sur Test pour vérifier votre configuration.
Cliquez sur OK.
Étape 3 : Configurer une politique de notification
Créez ou modifiez une politique de notification. Pour les Notification objects, sélectionnez Universal webhook, puis choisissez l'intégration webhook que vous avez créée. Pour plus d'informations, consultez la rubrique Politique de notification.
Le délai d'expiration d'une requête webhook est de 5 secondes. Si l'endpoint ne répond pas dans ce délai, la livraison de la notification échoue.