Todos os produtos
Search
Central de documentação

Simple Log Service:Coletar eventos do Kubernetes

Última atualização: Aug 25, 2026

Este documento descreve como usar o eventer para coletar eventos do Kubernetes e enviá-los ao Simple Log Service.

A arquitetura do Kubernetes baseia-se em uma máquina de estados. As transições entre estados geram eventos correspondentes. Transições entre estados normais produzem eventos de nível Normal, enquanto transições entre estados normais e anômalos geram eventos de nível Warning.

O Container Service for Kubernetes (ACK) oferece uma solução pronta para uso no monitoramento de eventos em cenários de contêineres. Essa solução utiliza o NPD, mantido pelo ACK, e o kube-eventer incluído para fornecer o monitoramento de eventos de contêineres.

image
  • O Node Problem Detector (NPD) é uma ferramenta de diagnóstico para nós do Kubernetes. Ele converte anomalias nos nós, como travamentos do docker Engine, travamentos do kernel Linux, problemas de saída de rede ou anomalias em descritores de arquivos, em eventos de nó. Quando combinado com o kube-eventer, o NPD possibilita um sistema de ciclo fechado para alertas de eventos de nó.

  • O kube-eventer é uma ferramenta open source mantida pelo ACK para processamento offline de eventos do Kubernetes. Ele envia eventos do cluster para sistemas externos, como DingTalk, SLS e EventBridge. Além disso, fornece condições de filtro para diferentes níveis de evento, permitindo coleta em tempo real, alertas direcionados e arquivamento assíncrono.

  • O Node Problem Detector (NPD) atua como ferramenta de diagnóstico para nós do Kubernetes, transformando anomalias — como travamentos do docker Engine ou do kernel Linux, falhas de saída de rede e problemas em descritores de arquivos — em eventos de nó. Em conjunto com o kube-eventer, o NPD viabiliza um sistema de ciclo fechado para alertas de eventos de nó.

  • Mantido pelo ACK, o kube-eventer é uma ferramenta open source destinada ao processamento offline de eventos do Kubernetes. Ela encaminha eventos do cluster para sistemas externos, incluindo DingTalk, SLS e EventBridge, e oferece filtros por nível de evento para suportar coleta em tempo real, alertas específicos e arquivamento assíncrono.

Pré-requisitos

Crie um cluster Kubernetes, como um cluster ACK da Alibaba Cloud ou um cluster serverless ACK.

Faturamento

O K8s event center é gratuito se as seguintes condições forem atendidas:

  • O período de retenção de dados do Logstore associado ao K8s event center é de 90 dias (valor padrão).

  • O volume de dados gravados no K8s event center é inferior a 256 MB por dia, o que corresponde a aproximadamente 250.000 eventos.

Exemplos:

  • Se você usar o período de retenção padrão de 90 dias e seu cluster Kubernetes gerar 1.000 eventos por dia, o K8s event center será gratuito.

  • Se o período de retenção de dados for definido como 105 dias e o cluster Kubernetes gerar 1.000 eventos diários, haverá cobrança pelo armazenamento do Logstore após 90 dias. O item faturável é Armazenamento de Logs. Para mais informações sobre esse item, consulte Billable items in pay-by-feature mode.

Etapa 1: Implantar kube-eventer e node-problem-detector

ACK

Em clusters ACK, o componente ack-node-problem-detector integra as funcionalidades do kube-eventer e do node-problem-detector. Implante apenas esse componente. Para um cluster serverless ACK, implante o componente kube-eventer.

O NPD detecta problemas ou falhas nos nós com base em configurações e plug-ins de terceiros, gerando eventos de cluster correspondentes. O cluster Kubernetes também produz diversos eventos devido a transições de estado, como evicções de pods e falhas ao baixar imagens. O Kubernetes Event Center do Simple Log Service (SLS) agrega todos os eventos do Kubernetes em tempo real, oferecendo recursos de armazenamento, consulta, análise, visualização e alertas. Os passos a seguir detalham como enviar eventos do cluster para o Kubernetes Event Center do SLS:

  • Se você selecionou Install Node-problem-detector (NPD) and create an Event Center durante a criação do cluster, avance para a Etapa 2 para visualizar o Kubernetes Event Center.

  • Caso não tenha selecionado Install Node-problem-detector and Create an Event Center na criação do cluster, instale-o manualmente.

    1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

    2. Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, escolha Operations Management > Components.

    3. Na aba Log and Monitoring, localize e instale o ack-node-problem-detector.

Self-managed Kubernetes

  1. Implante o kube-eventer.

    1. Instale o kubectl. Para mais detalhes, consulte Obtain the kubeconfig file of a cluster and use kubectl to connect to the cluster.

    2. Crie um arquivo de configuração chamado eventer.yaml usando o modelo abaixo.

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        labels:
          name: kube-eventer
        name: kube-eventer
        namespace: kube-system
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: kube-eventer
        template:
          metadata:
            labels:
              app: kube-eventer
            annotations:
              scheduler.alpha.kubernetes.io/critical-pod: ''
          spec:
            dnsPolicy: ClusterFirstWithHostNet
            serviceAccount: kube-eventer
            containers:
              - image: registry.cn-hangzhou.aliyuncs.com/acs/kube-eventer:v1.2.5-cc7ec54-aliyun
                name: kube-eventer
                command:
                  - "/kube-eventer"
                  - "--source=kubernetes:https://kubernetes.default"
                  ## .send to sls
                  ## --sink=sls:https://{endpoint}?project={project}&logStore=k8s-event&regionId={region-id}&internal=false&accessKeyId={accessKeyId}&accessKeySecret={accessKeySecret}
                  - --sink=sls:https://cn-beijing.log.aliyuncs.com?project=k8s-xxxx&logStore=k8s-event&regionId=cn-beijing&internal=false&accessKeyId=xxx&accessKeySecret=xxx
                env:
                  # If TZ is assigned, set the TZ value as the time zone
                  - name: TZ
                    value: "Asia/Shanghai"
                volumeMounts:
                  - name: localtime
                    mountPath: /etc/localtime
                    readOnly: true
                  - name: zoneinfo
                    mountPath: /usr/share/zoneinfo
                    readOnly: true
                resources:
                  requests:
                    cpu: 10m
                    memory: 50Mi
                  limits:
                    cpu: 500m
                    memory: 250Mi
            volumes:
              - name: localtime
                hostPath:
                  path: /etc/localtime
              - name: zoneinfo
                hostPath:
                  path: /usr/share/zoneinfo
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        name: kube-eventer
      rules:
        - apiGroups:
            - ""
          resources:
            - events
          verbs:
            - get
            - list
            - watch
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: kube-eventer
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: kube-eventer
      subjects:
        - kind: ServiceAccount
          name: kube-eventer
          namespace: kube-system
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: kube-eventer
        namespace: kube-system

      Parâmetro

      Tipo

      Obrigatório

      Descrição

      endpoint

      string

      Sim

      O endpoint do Simple Log Service. Para mais informações, consulte Endpoints.

      project

      string

      Sim

      O projeto do Simple Log Service.

      logStore

      string

      Sim

      O Logstore do Simple Log Service.

      internal

      string

      Obrigatório para clusters Kubernetes autogerenciados.

      Em clusters Kubernetes autogerenciados, defina este parâmetro como false.

      regionId

      string

      Obrigatório para clusters Kubernetes autogerenciados.

      O ID da região onde o Simple Log Service está localizado. Para mais informações, consulte Endpoints.

      accessKeyId

      string

      Obrigatório para clusters Kubernetes autogerenciados.

      O AccessKey ID. Recomendamos o uso do par de AccessKeys de um usuário do Resource Access Management (RAM). Para mais informações, consulte AccessKey pair.

      accessKeySecret

      string

      Obrigatório para clusters Kubernetes autogerenciados.

      O AccessKey secret. Recomendamos o uso do par de AccessKeys de um usuário do Resource Access Management (RAM). Para mais informações, consulte AccessKey pair.

    3. Execute o comando a seguir para aplicar a configuração eventer.yaml ao cluster.

      kubectl apply -f eventer.yaml

      Saída esperada:

      deployment.apps/kube-eventer created
      clusterrole.rbac.authorization.k8s.io/kube-eventer created
      clusterrolebinding.rbac.authorization.k8s.io/kube-eventer created
      serviceaccount/kube-eventer created
  2. Implante o node-problem-detector.

Etapa 2: Criar uma instância do K8s event center

Nota

Após criar uma instância do K8s event center, o Simple Log Service cria automaticamente um Logstore chamado k8s-event e painéis relacionados no projeto de destino.

  1. Faça login no console do Simple Log Service.

  2. Na seção Log Application, clique na aba Intelligent O&M e selecione K8s Event Center.

  3. Na página Event Center Management, clique em Add no canto superior direito.

  4. No painel Create Event Center, configure os parâmetros e clique em Next.

    • Ao optar por Select Existing Project, escolha um projeto existente na lista suspensa Project para gerenciar os recursos da instância do K8s event center, como Logstores e painéis.

    • Se preferir Select Kubernetes Cluster from Container Service for Kubernetes, selecione um cluster K8s existente na lista suspensa K8s Cluster. Nesse caso, o Simple Log Service criará automaticamente um projeto denominado k8s-log-{cluster-id} para administrar os recursos da instância do K8s event center, incluindo Logstores e painéis.

Etapa 3: Utilizar a instância do K8s event center

Depois de criar uma instância do K8s event center e implantar o kube-eventer e o node-problem-detector, inicie o uso do event center. É possível visualizar o resumo de eventos, consultar detalhes, acompanhar o ciclo de vida dos pods, verificar eventos de nós e de componentes principais, configurar alertas, executar consultas personalizadas e atualizar a versão.

Na página K8s Event Center, localize a instância desejada do K8s event center e clique no ícone k8s事件中心-002 para realizar as operações abaixo.

Ações

Descrição

Visualizar resumo de eventos

A página Event Overview exibe estatísticas resumidas dos eventos principais, incluindo o total de eventos, comparação de erros entre hoje e ontem, estatísticas de alertas, tendências de erros e detalhes de OOM em pods.

Nota

As informações de OOM de pod não identificam o pod específico. É possível localizar apenas o nó, o nome do processo e o ID do processo onde o evento ocorreu. Execute uma consulta personalizada para buscar eventos de reinicialização de pods próximos ao horário do OOM, facilitando a identificação do pod afetado.

Consultar detalhes de eventos

A página Event Detail Query apresenta detalhes dos eventos filtrados por diversas dimensões, como tipo de evento, objeto do evento, host, namespace e nome.

Visualizar ciclo de vida do pod

A página Pod Lifecycle mostra uma linha do tempo gráfica dos eventos no ciclo de vida de um pod. Também é possível filtrar eventos importantes por nível.

Visualizar eventos de nó

A página Node Events exibe detalhes dos eventos de nó, incluindo o ciclo de vida do nó e uma lista de eventos.

Visualizar eventos de componentes principais

A página Core Component Events apresenta detalhes sobre eventos de componentes essenciais, como falhas na reinicialização de ECS e modos de URL não implementados.

Configurar alertas

Na página Alert Configuration, configure alertas para o K8s event center. Para mais informações, consulte Set up alerts.

Executar consultas personalizadas

Na página Custom Query, personalize instruções de consulta e análise.

Todos os eventos do K8s event center ficam armazenados em um Logstore, permitindo o uso de todos os recursos disponíveis, como consultas personalizadas, consumo de eventos, relatórios customizados e alertas personalizados. Para mais informações, consulte Quick start for query and analysis.

Para acessar o projeto associado à instância do K8s event center, encontre o nome do projeto de uma das seguintes formas:

  • Verifique o nome do projeto na URL da página Custom Query. A URL segue o formato https://sls.console.alibabacloud.com/lognext/app/k8s-event/project/k8s-log-xxxx/logsearch/k8s-event. O campo após project/ corresponde ao nome do projeto, por exemplo, k8s-log-xxxx.

  • Na aba Event Center Management, localize a instância do K8s event center na lista e verifique o nome do projeto correspondente.

Atualizar versão

Na página Version Update, atualize o K8s event center.

Exemplo de log

O código a seguir apresenta um exemplo de log.

hostname:  cn-hangzhou.i-***********"
level:  Normal
pod_id:  2a360760-****
pod_name:  logtail-ds-blkkr
event_id:  {  
   "metadata":{  
      "name":"logtail-ds-blkkr.157b7cc90de7e192",
      "namespace":"kube-system",
      "selfLink":"/api/v1/namespaces/kube-system/events/logtail-ds-blkkr.157b7cc90de7e192",
      "uid":"2aaf75ab-****",
      "resourceVersion":"6129169",
      "creationTimestamp":"2019-01-20T07:08:19Z"
   },
   "involvedObject":{  
      "kind":"Pod",
      "namespace":"kube-system",
      "name":"logtail-ds-blkkr",
      "uid":"2a360760-****",
      "apiVersion":"v1",
      "resourceVersion":"6129161",
      "fieldPath":"spec.containers{logtail}"
   },
   "reason":"Started",
   "message":"Started container",
   "source":{  
      "component":"kubelet",
      "host":"cn-hangzhou.i-***********"
   },
   "firstTimestamp":"2019-01-20T07:08:19Z",
   "lastTimestamp":"2019-01-20T07:08:19Z",
   "count":1,
   "type":"Normal",
   "eventTime":null,
   "reportingComponent":"",
   "reportingInstance":""
}

Campo do log

Tipo

Descrição

hostname

string

Nome do host onde o evento ocorreu.

level

string

Nível do log. Valores válidos: Normal e Warning.

pod_id

string

ID exclusivo do pod. Este campo aparece apenas se o evento estiver relacionado a um pod.

pod_name

string

Nome do pod. Este campo aparece apenas se o evento estiver relacionado a um pod.

event_id

json

Detalhes do evento. O valor deste campo é uma string JSON.

Perguntas frequentes

Uma instância do K8s event center não apresenta dados

Após a implantação de uma instância do K8s event center, novos eventos são coletados automaticamente. Pesquise-os na página Custom Query. Recomendamos definir o intervalo de tempo no canto superior direito como 1 Day. Se nenhum dado for encontrado, geralmente há duas causas:

  • Nenhum evento novo foi gerado no cluster Kubernetes desde a implantação do K8s event center.

    Execute o comando kubectl get events --all-namespaces para verificar se há novos eventos no cluster.

  • Os parâmetros foram configurados incorretamente na implantação do kube-eventer e do node-problem-detector.

    • Para clusters Container Service for Kubernetes (ACK), siga estes passos:

      1. Faça login no ACK console.

      2. Na página Clusters, clique no nome do cluster desejado.

      3. No painel de navegação à esquerda, escolha Apply > Helm.

      4. Na página Helm, localize ack-node-problem-detector e clique em Update.

      5. Verifique e ajuste as configurações dos parâmetros.

    • Para clusters Kubernetes autogerenciados, consulte Collect Kubernetes events para obter as configurações de parâmetros.

Como visualizar os logs de contêiner de um evento?

  • Em clusters Container Service for Kubernetes (ACK), proceda da seguinte forma:

    1. Faça login no ACK console.

    2. Na página Clusters, clique no nome do cluster desejado.

    3. No painel de navegação à esquerda, escolha Workloads > Pods.

    4. Defina o Namespace como kube-system.

    5. Na lista Pods, localize o pod desejado e clique em Log.

  • Para clusters Kubernetes autogerenciados, verifique os logs dos Pods com prefixo de arquivo eventer-sls no namespace kube-system.