O monitoramento de eventos complementa o monitoramento de recursos ao oferecer maior capacidade de resposta em tempo real, precisão e cobertura de cenários — por exemplo, quando um pod é removido, o pull de uma imagem falha ou um nó relata uma exceção de hardware. Por padrão, o Kubernetes retém esses eventos por apenas uma hora. Para detectar anomalias antes que os dados expirem, o ACK oferece monitoramento de eventos de ponta a ponta, que coleta, armazena, gera alertas e arquiva os eventos do cluster.
Por padrão, o ACK direciona os eventos do cluster para o Simple Log Service e os armazena gratuitamente por 90 dias. Consulte Create and use an event center.
Como funciona
O ACK usa duas ferramentas de código aberto:
node-problem-detector (NPD) — Diagnostica os nós do Kubernetes. O NPD detecta exceções nos nós, como travamentos do motor do docker, travamentos do kernel do Linux, exceções de tráfego de saída e exceções de descritores de arquivo, gera eventos de nó e trabalha com o kube-eventer para fechar o ciclo de gerenciamento de alertas. Consulte NPD.
kube-eventer — Emissor de eventos de código aberto mantido pelo ACK. O kube-eventer encaminha eventos do Kubernetes para destinos como DingTalk, Simple Log Service e EventBridge, filtra eventos por nível de gravidade e permite a coleta em tempo real, a geração de alertas e o arquivamento assíncrono. Consulte kube-eventer.
O Kubernetes emite dois tipos de eventos:
|
Tipo |
Quando gerado |
Exemplos |
|
Normal |
A máquina de estados transita para um estado esperado |
Pod agendado, contêiner iniciado |
|
Warning |
A máquina de estados transita para um estado inesperado |
Pod removido, falha no pull da imagem, |
Casos de uso
Selecione um cenário com base nas suas necessidades de monitoramento:
|
Cenário |
Quando usar |
|
Cenário 1: Usar o NPD com o centro de eventos do Simple Log Service |
Comece rapidamente. Direcione todos os eventos do cluster para o Simple Log Service para visualização, consulta e geração de alertas em um só lugar. |
|
Detecte exceções no nível do nó, como pressão de disco, problemas de rede e falhas no daemon do docker, e acione o gerenciamento de alertas em ciclo fechado. |
|
|
Encaminhe eventos de Warning para um grupo do DingTalk para notificações de ChatOps em tempo real. |
|
|
Persista eventos do Kubernetes em um Logstore dedicado para armazenamento de longo prazo, indexação e análise offline. |
|
|
Crie uma arquitetura orientada a eventos para acionar remediações automatizadas ou fluxos de trabalho downstream a partir de eventos do cluster. |
Cenário 1: Usar o NPD com o centro de eventos do Simple Log Service
O NPD funciona com plug-ins de terceiros para detectar exceções nos nós e gerar eventos do cluster. O centro de eventos do Simple Log Service coleta, armazena e visualiza esses eventos com recursos integrados de consulta e geração de alertas.
Etapa 1: Instale o componente ack-node-problem-detector
Se você selecionou Install node-problem-detector and Create Event Center ao criar o cluster, pule para Step 2: View the event center. Para instalar durante a criação do cluster, consulte Create an ACK managed cluster.
Caso contrário, instale o componente manualmente:
Faça login no console do ACK. No painel de navegação à esquerda, escolha Clusters.
Na página Clusters, encontre o cluster e clique em seu nome. No painel de navegação à esquerda, clique em Add-ons.
Na aba Observability, localize e instale o ack-node-problem-detector.
Etapa 2: Visualize o centro de eventos
Faça login no console do ACK. No painel de navegação à esquerda, escolha Clusters.
Na página Clusters, encontre o cluster e clique em seu nome. No painel de navegação à esquerda, escolha Operations > Event Center.
Na página Event Center, clique na aba Event Overview (Event Center) para visualizar todos os eventos do Kubernetes, seus detalhes e o ciclo de vida dos pods. Consulte Collect Kubernetes events.
Cenário 2: Execute o diagnóstico de nó do NPD
O NPD, em conjunto com o kube-eventer, fornece gerenciamento de alertas em ciclo fechado para eventos de nó. Quando o NPD detecta uma exceção, o kube-eventer encaminha o evento para os destinos configurados e gera um alerta.
Pré-requisitos
Antes de começar:
O ack-node-problem-detector está instalado. Se não estiver, consulte Step 1: Install the ack-node-problem-detector component. Se já estiver instalado, reinstale-o primeiro — consulte Reinstall the ack-node-problem-detector component.
Verifique se o DaemonSet está em execução
Na página Clusters, encontre o cluster e clique em seu nome. No painel de navegação à esquerda, escolha Workloads > DaemonSets.
Na aba DaemonSets, selecione o namespace kube-system e verifique se o ack-node-problem-detector-daemonset está em execução. Quando o NPD e o kube-eventer estão em execução, o sistema direciona os eventos para os destinos e gera alertas de acordo com a configuração do kube-eventer.
Plug-ins de diagnóstico de nó
A partir do NPD 1.2.29, o plug-in de detecção de anomalias de GPU é implantado como um DaemonSet separado chamado ack-accel-health-monitor.
Plug-in | O que verifica | Limiar padrão | Habilitado por padrão |
| Se os relógios do sistema estão sincronizados via Network Time Protocol (NTP) | — | Sim |
| Se o uso da tabela de rastreamento de conexões (conntrack) excede o limiar | 90% | Sim |
| Se o uso de inodes no disco do sistema excede o limiar (ajustável) | 80% | Sim |
| Se a proporção de processos PID excede o limiar máximo do kernel | 85% | Sim |
| Se o daemon do docker está em execução | — | Sim |
| Se o uso de descritores de arquivo excede o limiar (ajustável). Nota Este plug-in consome recursos significativos. Ative-o apenas quando necessário. | 80% | Não |
| Se os nós têm a função do RAM e o AccessKey ID/Secret necessários configurados | — | Não |
| Se as GPUs NVIDIA podem gerar mensagens | — | Não |
| Se o plug-in Container Storage Interface (CSI) está em execução | — | Não |
| Se há processos no estado de sono ininterrupto (D) | — | Não |
| Se os nós podem acessar a Internet | — | Não |
| Se o daemon | — | Não |
Cenário 3: Enviar alertas para o DingTalk
Receber alertas de eventos do Kubernetes por meio de um chatbot do DingTalk é um padrão típico de ChatOps. Quando ocorre um evento de nível Warning, o kube-eventer envia uma mensagem para o grupo do DingTalk via webhook.
Pré-requisitos
Antes de começar:
O ack-node-problem-detector está instalado. Se não estiver, consulte Step 1: Install the ack-node-problem-detector component. Se já estiver instalado, reinstale-o primeiro — consulte Reinstall the ack-node-problem-detector component.
Etapa 1: Adicionar um chatbot do DingTalk
Clique em
no canto superior direito da janela de chat para abrir Group Settings.Clique em Bot > Add Robot. Selecione Custom como o tipo de chatbot.
-
Na página Robot details, clique em Add para abrir a página Add Robot. Defina os parâmetros abaixo, aceite os Termos de Serviço do DingTalk Custom Robot e clique em Finished:
Parâmetro
Descrição
Edit profile picture
Avatar do chatbot. Opcional.
Chatbot name
Nome de exibição do chatbot.
Add to Group
Grupo do DingTalk ao qual o chatbot será adicionado.
Security settings
Três opções: Custom Keywords, assinaturas adicionais e endereços IP (ou blocos CIDR). Apenas Custom Keywords filtram alertas de eventos do cluster. Selecione Custom Keywords e insira
Warning. Adicione até 10 palavras-chave para restringir o filtro. -
Clique em Copy para copiar a URL do webhook.
Na página ChatBot , clique em
ao lado do chatbot para modificar seu avatar e nome, ativar ou desativar o envio de mensagens, redefinir a URL do webhook ou remover o chatbot.
Etapa 2: Configure o kube-eventer para enviar eventos ao DingTalk
Na página Clusters, encontre o cluster e clique em seu nome. No painel de navegação à esquerda, escolha Applications > Helm.
Na página Helm, localize o ack-node-problem-detector e clique em Update na coluna Actions.
-
Defina os parâmetros abaixo e clique em OK:
Na seção
npd, definaenabledcomofalse.Defina
eventer.sinks.dingtalk.enabledcomotrue.Insira o token da URL do webhook copiada.
Resultado
O kube-eventer passa a vigorar 30 segundos após a implantação. Eventos de nível Warning acionam alertas no grupo do DingTalk.

Cenário 4: Arquivar eventos no Simple Log Service
Direcione eventos do Kubernetes para o Simple Log Service para armazenamento persistente, indexação e auditoria. Para retenção de longo prazo ou arquivamento offline, configure o Logstore e o envio opcional de dados para o MaxCompute ou Object Storage Service (OSS). Consulte Create and use an event center.
Pré-requisitos
Antes de começar:
O ack-node-problem-detector está instalado com o projeto e o Logstore especificados. Se já estiver instalado, reinstale-o primeiro — consulte Reinstall the ack-node-problem-detector component.
Etapa 1: Crie um projeto e um Logstore do Simple Log Service
Faça login no console do Simple Log Service.
-
Na seção Projects, clique em Create Project. No painel Create Project, defina os parâmetros e clique em Create.
Crie o projeto do Simple Log Service na mesma região do seu cluster. A transmissão na mesma região usa a rede interna, o que reduz a latência e elimina os custos de largura de banda entre regiões. Este exemplo cria um projeto chamado
k8s-log4jem China (Hangzhou). Na seção Projects, clique em k8s-log4j para abrir a página de detalhes do projeto.
No painel Logstores, clique em + para abrir o painel Create Logstore.
-
Defina os parâmetros e clique em OK. Este exemplo cria um Logstore chamado
k8s-logstore.No painel Create Logstore, os principais itens de configuração incluem:
Logstore Type: Standard
Data Retention Period: 30 dias (número fixo de dias)
Number of Shards: 2
Automatic Shard Split: ativado, com um máximo de 64 divisões
Record Public IP: ativado
WebTracking: desativado por padrão
Após a criação do Logstore, clique em Data Import Wizard para abrir a caixa de diálogo Import Data.
-
Selecione Log4j 1/2 e conclua a configuração. Este exemplo usa as configurações padrão.
Na área Log Description da página de configuração da fonte de dados, o Log4j é descrito como composto por três componentes: níveis de prioridade (ERROR, WARN, INFO, DEBUG), destino de saída e formato de saída. O Alibaba Cloud Log Log4j Appender pode enviar logs para o Simple Log Service (SLS) (para o endereço de download e instruções de uso, consulte o GitHub). Na área Usage Notes, clique no link View Help para obter orientações detalhadas sobre a ingestão e, em seguida, clique em Next.
Etapa 2: Configure o kube-eventer para enviar eventos ao Simple Log Service
Na página Clusters, encontre o cluster e clique em seu nome. No painel de navegação à esquerda, escolha Applications > Helm.
Na página Helm, localize o ack-node-problem-detector e clique em Update na coluna Actions.
-
Defina os parâmetros abaixo e clique em OK:
Na seção
npd, definaenabledcomofalse.Defina
eventer.sinks.sls.enabledcomotrue.
Etapa 3: Verifique a coleta de eventos e configure a indexação
Acione um evento do cluster — por exemplo, exclua um pod ou crie uma aplicação.
-
Faça login no console do Simple Log Service para visualizar os eventos coletados. Consulte Consume log data by using Simple Log Service SDK.
Na caixa de diálogo Consumption Preview, selecione um nome de índice (por exemplo,
k8s-event), defina o Shard e o intervalo de tempo e clique em Preview. Se os dados de log forem carregados com sucesso, a tabela exibirá registros de log em formato JSON dos eventos do Kubernetes, incluindo campos comolevel,eventId,namespace,reasonemessage. -
Configure a indexação para consulta e análise. Consulte Create indexes.
Na seção Projects, clique no nome do projeto.
Clique em
ao lado do nome do Logstore e selecione Search & Analysis.No canto superior direito, clique em Enable Index.
No painel Search & Analysis, defina os parâmetros e clique em OK. > Note: A configuração do índice entra em vigor em até 1 minuto e se aplica apenas aos dados ingeridos após a ativação ou modificação do índice.
(Opcional) Para arquivar eventos para análise offline, envie dados do Logstore para o MaxCompute ou Object Storage Service (OSS). Consulte Create a data shipping job of the new version to ship data to MaxCompute e Create an OSS data shipping job (new version).
Cenário 5: Encaminhar eventos para o EventBridge
O EventBridge é um serviço de eventos serverless que conecta serviços da Alibaba Cloud, aplicações personalizadas e aplicações de software como serviço (SaaS) de forma padronizada e centralizada. Encaminhar eventos do ACK para o EventBridge permite criar uma arquitetura fracamente acoplada e orientada a eventos — por exemplo, para acionar remediações automatizadas quando eventos específicos ocorrem. Consulte What is EventBridge?
Pré-requisitos
Antes de começar:
O EventBridge está ativado. Consulte Activate EventBridge and grant permissions to a RAM user.
O ack-node-problem-detector está instalado. Se não estiver, consulte Step 1: Install the ack-node-problem-detector component. Se já estiver instalado, reinstale-o primeiro — consulte Reinstall the ack-node-problem-detector component.
Ative o EventBridge como destino de eventos
Na página Clusters, encontre o cluster e clique em seu nome. No painel de navegação à esquerda, escolha Applications > Helm.
Na página Helm, localize o ack-node-problem-detector e clique em Update na coluna Actions.
-
Defina
eventer.sinks.eventbridge.enabledcomotruee clique em OK.eventer: accessKeyId: "" accessKeySecret: "" enabled: true env: - TZ: Asia/Shanghai image: pullPolicy: Always repository: registry-cn-hangzhou-vpc.ack.aliyuncs.com/acs/kube-eventer tag: v1.2.11-0620284-aliyun othersinks: null resources: limits: cpu: "1.0" memory: 1024Mi requests: cpu: 100m memory: 200Mi sinks: dingtalk: enabled: false label: "" level: Warning monitorkinds: Node,Pod monitornamespaces: "" token: "" eventbridge: enabled: false
Visualize eventos do Kubernetes no EventBridge
Faça login no console do EventBridge.
No painel de navegação à esquerda, clique em Event Buses.
Na página Event Buses, clique no barramento de eventos de destino.
No painel de navegação à esquerda, clique em Event Tracking.
Selecione um método de consulta, defina as condições e clique em Query.
Encontre o evento e clique em Details na coluna Actions. Consulte Query events by event ID.
Reinstale o componente ack-node-problem-detector
Reinstale o componente ao alterar o destino (por exemplo, do Simple Log Service para o DingTalk) ou atualize a configuração do componente.
Faça login no console do ACK. No painel de navegação à esquerda, escolha Clusters.
Na página Clusters, encontre o cluster e clique em seu nome. No painel de navegação à esquerda, escolha Workloads > Jobs.
Na página Jobs, clique em More ao lado de
kube-eventer-init-v1.7-xxxxe clique em Delete.Na página Clusters, encontre o cluster e clique em seu nome. No painel de navegação à esquerda, escolha Applications > Helm.
Na página Helm, exclua o componente ack-node-problem-detector.
Na página Clusters, encontre o cluster e clique em seu nome. No painel de navegação à esquerda, escolha Operations > Add-ons.
Na aba Observability, localize e reinstale o ack-node-problem-detector.