Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ Cloud Container Engine/ Guía del usuario/ Logs/ Uso de ICAgent para recopilar logs de contenedores
Actualización más reciente 2024-09-10 GMT+08:00

Uso de ICAgent para recopilar logs de contenedores

CCE trabaja con AOM para recopilar logs de carga de trabajo. Al crear un nodo, CCE instala el ICAgent por usted (el DaemonSet llamado icagent en el espacio de nombres del kube-system del clúster). Una vez que ICAgent recopila los logs de carga de trabajo y los informa a la AOM, puede ver los logs de carga de trabajo en la consola de CCE o de AOM.

Notas y restricciones

El ICAgent solo recopila archivos de log de texto *.log, *.trace y *.out.

Facturación

AOM ofrece una cuota de recopilación de logs gratuita de 500 MB por cada cuenta cada mes. Si se excede la cuota, se le cobrará. Para obtener más información, véase la Facturación. Puede hacer clic en la consola de AOM para ver los logs.

Uso de ICAgent para recopilar logs

Puede agregar una política para recopilar logs mediante ICAgent para una carga de trabajo.

  1. Cuando crea una carga de trabajo, establezca el registro para el contenedor.
  2. Haga clic en para agregar una política de log.

    Lo siguiente usa Nginx como ejemplo. Las políticas de log se varían en función de las cargas de trabajo.
    Figura 1 Adición de una política de log

  3. Establezca Storage Type en Host Path o Container Path.

    Tabla 1 Configuración de políticas de log

    Parámetro

    Descripción

    Storage Type

    • Host Path (hostPath): Una ruta de host se monta en la ruta de contenedor especificada. En la ruta del host del nodo, puede ver la salida de los logs de contenedor en la ruta de montaje.
    • Container Path (emptyDir): Una ruta temporal del nodo se monta en la ruta especificada. Los datos que existen en la ruta temporal pero que el recopilador no notifica a AOM desaparecerán después de eliminar el pod.

    Host Path

    Introduzca una ruta de acceso de host, por ejemplo, /var/paas/sys/log/nginx.

    Container Path

    Ruta del contenedor (por ejemplo, /tmp) en la que se montarán los recursos de almacenamiento.
    AVISO:
    • No monte el almacenamiento en un directorio del sistema como / o /var/run; esta acción puede provocar un error de contenedor. Se recomienda montar el contenedor en un directorio vacío. Si el directorio no está vacío, asegúrese de que no haya archivos que afecten al inicio del contenedor en el directorio. De lo contrario, dichos archivos se reemplazarán, lo que provocará errores al iniciar el contenedor y crear la carga de trabajo.
    • Cuando el contenedor está montado en un directorio de alto riesgo, se recomienda utilizar una cuenta con los permisos mínimos para iniciar el contenedor; de lo contrario, los archivos de alto riesgo en la máquina host podrían estar dañados.
    • AOM recopila solo los primeros 20 archivos de log que se han modificado recientemente. Recoge archivos de 2 niveles de subdirectorios de forma predeterminada.
    • AOM solo recopila los archivos de texto de log .log, .trace y .out en las rutas de montaje.
    • Para obtener más información acerca de cómo establecer permisos para puntos de montaje en un contenedor, consulte Configurar un contexto de seguridad para un pod o un contenedor.

    Extended Host Path

    Este parámetro solo es obligatorio si Storage Type está establecido en Host Path.

    Las rutas de host extendidas contienen ID de pod o nombres de contenedor para distinguir diferentes contenedores en las que está montada la ruta de host.

    Se agregue un directorio de nivel 3 al directorio/subdirectorio de volumen original. Puede obtener fácilmente la salida de archivos por un solo Pod.

    • None: No se ha configurado ninguna ruta extendida.
    • PodUID: ID de un pod.
    • PodName: Nombre de un pod.
    • PodUID/ContainerName: ID de un pod o nombre de un contenedor.
    • PodName/ContainerName: Nombre de un pod o un contenedor.

    Ruta de colección

    Una ruta de recopilación limita el ámbito de la recopilación a los registros especificados.

    • Si no se especifica ninguna ruta de recopilación, los archivos de log de los formatos .log, .trace y .out se recopilarán a partir de la ruta especificada.
    • /Path/**/ indica que todos los archivos de log de los formatos .log, .trace y .out se recopilarán de forma recursiva desde la ruta especificada y todos los subdirectorios a 5 niveles de profundidad.
    • * en los nombres de los archivos de log indica una coincidencia difusa.

    Ejemplo: La ruta de recopilación /tmp/**/test*.log indica que todos los archivos .log con el prefijo test se recopilarán de /tmp y subdirectorios a 5 niveles de profundidad.

    ATENCIÓN:

    Asegúrese de que la versión de ICAgent es 5.12.22 o posterior.

    Log Dump

    El volcado de logs se refiere a la rotación de archivos de log en un host local.

    • Enabled: AOM analiza los archivos de log cada minuto. Cuando un archivo de log supera los 50 MB, se descarga inmediatamente. Se genera un nuevo archivo .zip en el directorio donde se encuentra el archivo de log. Para un archivo de log, AOM almacena solo los 20 archivos de .zip más recientes. Cuando el número de archivos .zip supera los 20, se eliminarán los archivos .zip anteriores. Una vez completado el volcado, se borrará el archivo de log en AOM.
    • Disabled: AOM no volca los archivos de log.
    NOTA:
    • AOM rota los archivos de log mediante copytruncate. Antes de habilitar el volcado de log, asegúrese de que los archivos de log estén escritos en el modo de adición. De lo contrario, pueden producirse agujeros de archivo.
    • Actualmente, los componentes principales de log como Log4j y Logback admiten la rotación de archivos de log. Si ya ha establecido la rotación para los archivos de log, omita la configuración. De lo contrario, pueden producirse conflictos.
    • Se recomienda configurar la rotación de archivos de log para sus propios servicios para controlar de manera flexible el tamaño y el número de archivos enrollados.

  4. Haga clic en OK.

Ejemplo de YAML (ICAgent)

Puede establecer la ruta de almacenamiento del log contenedor definiendo un archivo YAML.

Como se muestra en la siguiente figura, un emptyDir está montado en una ruta temporal a /var/log/nginx. De esta manera, el ICAgent recopila los logs de /var/log/nginx. El campo policy es personalizado por CCE y permite al ICAgent identificar y recopilar logs.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: testlog
  namespace: default
spec:
  selector:
    matchLabels:
      app: testlog
  template:
    replicas: 1
    metadata:
      labels:
        app: testlog
    spec:
      containers:
        - image: 'nginx:alpine'
          name: container-0
          resources:
            requests:
              cpu: 250m
              memory: 512Mi
            limits:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            - name: vol-log
              mountPath: /var/log/nginx
              policy:
                logs:
                  rotate: ''
      volumes:
        - emptyDir: {}
          name: vol-log
      imagePullSecrets:
        - name: default-secret

A continuación se muestra cómo utilizar un volumen de hostPath. En comparación con emptyDir, el tipo de volumes se cambia a hostPath y la ruta en el host debe configurarse para este volumen de hostPath. En el siguiente ejemplo, el /tmp/log del host se monta en /var/log/nginx. De esta manera, el ICAgent puede recopilar los logs de /var/log/nginx sin eliminar los logs de /tmp/log.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: testlog
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: testlog
  template:
    metadata:
      labels:
        app: testlog
    spec:
      containers:
        - image: 'nginx:alpine'
          name: container-0
          resources:
            requests:
              cpu: 250m
              memory: 512Mi
            limits:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            - name: vol-log
              mountPath: /var/log/nginx
              readOnly: false
              extendPathMode: PodUID
              policy:
                logs:
                  rotate: Hourly
                  annotations:
                    pathPattern: '**'
                    format: ''
      volumes:
        - hostPath:
            path: /tmp/log
          name: vol-log
      imagePullSecrets:
        - name: default-secret
Tabla 2 Descripción de parámetros

Parámetro

Descripción

Descripción

extendPathMode

Ruta de host extendida

Las rutas de host extendidas contienen ID de pod o nombres de contenedor para distinguir diferentes contenedores en las que está montada la ruta de host.

Se agregue un directorio de nivel 3 al directorio/subdirectorio de volumen original. Puede obtener fácilmente la salida de archivos por un solo Pod.

  • None: No se ha configurado ninguna ruta extendida.
  • PodUID: ID de un pod.
  • PodName: Nombre de un pod.
  • PodUID/ContainerName: ID de un pod o nombre de un contenedor.
  • PodName/ContainerName: Nombre de un pod o un contenedor.

policy.logs.rotate

Volcado de logs

El volcado de logs se refiere a la rotación de archivos de log en un host local.

  • Enabled: AOM analiza los archivos de log cada minuto. Cuando un archivo de log supera los 50 MB, se descarga inmediatamente. Se genera un nuevo archivo .zip en el directorio donde se encuentra el archivo de log. Para un archivo de log, AOM almacena solo los 20 archivos de .zip más recientes. Cuando el número de archivos .zip supera los 20, se eliminarán los archivos .zip anteriores. Una vez completado el volcado, se borrará el archivo de log en AOM.
  • Disabled: AOM no volca los archivos de log.
NOTA:
  • AOM rota los archivos de log mediante copytruncate. Antes de habilitar el volcado de log, asegúrese de que los archivos de log estén escritos en el modo de adición. De lo contrario, pueden producirse agujeros de archivo.
  • Actualmente, los componentes principales de log como Log4j y Logback admiten la rotación de archivos de log. Si ha establecido la rotación para los archivos de log, omita la configuración. De lo contrario, pueden producirse conflictos.
  • Se recomienda configurar la rotación de archivos de log para sus propios servicios para controlar de manera flexible el tamaño y el número de archivos enrollados.

policy.logs.annotations.pathPattern

Ruta de colección

Una ruta de recopilación limita el ámbito de la recopilación a los registros especificados.

  • Si no se especifica ninguna ruta de recopilación, los archivos de log de los formatos .log, .trace y .out se recopilarán a partir de la ruta especificada.
  • /Path/**/ indica que todos los archivos de log de los formatos .log, .trace y .out se recopilarán de forma recursiva desde la ruta especificada y todos los subdirectorios a 5 niveles de profundidad.
  • * en los nombres de los archivos de log indica una coincidencia difusa.

Ejemplo: La ruta de recopilación /tmp/**/test*.log indica que todos los archivos .log con el prefijo test se recopilarán de /tmp y subdirectorios a 5 niveles de profundidad.

ATENCIÓN:

Asegúrese de que la versión de ICAgent es 5.12.22 o posterior.

policy.logs.annotations.format

Coincidencia de logs de varias líneas

Algunos registros de programa (por ejemplo, los logs de programa Java) contienen un log que ocupa varias líneas. De forma predeterminada, el sistema de recopilación de logs recopila logs por línea. Si desea mostrar los logs como un único mensaje de log en el sistema de recopilación de logs, puede habilitar la función de log de varias líneas y usar el modo de log de tiempo o patrón regular. Cuando una línea de mensaje de log coincide con el formato de tiempo preestablecido o la expresión regular, se considera como el inicio de un mensaje de log y la siguiente línea comienza con esta línea de mensaje de log se considera como el identificador de fin del mensaje de log.

El formato es el siguiente:

{
    "multi": {
        "mode": "time",
        "value": "YYYY-MM-DD hh:mm:ss"
    }
}

multi indica el modo multilínea.

  • time: tiempo de log. Introduzca un comodín de tiempo. Por ejemplo, si la hora en el log es 2017-01-01 23:59:59, el comodín es AAAA-MM-DD hh:mm:ss.
  • regular: patrón regular. Ingresar una expresión regular.

Visualización de logs

Después de configurar una ruta de recopilación de logs y crear la carga de trabajo, ICAgent recopila los archivos de log de la ruta de acceso configurada. La recolección dura aproximadamente 1 minuto.

Una vez completada la recopilación de logs, vaya a la página de detalles de la carga de trabajo y haga clic en Logs en la esquina superior derecha para ver los logs.

También puede ver los logs en la consola de AOM.

También puede ejecutar el comando kubectl logs para ver la salida estándar de un contenedor.

# View logs of a specified pod.
kubectl logs <pod_name>
kubectl logs -f <pod_name> # Similar to tail -f

# View logs of a specified container in a specified pod.
kubectl logs <pod_name> -c <container_name>

kubectl logs pod_name -c container_name -n namespace (one-off query)
kubectl logs -f <pod_name> -n namespace (real-time query in tail -f mode)