Além das notificações por chamadas telefônicas, SMS, e-mail, DingTalk, Lark, WeCom e Slack, o Cloud Monitor oferece um recurso de callback de alerta para maior flexibilidade no tratamento de eventos. Este tópico explica como usar esse recurso para encaminhar notificações de eventos de sistema a um webhook. Assim, você integra os alertas do Cloud Monitor aos seus sistemas existentes de O&M ou de notificação.
chamadas telefônicas, mensagens SMS,
Pré-requisitos
Você deve ter uma URL pública para o seu sistema de operações ou de mensagens.
Informações básicas
O Cloud Monitor envia notificações de alerta para sua URL como requisições HTTP ou HTTPS POST. Adicione os seguintes intervalos de endereços IP à lista de permissões do seu firewall:
Procedimento
-
Crie um canal de push.
Este exemplo usa um webhook como canal de push.
Faça login no console do Cloud Monitor.
No painel de navegação à esquerda, escolha Event Center > Event Subscription.
Na página Event Subscription, clique na aba Push Channel.
Na aba Push Channel, clique em Create Push Channel.
No painel Create Push Channel, insira um Channel Name, defina Target Type como Webhook, Request Method como POST e Data Format como JSON. No campo Address, insira a URL de callback de alerta e mantenha as configurações padrão para os demais parâmetros.
Clique em OK.
-
Crie uma política de assinatura.
Neste exemplo, você assina o evento de sistema Instance Restart Started Due to Instance Error para uma instância ECS e envia notificações para o webhook.
Clique na aba Subscription Policy.
Na aba Subscription Policy, clique em Create Subscription Policy.
-
Na página Create Subscription Policy, configure os parâmetros.
Basic Information: Insira um nome para a política de assinatura.
-
Alert Subscription: Se você definir Subscription Type como System Event, especificar Product como Elastic Compute Service (ECS) e Event Name como Instance Restart Started Due to Instance Error na seção Subscription Scope, sem configurar outros parâmetros, assinará o evento de sistema Instance Restart Started Due to Instance Error para todas as instâncias ECS da sua conta.
NotaPara mais informações sobre os eventos de sistema compatíveis com o ECS, consulte ECS.
Merge and Denoise: Use as configurações padrão.
-
Notification: Não configure Notification Configuration. Mantenha o método de notificação padrão para Custom Notification Method.
NotaComo nenhum grupo de alertas está definido nas Notification Settings, não há contatos de alerta configurados e você não receberá notificações.
Push and Integration: Selecione o canal de push criado na Etapa 1.
Clique em Submit.
-
Depure a assinatura de eventos.
Na aba Subscription Policy, clique em Debug Event Subscription.
-
No painel Create Event Debugging, defina Product como ECS e Name como Instance Restart Started Due to Instance Error.
O sistema gera automaticamente o conteúdo de depuração no formato JSON.
-
Clique em OK.
O sistema exibe uma mensagem de Operation successful. Em seguida, o Cloud Monitor envia automaticamente uma notificação de alerta de teste para a URL do webhook especificada.
-
Resultados
Quando um evento de sistema aciona um alerta, o Cloud Monitor envia as informações para a URL especificada. Os webhooks aceitam os métodos de requisição POST e GET. Os exemplos a seguir mostram o conteúdo da requisição para cada método:
-
POST JSON
Nome do parâmetro:
body.Exemplo de conteúdo:
{ "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
Nome do parâmetro:
data.Exemplo de conteúdo:
{ "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 e 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
Descrição dos campos
Campo
Descrição
Campos externos
batchId
ID do lote da notificação. Cada ID representa uma entrega única de notificação.
severity
Nível de severidade.
strategyName
Nome da política de assinatura.
userId
ID da conta Alibaba Cloud.
time
Horário do evento.
Campos no objeto
userInfoaliyunId
ID da conta Alibaba Cloud.
userIdSec
ID do usuário RAM.
aliyunIdSec
ID mascarado da conta Alibaba Cloud.
nickName
Alias da conta Alibaba Cloud.
nickNameSec
Alias mascarado da conta Alibaba Cloud.
userName
ID de login da conta Alibaba Cloud.
userId
ID da conta Alibaba Cloud.
userNameSec
ID de login mascarado da conta Alibaba Cloud.
Campos no objeto
subscriptionsubscriptionUuid
ID exclusivo da política de assinatura.
conditions
Condições da política de assinatura:
field: Campo da assinatura.op: Operador de comparação.value: Valor de comparação.
relation
Relação lógica entre as condições.
Valores válidos:
ANDeOR. Valor padrão:AND.Campos no objeto
alertalertStatus
Status do alerta.
Valores válidos:
TRIGGEREDeRESOLVED.groupId
ID do grupo de aplicativos.
source
Tipo do evento de alerta mais recente.
dedupId
ID de deduplicação do evento.
eventName
Nome do evento.
arn
Alibaba Cloud Resource Name (ARN) do recurso que gerou o evento.
timestamp
Timestamp do evento.
traceId
ID original do evento.
severity
Nível de severidade.
product
Nome do product.
eventRawContent
Dados brutos do evento como uma string JSON. O conteúdo varia conforme o service de cloud.
eventType
Tipo do evento.
userId
ID da conta Alibaba Cloud.
Campos no subobjeto
meta.sysEventMetaregionNameEn
Nome da região em inglês.
resourceId
Informações sobre o recurso associado ao evento.
product
Código do product.
eventNameEn
Nome do evento em inglês.
instanceName
Nome da instância.
level
Nível do evento.
resource
ARN do evento de sistema.
regionNameZh
Nome da região em chinês.
groupId
ID do grupo de aplicativos.
serviceTypeEn
Tipo de service em inglês.
eventType
Tipo do evento.
serviceTypeZh
Tipo de service em chinês.
regionId
ID da região.
eventTime
Momento em que o evento foi gerado.
name
Nome do evento.
id
ID do evento.
status
Status do evento.
eventNameZh
Nome do evento em chinês.
Campos no subobjeto
eventContentMapO campo
eventContentMapcontém informações reportadas pelo service de source. Para detalhes, consulte a documentação de eventos do product de cloud específico.Referências
-