Todos los productos
Search
Centro de documentos

Simple Log Service:Recolección de eventos de Kubernetes

Última actualización: Sep 02, 2026

Este documento describe cómo utilizar eventer para recolectar eventos de Kubernetes y enviarlos a Simple Log Service.

La arquitectura de Kubernetes se basa en una máquina de estados. Las transiciones entre estados generan los eventos correspondientes. Las transiciones entre estados normales generan eventos de nivel Normal, mientras que las transiciones entre estados normales y anómalos generan eventos de nivel Warning.

Container Service for Kubernetes (ACK) ofrece una solución de monitoreo de eventos lista para usar en escenarios de contenedores. Esta solución utiliza el NPD mantenido por ACK y el kube-eventer incluido para proporcionar el monitoreo de eventos de contenedores.

image
  • Node Problem Detector (NPD) es una herramienta de diagnóstico para nodos de Kubernetes. Convierte anomalías del nodo, como bloqueos de Docker Engine, bloqueos del kernel de Linux, problemas de salida de red o anomalías en descriptores de archivos, en eventos de nodo. Al combinarse con kube-eventer, NPD habilita un sistema de ciclo cerrado para alertas de eventos de nodo.

  • kube-eventer es una herramienta de código abierto mantenida por ACK para el procesamiento offline de eventos de Kubernetes. Envía eventos del clúster a sistemas externos, como DingTalk, SLS y EventBridge. También proporciona condiciones de filtro para distintos niveles de eventos, lo que permite la recolección en tiempo real, alertas dirigidas y el archivado asíncrono.

  • Node Problem Detector (NPD) es una herramienta de diagnóstico para nodos de Kubernetes. Convierte anomalías del nodo, como bloqueos de Docker Engine, bloqueos del kernel de Linux, problemas de salida de red o anomalías en descriptores de archivos, en eventos de nodo. Al combinarse con kube-eventer, NPD habilita un sistema de ciclo cerrado para alertas de eventos de nodo.

  • kube-eventer es una herramienta de código abierto mantenida por ACK para el procesamiento offline de eventos de Kubernetes. Envía eventos del clúster a sistemas externos, como DingTalk, SLS y EventBridge. También proporciona condiciones de filtro para distintos niveles de eventos, lo que permite la recolección en tiempo real, alertas dirigidas y el archivado asíncrono.

Requisitos previos

Debe contar con un clúster de Kubernetes creado, como un clúster ACK de Alibaba Cloud o un clúster serverless de ACK.

Facturación

El centro de eventos de K8s es gratuito si se cumplen las siguientes condiciones:

  • El periodo de retención de datos del Logstore asociado al centro de eventos de K8s es de 90 días (valor predeterminado).

  • El volumen de datos escritos en el centro de eventos de K8s es inferior a 256 MB por día, lo que equivale aproximadamente a 250,000 eventos.

Ejemplos:

  • Si utiliza el periodo de retención de datos predeterminado de 90 días y su clúster de Kubernetes genera 1,000 eventos por día, el centro de eventos de K8s es gratuito.

  • Si establece el periodo de retención de datos en 105 días y su clúster de Kubernetes genera 1,000 eventos por día, se le cobrará por el almacenamiento del Logstore después de 90 días. El concepto facturable es Log Storage. Para obtener más información sobre el concepto facturable Log Storage, consulte Billable items in pay-by-feature mode.

Paso 1: Desplegar kube-eventer y node-problem-detector

ACK

Para un clúster ACK, el componente ack-node-problem-detector integra las funciones de kube-eventer y node-problem-detector. Solo necesita desplegar este componente. Para un clúster serverless de ACK, debe desplegar el componente kube-eventer.

NPD detecta problemas o fallas en los nodos según las configuraciones y complementos de terceros, y luego genera los eventos de clúster correspondientes. El clúster de Kubernetes también genera diversos eventos debido a transiciones de estado, como desalojos de pods y fallas en la descarga de imágenes. El Centro de Eventos de Kubernetes de Simple Log Service (SLS) agrega todos los eventos de Kubernetes en tiempo real y ofrece capacidades de almacenamiento, consulta, análisis, visualización y alertas. Los siguientes pasos describen cómo enviar eventos del clúster al Centro de Eventos de Kubernetes de SLS:

  • Si seleccionó Install Node-problem-detector (NPD) and create an Event Center al crear el clúster, continúe con el Paso 2 para consultar el Centro de Eventos de Kubernetes.

  • Si no seleccionó Install Node-problem-detector and Create an Event Center al crear el clúster, puede instalarlo manualmente.

    1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

    2. En la página Clusters, haga clic en el nombre del clúster objetivo. En el panel de navegación izquierdo, vaya a Operations Management > Components.

    3. En la pestaña Log and Monitoring, busque e instale ack-node-problem-detector.

Self-managed Kubernetes

  1. Despliegue kube-eventer.

    1. Instale kubectl. Para obtener más información, consulte Obtain the kubeconfig file of a cluster and use kubectl to connect to the cluster.

    2. Cree un archivo de configuración llamado eventer.yaml basado en la siguiente plantilla.

      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

      Obligatorio

      Descripción

      endpoint

      string

      Sí

      El endpoint de Simple Log Service. Para obtener más información, consulte Endpoints.

      project

      string

      Sí

      El proyecto de Simple Log Service.

      logStore

      string

      Sí

      El Logstore de Simple Log Service.

      internal

      string

      Obligatorio para clústeres de Kubernetes autogestionados.

      Para un clúster de Kubernetes autogestionado, debe establecer este parámetro en false.

      regionId

      string

      Obligatorio para clústeres de Kubernetes autogestionados.

      El ID de la región donde reside Simple Log Service. Para obtener más información, consulte Endpoints.

      accessKeyId

      string

      Obligatorio para clústeres de Kubernetes autogestionados.

      El AccessKey ID. Se recomienda utilizar el par de AccessKey de un usuario de Resource Access Management (RAM). Para obtener más información, consulte AccessKey pair.

      accessKeySecret

      string

      Obligatorio para clústeres de Kubernetes autogestionados.

      El AccessKey secret. Se recomienda utilizar el par de AccessKey de un usuario de Resource Access Management (RAM). Para obtener más información, consulte AccessKey pair.

    3. Ejecute el siguiente comando para aplicar la configuración de eventer.yaml al clúster.

      kubectl apply -f eventer.yaml

      Salida 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. Despliegue node-problem-detector.

Paso 2: Crear una instancia del centro de eventos de K8s

Nota

Después de crear una instancia del centro de eventos de K8s, Simple Log Service crea automáticamente un Logstore llamado k8s-event y los paneles relacionados en el proyecto de destino.

  1. Inicie sesión en la consola de Simple Log Service.

  2. En la sección Log Application, haga clic en la pestaña Intelligent O&M y luego haga clic en K8s Event Center.

  3. En la página Event Center Management, haga clic en Add en la esquina superior derecha.

  4. En el panel Create Event Center, configure los parámetros y haga clic en Next.

    • Si selecciona Select Existing Project, elija un proyecto existente en la lista desplegable Project para gestionar los recursos de la instancia del centro de eventos de K8s, como el Logstore y los paneles.

    • Si selecciona Select Kubernetes Cluster from Container Service for Kubernetes, elija un clúster de K8s existente en la lista desplegable K8s Cluster. Si utiliza este método, Simple Log Service crea automáticamente un proyecto llamado k8s-log-{cluster-id} para gestionar los recursos de la instancia del centro de eventos de K8s, como el Logstore y los paneles.

Paso 3: Utilizar la instancia del centro de eventos de K8s

Una vez creada la instancia del centro de eventos de K8s y desplegados kube-eventer y node-problem-detector, puede comenzar a usar el centro de eventos. Puede consultar el resumen de eventos, buscar detalles de eventos, ver el ciclo de vida de los pods, revisar eventos de nodos, verificar eventos de componentes principales, configurar alertas, ejecutar consultas personalizadas y actualizar la versión.

En la página K8s Event Center, localice la instancia del centro de eventos de K8s objetivo y haga clic en el icono k8s事件中心-002 para realizar las siguientes operaciones.

Acciones

Descripción

Consultar resumen de eventos

La página Event Overview muestra estadísticas resumidas de eventos principales. Estas estadísticas incluyen el número total de eventos, una comparación de eventos de error entre hoy y ayer, estadísticas de alertas, tendencias de eventos de error y detalles de OOM de pods.

Nota

La información de OOM de pods no identifica el pod específico. Solo permite localizar el nodo, el nombre del proceso y el ID del proceso donde ocurrió el evento. Puede ejecutar una consulta personalizada para encontrar eventos de reinicio de pods ocurridos cerca del momento del OOM y así ayudar a identificar el pod específico.

Buscar detalles de eventos

La página Event Detail Query muestra los detalles de eventos filtrados por diversas dimensiones, como tipo de evento, objeto del evento, host, namespace y nombre.

Ver ciclo de vida del pod

La página Pod Lifecycle muestra una línea de tiempo gráfica de los eventos en el ciclo de vida de un pod. También puede filtrar eventos importantes del pod por nivel de evento.

Ver eventos de nodo

La página Node Events muestra detalles de eventos de nodo, como el ciclo de vida del nodo y una lista de eventos.

Ver eventos de componentes principales

La página Core Component Events muestra detalles de eventos de componentes principales, como fallas en el reinicio de ECS y modos de URL no implementados.

Configurar alertas

En la página Alert Configuration, puede configurar alertas para el centro de eventos de K8s. Para obtener más información, consulte Set up alerts.

Ejecutar consultas personalizadas

En la página Custom Query, puede personalizar sentencias de consulta y sentencias analíticas.

Todos los eventos del centro de eventos de K8s se almacenan en un Logstore, por lo que puede utilizar todas las funciones del Logstore, como consultas personalizadas, consumo de eventos, informes personalizados y alertas personalizadas. Para obtener más información, consulte Quick start for query and analysis.

Para acceder al proyecto asociado con la instancia del centro de eventos de K8s, puede encontrar el nombre del proyecto de una de las siguientes maneras:

  • Busque el nombre del proyecto en la URL de la página Custom Query. La URL tiene el formato https://sls.console.alibabacloud.com/lognext/app/k8s-event/project/k8s-log-xxxx/logsearch/k8s-event. El campo después de project/ es el nombre del proyecto, por ejemplo, k8s-log-xxxx.

  • En la pestaña Event Center Management, localice la instancia del centro de eventos de K8s objetivo en la lista de instancias y consulte su nombre de proyecto correspondiente.

Actualizar versión

En la página Version Update, puede actualizar el centro de eventos de K8s.

Registro de ejemplo

El siguiente código muestra un registro de ejemplo.

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 del registro

Tipo

Descripción

hostname

string

El nombre de host del equipo donde ocurrió el evento.

level

string

El nivel del registro. Valores válidos: Normal y Warning.

pod_id

string

El ID único del pod. Este campo solo se incluye si el evento está relacionado con un pod.

pod_name

string

El nombre del pod. Este campo solo se incluye si el evento está relacionado con un pod.

event_id

json

Los detalles del evento. El valor de este campo es una cadena JSON.

Preguntas frecuentes

Una instancia del centro de eventos de K8s no tiene datos

Después de desplegar una instancia del centro de eventos de K8s, los nuevos eventos se recolectan automáticamente. Puede buscarlos en la página Custom Query. Se recomienda establecer el rango de tiempo en la esquina superior derecha en 1 Day. Si no se encuentran datos, generalmente se debe a dos causas:

  • No se han generado nuevos eventos en el clúster de Kubernetes desde que desplegó el centro de eventos de K8s.

    Puede ejecutar el comando kubectl get events --all-namespaces para comprobar si se generan nuevos eventos en el clúster.

  • Los parámetros están configurados incorrectamente en su despliegue de kube-eventer y node-problem-detector.

    • Si utiliza un clúster de Container Service for Kubernetes (ACK), siga estos pasos:

      1. Inicie sesión en la consola de ACK.

      2. En la página Clusters, haga clic en el nombre del clúster objetivo.

      3. En el panel de navegación izquierdo, vaya a Apply > Helm.

      4. En la página Helm, busque ack-node-problem-detector y haga clic en Update.

      5. Revise y modifique la configuración de parámetros.

    • Si utiliza un clúster de Kubernetes autogestionado, consulte Collect Kubernetes events para ver la configuración de parámetros.

¿Cómo consulto los registros de contenedor de un evento?

  • Si utiliza un clúster de Container Service for Kubernetes (ACK), siga estos pasos:

    1. Inicie sesión en la consola de ACK.

    2. En la página Clusters, haga clic en el nombre del clúster objetivo.

    3. En el panel de navegación izquierdo, vaya a Workloads > Pods.

    4. Establezca Namespace en kube-system.

    5. En la lista Pods, busque el pod objetivo y haga clic en Log.

  • Si utiliza un clúster de Kubernetes autogestionado, revise los registros de los Pods con el prefijo de nombre de archivo eventer-sls en el namespace kube-system.