Además de las notificaciones por llamadas telefónicas, mensajes SMS, correo electrónico, DingTalk, Lark, WeCom y Slack, Cloud Monitor ofrece una función de callback de alertas que permite gestionar los eventos con mayor flexibilidad. Este tema explica cómo usar esta función para reenviar las notificaciones de eventos del sistema a un webhook. De este modo, se integran las alertas de Cloud Monitor con sus sistemas de operaciones y mantenimiento o de notificaciones existentes.
llamadas telefónicas, mensajes SMS,
Requisitos previos
Debe contar con una URL pública para su sistema de operaciones o de mensajería.
Contexto
Cloud Monitor envía las notificaciones de alertas a su URL mediante solicitudes POST HTTP o HTTPS. Agregue los siguientes rangos de direcciones IP a la lista de permitidos de su firewall:
Procedimiento
-
Cree un canal de envío.
En este ejemplo se utiliza un webhook como canal de envío.
Inicie sesión en la consola de Cloud Monitor.
En el panel de navegación izquierdo, seleccione Event Center > Event Subscription.
En la página Event Subscription, haga clic en la pestaña Push Channel.
En la pestaña Push Channel, haga clic en Create Push Channel.
En el panel Create Push Channel, introduzca un valor en Channel Name, establezca Target Type en Webhook, Request Method en POST y Data Format en JSON. En el campo Address, introduzca la URL del callback de alerta y conserve la configuración predeterminada para los demás parámetros.
Haga clic en OK.
-
Cree una directiva de suscripción.
En este ejemplo se realiza una suscripción al evento del sistema Instance Restart Started Due to Instance Error de una instancia ECS y se envían las notificaciones al webhook.
Haga clic en la pestaña Subscription Policy.
En la pestaña Subscription Policy, haga clic en Create Subscription Policy.
-
En la página Create Subscription Policy, configure los parámetros.
Basic Information: introduzca un nombre para la directiva de suscripción.
-
Alert Subscription: si establece Subscription Type en System Event, especifica Product como Elastic Compute Service (ECS) y Event Name como Instance Restart Started Due to Instance Error en la sección Subscription Scope, y no configura ningún otro parámetro, se suscribirá al evento del sistema Instance Restart Started Due to Instance Error de todas las instancias ECS de su cuenta.
NotaPara obtener más información sobre los eventos del sistema que admite ECS, consulte ECS.
Merge and Denoise: utilice la configuración predeterminada.
-
Notification: no configure Notification Configuration. Utilice el método de notificación predeterminado para Custom Notification Method.
NotaDado que no se configuró ningún grupo de alertas en Notification Settings, no existen contactos de alerta y usted no recibirá notificaciones de alertas.
Push and Integration: seleccione el canal de envío creado en Step 1.
Haga clic en Submit.
-
Depure la suscripción a eventos.
En la pestaña Subscription Policy, haga clic en Debug Event Subscription.
-
En el panel Create Event Debugging, establezca Product en ECS y Name en Instance Restart Started Due to Instance Error.
El sistema genera automáticamente el contenido de depuración en formato JSON.
-
Haga clic en OK.
El sistema muestra el mensaje Operation successful. A continuación, Cloud Monitor envía automáticamente una notificación de alerta de prueba a la URL del webhook que especificó.
Resultados
Cuando un evento del sistema activa una alerta, Cloud Monitor envía la información de la alerta a la URL que especificó. Los webhooks admiten los métodos de solicitud POST y GET. A continuación se muestran ejemplos del contenido de la solicitud para cada método:
-
POST JSON
Nombre del parámetro:
body.Contenido de ejemplo:
{ "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": "China (Hangzhou)", "groupId": "", "serviceTypeEn": "ECS", "eventType": "Notification", "serviceTypeZh": "ECS", "regionId": "cn-hangzhou", "eventTime": "20240109T140533.642+0800", "name": "CloudAssistant:FirstHeartbeat", "id": "testid", "status": "Normal", "eventNameZh": "First heartbeat event of the cloud assistant" } } }, "severity": "INFO", "strategyName": "eventwebhook", "userId": "test", "time": 1704780333000 } -
GET JSON
Nombre del parámetro:
data.Contenido de ejemplo:
{ "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": "China (Hangzhou)", "groupId": "", "serviceTypeEn": "ECS", "eventType": "Notification", "serviceTypeZh": "ECS", "regionId": "cn-hangzhou", "eventTime": "20240109T140533.642+0800", "name": "CloudAssistant:FirstHeartbeat", "id": "testid", "status": "Normal", "eventNameZh": "First heartbeat event of the cloud assistant" } } }, "severity": "INFO", "strategyName": "eventwebhook", "userId": "test", "time": 1704780333000 } -
POST FORM y GET FORM
Parámetro
Valor
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": "China (Hangzhou)", "groupId": "", "serviceTypeEn": "ECS", "eventType": "Notification", "serviceTypeZh": "ECS", "regionId": "cn-hangzhou", "eventTime": "20240109T140533.642+0800", "name": "CloudAssistant:FirstHeartbeat", "id": "testid", "status": "Normal", "eventNameZh": "First heartbeat event of the cloud assistant" } } }severity
INFO
strategyName
eventwebhook
userId
test
time
1704780333000
Descripción de los campos
Campo | Descripción | |
Campos externos | batchId | Identificador del lote de la notificación. Cada ID representa una entrega de notificación única. |
severity | Nivel de gravedad. | |
strategyName | Nombre de la directiva de suscripción. | |
userId | ID de la cuenta de Alibaba Cloud. | |
time | Hora del evento. | |
Campos del objeto | aliyunId | ID de la cuenta de Alibaba Cloud. |
userIdSec | ID del usuario de RAM. | |
aliyunIdSec | ID enmascarado de la cuenta de Alibaba Cloud. | |
nickName | Alias de la cuenta de Alibaba Cloud. | |
nickNameSec | Alias enmascarado de la cuenta de Alibaba Cloud. | |
userName | ID de inicio de sesión de la cuenta de Alibaba Cloud. | |
userId | ID de la cuenta de Alibaba Cloud. | |
userNameSec | ID de inicio de sesión enmascarado de la cuenta de Alibaba Cloud. | |
Campos del objeto | subscriptionUuid | ID único de la directiva de suscripción. |
conditions | Condiciones de la directiva de suscripción:
| |
relation | Relación lógica entre las condiciones. Valores válidos: | |
Campos del objeto | alertStatus | Estado de la alerta. Valores válidos: |
groupId | ID del grupo de aplicaciones. | |
source | Tipo del evento de alerta más reciente. | |
dedupId | ID de deduplicación del evento. | |
eventName | Nombre del evento. | |
arn | Alibaba Cloud Resource Name (ARN) del recurso que generó el evento. | |
timestamp | Marca de tiempo del evento. | |
traceId | ID original del evento. | |
severity | Nivel de gravedad. | |
product | Nombre del producto. | |
eventRawContent | Datos sin procesar del evento como cadena JSON. El contenido varía según el servicio en la nube. | |
eventType | Tipo de evento. | |
userId | ID de la cuenta de Alibaba Cloud. | |
Campos del subobjeto | regionNameEn | Nombre de la región en inglés. |
resourceId | Información del recurso asociado al evento. | |
product | Código del producto. | |
eventNameEn | Nombre del evento en inglés. | |
instanceName | Nombre de la instancia. | |
level | Nivel del evento. | |
resource | ARN del evento del sistema. | |
regionNameZh | Nombre de la región en chino. | |
groupId | ID del grupo de aplicaciones. | |
serviceTypeEn | Tipo de servicio en inglés. | |
eventType | Tipo de evento. | |
serviceTypeZh | Tipo de servicio en chino. | |
regionId | ID de la región. | |
eventTime | Hora en la que se generó el evento. | |
name | Nombre del evento. | |
id | ID del evento. | |
status | Estado del evento. | |
eventNameZh | Nombre del evento en chino. | |
Campos del subobjeto | El campo | |