Outre les notifications par e-mail, DingTalk, Lark, WeCom et Slack, Cloud Monitor propose une fonctionnalité de rappel d'alerte pour une gestion plus flexible des événements. Cette rubrique explique comment utiliser cette fonctionnalité pour transférer les notifications d'événements système vers un webhook. Cela vous permet d'intégrer les alertes Cloud Monitor à vos systèmes existants d'exploitation et de maintenance ou de notification.
Prérequis
Vous devez disposer d'une URL publique pour votre système opérationnel ou de messagerie.
Contexte
Cloud Monitor envoie les notifications d'alerte à votre URL sous forme de requêtes POST HTTP ou HTTPS. Ajoutez les plages d'adresses IP suivantes à la liste d'autorisation de votre pare-feu :
Procédure
-
Créez un canal de push.
Cet exemple utilise un webhook comme canal de push.
Connectez-vous à la console Cloud Monitor.
Dans le volet de navigation de gauche, choisissez Event Center > Event Subscription.
Sur la page Event Subscription, cliquez sur l'onglet Push Channel.
Sous l'onglet Push Channel, cliquez sur Create Push Channel.
Dans le panneau Create Push Channel, saisissez un Channel Name, définissez Target Type sur Webhook, Request Method sur POST et Data Format sur JSON. Dans le champ Address, saisissez l'URL de rappel d'alerte et conservez les paramètres par défaut pour les autres options.
Cliquez sur OK.
-
Créez une politique d'abonnement.
Cet exemple s'abonne à l'événement système Instance:InstanceFailure.Reboot:Executing pour une instance ECS et pousse les notifications vers le webhook.
Cliquez sur l'onglet Subscription Policy.
Sous l'onglet Subscription Policy, cliquez sur Create Subscription Policy.
-
Sur la page Create Subscription Policy, configurez les paramètres.
Basic Information : saisissez un nom pour la politique d'abonnement.
-
Alert Subscription : définissez Subscription Type sur System Event. Dans la section Subscription Scope, définissez Product sur ECS et Event Name sur Instance:InstanceFailure.Reboot:Executing. Conservez les paramètres par défaut pour les autres options. Cela permet de s'abonner à l'événement système Instance:InstanceFailure.Reboot:Executing pour toutes les instances ECS de votre compte.
RemarquePour plus d'informations sur les événements système pris en charge par ECS, consultez la documentation ECS.
Merge and Denoise : conservez les paramètres par défaut.
-
Notification : ne configurez pas Notification Configuration. Utilisez la méthode de notification par défaut pour Custom Notification Method.
RemarqueÉtant donné qu'aucun groupe d'alerte n'est configuré dans les Notification Settings, il n'y a aucun contact d'alerte et vous ne recevrez pas de notifications d'alerte.
Push and Integration : sélectionnez le canal de push créé à l'étape 1.
Cliquez sur Submit.
-
Déboguez l'abonnement aux événements.
Sous l'onglet Subscription Policy, cliquez sur Debug Event Subscription.
-
Dans le panneau Create Event Debugging, définissez Product sur ECS et Name sur Instance:InstanceFailure.Reboot:Executing.
Le système génère automatiquement le contenu de débogage au format JSON.
-
Cliquez sur OK.
Le système affiche un message Operation successful. Cloud Monitor envoie alors automatiquement une notification d'alerte test à l'URL du webhook que vous avez spécifiée.
Résultats
Lorsqu'un événement système déclenche une alerte, Cloud Monitor envoie les informations d'alerte à l'URL que vous avez spécifiée. Les webhooks prennent en charge les méthodes de requête POST et GET. Les exemples suivants montrent le contenu de la requête pour chaque méthode :
-
POST JSON
Nom du paramètre :
body.Exemple de contenu :
{ "userInfo": { "aliyunId": "test", "userIdSec": "te***st", "aliyunIdSec": "test***test", "nickName": "test", "nickNameSec": "te***st", "userName": "test", "userId": "test", "userNameSec": "te***st" }, "subscription": { "subscriptionUuid": "testid", "conditions": [ { "field": "source", "op": "EQ", "value": "SYS_EVENT" }, { "field": "product", "op": "IN", "value": "ECS,Redis,RDS,Config,tag" } ], "relation": "AND" }, "batchId": "testbatchid", "alert": { "alertStatus": "TRIGGERED", "groupId": "", "source": "SYS_EVENT", "eventContentMap": { "extensions": { "agentVersion": "test-version", "region": "cn-hangzhou", "azone": "cn-hangzhou-i", "uptime": 23000 }, "vmName": "i-testhost", "impact": "Alert", "opsCode": "InstanceStatusChange", "bizEventId": "test-event-id" }, "dedupId": "test-id", "eventName": "CloudAssistant:FirstHeartbeat", "arn": "acs:ecs:cn-hangzhou:testuser:instance/i-testhost", "timestamp": 1704780333000, "traceId": "testid", "severity": "INFO", "product": "ECS", "eventRawContent": "{}", "eventType": "Notification", "userId": "test", "meta": { "sysEventMeta": { "regionNameEn": "cn-hangzhou", "resourceId": "acs:ecs:cn-hangzhou:test:instance/i-testhost", "product": "ECS", "eventNameEn": "CloudAssistant:FirstHeartbeat", "instanceName": "i-testhost", "level": "INFO", "resource": "", "regionNameZh": "华东1(杭州)", "groupId": "", "serviceTypeEn": "ECS", "eventType": "Notification", "serviceTypeZh": "云服务器ECS", "regionId": "cn-hangzhou", "eventTime": "20240109T140533.642+0800", "name": "CloudAssistant:FirstHeartbeat", "id": "testid", "status": "Normal", "eventNameZh": "云助手首次心跳事件" } } }, "severity": "INFO", "strategyName": "eventwebhook", "userId": "test", "time": 1704780333000 } -
GET JSON
Nom du paramètre :
data.Exemple de contenu :
{ "userInfo": { "aliyunId": "test", "userIdSec": "te***st", "aliyunIdSec": "test***test", "nickName": "test", "nickNameSec": "te***st", "userName": "test", "userId": "test", "userNameSec": "te***st" }, "subscription": { "subscriptionUuid": "testid", "conditions": [ { "field": "source", "op": "EQ", "value": "SYS_EVENT" }, { "field": "product", "op": "IN", "value": "ECS,Redis,RDS,Config,tag" } ], "relation": "AND" }, "batchId": "testbatchid", "alert": { "alertStatus": "TRIGGERED", "groupId": "", "source": "SYS_EVENT", "eventContentMap": { "extensions": { "agentVersion": "test-version", "region": "cn-hangzhou", "azone": "cn-hangzhou-i", "uptime": 23000 }, "vmName": "i-testhost", "impact": "Alert", "opsCode": "InstanceStatusChange", "bizEventId": "test-event-id" }, "dedupId": "test-id", "eventName": "CloudAssistant:FirstHeartbeat", "arn": "acs:ecs:cn-hangzhou:testuser:instance/i-testhost", "timestamp": 1704780333000, "traceId": "testid", "severity": "INFO", "product": "ECS", "eventRawContent": "{}", "eventType": "Notification", "userId": "test", "meta": { "sysEventMeta": { "regionNameEn": "cn-hangzhou", "resourceId": "acs:ecs:cn-hangzhou:test:instance/i-testhost", "product": "ECS", "eventNameEn": "CloudAssistant:FirstHeartbeat", "instanceName": "i-testhost", "level": "INFO", "resource": "", "regionNameZh": "华东1(杭州)", "groupId": "", "serviceTypeEn": "ECS", "eventType": "Notification", "serviceTypeZh": "云服务器ECS", "regionId": "cn-hangzhou", "eventTime": "20240109T140533.642+0800", "name": "CloudAssistant:FirstHeartbeat", "id": "testid", "status": "Normal", "eventNameZh": "云助手首次心跳事件" } } }, "severity": "INFO", "strategyName": "eventwebhook", "userId": "test", "time": 1704780333000 } -
POST FORM et GET FORM
Paramètre
Valeur
userInfo
{ "aliyunId": "test", "userIdSec": "te***st", "aliyunIdSec": "test***test", "nickName": "test", "nickNameSec": "te***st", "userName": "test", "userId": "test", "userNameSec": "te***st" }subscription
{ "subscriptionUuid": "testid", "conditions": [ { "field": "source", "op": "EQ", "value": "SYS_EVENT" }, { "field": "product", "op": "IN", "value": "ECS,Redis,RDS,Config,tag" } ], "relation": "AND" }alert
{ "alertStatus": "TRIGGERED", "groupId": "", "source": "SYS_EVENT", "eventContentMap": { "extensions": { "agentVersion": "test-version", "region": "cn-hangzhou", "azone": "cn-hangzhou-i", "uptime": 23000 }, "vmName": "i-testhost", "impact": "Alert", "opsCode": "InstanceStatusChange", "bizEventId": "test-event-id" }, "dedupId": "test-id", "eventName": "CloudAssistant:FirstHeartbeat", "arn": "acs:ecs:cn-hangzhou:testuser:instance/i-testhost", "timestamp": 1704780333000, "traceId": "testid", "severity": "INFO", "product": "ECS", "eventRawContent": "{}", "eventType": "Notification", "userId": "test", "meta": { "sysEventMeta": { "regionNameEn": "cn-hangzhou", "resourceId": "acs:ecs:cn-hangzhou:test:instance/i-testhost", "product": "ECS", "eventNameEn": "CloudAssistant:FirstHeartbeat", "instanceName": "i-testhost", "level": "INFO", "resource": "", "regionNameZh": "华东1(杭州)", "groupId": "", "serviceTypeEn": "ECS", "eventType": "Notification", "serviceTypeZh": "云服务器ECS", "regionId": "cn-hangzhou", "eventTime": "20240109T140533.642+0800", "name": "CloudAssistant:FirstHeartbeat", "id": "testid", "status": "Normal", "eventNameZh": "云助手首次心跳事件" } } }severity
INFO
strategyName
eventwebhook
userId
test
time
1704780333000
Descriptions des champs
Champ | Description | |
Champs externes | batchId | L'ID de lot de la notification. Chaque ID représente une livraison de notification unique. |
severity | Le niveau de gravité. | |
strategyName | Le nom de la politique d'abonnement. | |
userId | L'ID du compte Alibaba Cloud. | |
time | L'heure de l'événement. | |
Champs de l'objet | aliyunId | L'ID du compte Alibaba Cloud. |
userIdSec | L'ID de l'utilisateur RAM. | |
aliyunIdSec | L'ID masqué du compte Alibaba Cloud. | |
nickName | L'alias du compte Alibaba Cloud. | |
nickNameSec | L'alias masqué du compte Alibaba Cloud. | |
userName | L'identifiant de connexion du compte Alibaba Cloud. | |
userId | L'ID du compte Alibaba Cloud. | |
userNameSec | L'identifiant de connexion masqué du compte Alibaba Cloud. | |
Champs de l'objet | subscriptionUuid | L'ID unique de la politique d'abonnement. |
conditions | Les conditions de la politique d'abonnement :
| |
relation | La relation logique entre les conditions. Valeurs valides : | |
Champs de l'objet | alertStatus | Le statut de l'alerte. Valeurs valides : |
groupId | L'ID du groupe d'applications. | |
source | Le type du dernier événement d'alerte. | |
dedupId | L'ID de déduplication de l'événement. | |
eventName | Le nom de l'événement. | |
arn | Le nom de ressource Alibaba Cloud (ARN) de la ressource qui a généré l'événement. | |
timestamp | L'horodatage de l'événement. | |
traceId | L'ID d'origine de l'événement. | |
severity | Le niveau de gravité. | |
product | Le nom du produit. | |
eventRawContent | Les données brutes de l'événement sous forme de chaîne JSON. Le contenu varie selon le service cloud. | |
eventType | Le type d'événement. | |
userId | L'ID du compte Alibaba Cloud. | |
Champs du sous-objet | regionNameEn | Le nom de la région en anglais. |
resourceId | Les informations sur la ressource associée à l'événement. | |
product | Le code du produit. | |
eventNameEn | Le nom de l'événement en anglais. | |
instanceName | Le nom de l'instance. | |
level | Le niveau de l'événement. | |
resource | L'ARN de l'événement système. | |
regionNameZh | Le nom de la région en chinois. | |
groupId | L'ID du groupe d'applications. | |
serviceTypeEn | Le type de service en anglais. | |
eventType | Le type d'événement. | |
serviceTypeZh | Le type de service en chinois. | |
regionId | L'ID de la région. | |
eventTime | L'heure à laquelle l'événement a été généré. | |
name | Le nom de l'événement. | |
id | L'ID de l'événement. | |
status | Le statut de l'événement. | |
eventNameZh | Le nom de l'événement en chinois. | |
Champs du sous-objet | Le champ | |