Ir al contenidoIr a la navegación de la página: página anterior [tecla de acceso p]/página siguiente [tecla de acceso n]
documentation.suse.com / Análisis de métricas de rendimiento mediante el kit de herramientas de análisis Performance Co-Pilot

Análisis de métricas de rendimiento mediante el kit de herramientas de análisis Performance Co-Pilot

Fecha de publicación: 25 Feb 2025
DESCRIPCIÓN

Para monitorizar el rendimiento, SUSE Linux Enterprise Micro proporciona una imagen de contenedor que permite ejecutar el kit de herramientas de análisis Performance Co-Pilot (PCP) en un contenedor.

INTENCIÓN

Desea monitorizar el rendimiento del sistema. En este artículo se proporciona información sobre cómo configurar y utilizar el kit de herramientas.

ESFUERZO

Se tardan aproximadamente 40 minutos en leer el artículo.

OBJETIVO

Podrá iniciar el contenedor de PCP con una configuración que se adapte a sus necesidades.

REQUISITOS
  • Una instancia en ejecución de SLE Micro.

1 Kit de herramientas de análisis Performance Co-Pilot

El kit incluye herramientas para recopilar y procesar información de rendimiento recogida en tiempo real o de los registros de archivos de PCP.

Los agentes de dominio de métricas de rendimiento recopilan los datos de rendimiento y los pasan al daemon pmcd. El daemon coordina la recopilación y exportación de estadísticas de rendimiento en respuesta a las peticiones de las herramientas de monitorización de PCP. pmlogger se utiliza para registrar las métricas. Para obtener información detallada, consulte la PCP documentation.

1.1 Obtención de la imagen del contenedor de PCP

La imagen del contenedor de PCP se basa en el contenedor BCI-Init que systemd utiliza para gestionar los servicios de PCP.

Puede extraer la imagen del contenedor mediante Podman o desde la consola de gestión Web Cockpit. Para extraer la imagen mediante Podman, ejecute el siguiente comando:

# podman pull registry.suse.com/suse/pcp:latest

Para obtener la imagen del contenedor mediante Cockpit, vaya a Contenedores Podman, haga clic en Obtener nueva imagen y busque pcp. A continuación, seleccione la imagen de registry.suse.com para SLE 15 SP4 y descárguela.

2 Ejecución del contenedor de PCP

El siguiente comando muestra las opciones mínimas que debe utilizar para ejecutar un contenedor de PCP:

# podman run -d  \
  --systemd always \
  -pHOST_IP:HOST_PORT:CONTAINER_PORT \
 -v HOST_DIR:/var/log/pcp/pmlogger \
  PCP_CONTAINER_IMAGE

donde las opciones tienen el siguiente significado:

-d

El contenedor se ejecuta en modo independiente sin tty.

--systemd always

Ejecuta el contenedor en modo systemd. systemd inicia automáticamente en el contenedor todos los servicios necesarios para ejecutarse en el contenedor de PCP.

--privileged

El contenedor se ejecuta con privilegios ampliados. Utilice esta opción si el sistema tiene SELinux habilitado; de lo contrario, las métricas recopiladas estarán incompletas.

-v HOST_DIR:/var/log/pcp/pmlogger

Crea un montaje de enlace para que los archivos de reserva pmlogger se escriban en el host HOST_DIR. Por defecto, pmlogger almacena las métricas recopiladas en /var/log/pcp/pmlogger.

PCP_CONTAINER_IMAGE

Es la imagen del contenedor de PCP descargada.

A continuación se muestran otras opciones útiles del comando podman run:

Otras opciones
-p HOST_IP:HOST_PORT:CONTAINER_PORT

Publica los puertos del contenedor asignando un puerto de contenedor a un puerto de host. Si no especifica HOST_IP, los puertos se asignan en el host local. Si omite el valor HOST_PORT, se utiliza un número de puerto aleatorio. Por defecto, el daemon pmcd escucha y expone la PMAPI para recibir métricas en el puerto 44321, por lo que se recomienda asignar este puerto al mismo número de puerto en el host. El daemon pmproxy escucha y expone la PMWEBAPI de REST para acceder a las métricas en el puerto 44322 por defecto, por lo que se recomienda asignar este puerto al mismo número de puerto de host.

--net host

El contenedor utiliza la red del host. Utilice esta opción para recopilar métricas de las interfaces de red del host.

-e

La opción permite definir las siguientes variables de entorno:

PCP_SERVICES

Es una lista de servicios separados por comas que systemd debe iniciar en el contenedor.

Los servicios por defecto son: pmcd, pmie, pmlogger y pmproxy.

Puede utilizar esta variable para ejecutar un contenedor con una lista de servicios distinta de la lista por defecto; por ejemplo, solo con pmlogger:

# podman run -d \
  --name pmlogger \
  --systemd always \
  -e PCP_SERVICES=pmlogger  \
  -v pcp-archives:/var/log/pcp/pmlogger  \
  registry.suse.com/suse/pcp:latest
HOST_MOUNT

Es una vía dentro del contenedor al montaje de enlace del sistema de archivos raíz del host. El valor por defecto no está definido.

REDIS_SERVERS

Especifica una conexión a un servidor Redis. En una configuración no agrupada en clúster, proporcione una lista separada por comas de las especificaciones de host. En una configuración en clúster, proporcione cualquier host de clúster individual; los demás hosts del clúster se descubrirán automáticamente. El valor por defecto es localhost:6379.

Si necesita utilizar una configuración distinta a la proporcionada por las variables de entorno, proceda como se describe en la Sección 3, “Configuración de los servicios de PCP”.

2.1 Inicio automático del contenedor de PCP al arrancar

Después de ejecutar el contenedor de PCP, puede configurar systemd para que lo inicie al arrancar. Para ello, siga el procedimiento que se indica a continuación:

  1. Cree un archivo de unidad para el contenedor mediante el comando podman generate systemd:

    # podman generate systemd --nameCONTAINER_NAME > /etc/systemd/system/container-CONTAINER_NAME.service

    donde CONTAINER_NAME es el nombre del contenedor de PCP utilizado al ejecutar el contenedor desde la imagen del contenedor.

  2. Habilite el servicio en systemd:

    # systemctl enable container-CONTAINER_NAME

3 Configuración de los servicios de PCP

Todos los servicios que se ejecutan dentro del contenedor de PCP tienen una configuración por defecto que puede no adaptarse a sus necesidades. Si necesita una configuración personalizada que las variables de entorno no puedan cubrir, cree archivos de configuración para los servicios de PCP y páselos al PCP mediante un montaje de enlace de la siguiente manera:

# podman run -d \
  --nameCONTAINER_NAME \
 --systemd always \
 -v $HOST_CONFIG:CONTAINER_CONFIG_PATH:z \
  -v HOST_LOGS_PATH:/var/log/pcp/pmlogger  \
  registry.suse.com/suse/pcp:latest

Dónde:

CONTAINER_NAME

Es un nombre de contenedor opcional.

HOST_CONFIG

Es una vía absoluta a la configuración que ha creado en el equipo host. Puede elegir el nombre de archivo que desee.

CONTAINER_CONFIG_PATH

Es una vía absoluta a un archivo de configuración concreto dentro del contenedor. Cada archivo de configuración disponible se describe en las secciones correspondientes.

HOST_LOGS_PATH

Es un directorio que debe ser un montaje de enlace a los registros del contenedor.

Por ejemplo, un contenedor llamado pcp, con el archivo de configuración pmcd en el equipo host y el directorio pcp-archives para los registros en el equipo host se ejecuta mediante el siguiente comando:

# podman run -d \
  --name pcp  \
  --systemd always \
  -v $(pwd)/pcp-archives:/var/log/pcp/pmlogger \
  -v $(pwd)/pmcd:/etc/sysconfig/pmcd \
registry.suse.com/suse/pcp:latest

3.1 Configuración personalizada del daemon pmcd

La configuración del daemon pmcd se almacena en el archivo /etc/sysconfig/pmcd. El archivo almacena variables de entorno que modifican el comportamiento del daemon pmcd.

Puede añadir las siguientes variables al archivo /etc/sysconfig/pmcd para configurar el daemon pmcd:

PMCD_LOCAL

Define si el host remoto puede conectarse al daemon pmcd. Si se define en 0, se permiten las conexiones remotas al daemon. Si se define en 1, el daemon solo escucha en el host local. El valor por defecto es 0.

PMCD_MAXPENDING

Define el número máximo de conexiones pendientes al agente. El valor por defecto es 5.

PMCD_ROOT_AGENT

Si pmdaroot está habilitado (el valor se establece en 1), la adición de un nuevo PDMA no activa el reinicio de otros PMDA. Si pmdaroot no está habilitado, pmcd necesitará que se reinicien todos los PMDA cuando se añada un nuevo PMDA. El valor por defecto es 1.

PMCD_RESTART_AGENTS

Si se define en 1, el daemon pmcd intenta reiniciar cualquier PMDA del que se haya salido. Habilite esta opción solo si ha habilitado pmdaroot, ya que pmcd no tiene privilegios para reiniciar el PMDA.

PMCD_WAIT_TIMEOUT

Define el tiempo máximo en segundos que pmcd puede esperar para aceptar una conexión. Después de este tiempo, se informa de que la conexión ha fallado. El valor por defecto es 60.

PCP_NSS_INIT_MODE

Define el modo en el que pmcd inicializa la base de datos de certificados NSS cuando se utilizan conexiones seguras. El valor por defecto es readonly. Puede definir el modo como readwrite, pero si la inicialización falla, se utiliza el valor por defecto como reserva.

A continuación se muestra un ejemplo:

PMCD_LOCAL=0
      PMCD_MAXPENDING=5
      PMCD_ROOT_AGENT=1
      PMCD_RESTART_AGENTS=1
      PMCD_WAIT_TIMEOUT=70
      PCP_NSS_INIT_MODE=readwrite

3.2 Configuración personalizada de pmlogger

La configuración personalizada de pmlogger se almacena en los siguientes archivos de configuración:

  • /etc/sysconfig/pmlogger

  • /etc/pcp/pmlogger/control.d/local

3.2.1 El archivo /etc/sysconfig/pmlogger

Puede utilizar los siguientes atributos para configurar pmlogger:

PMLOGGER_LOCAL

Define si pmlogger permite conexiones desde hosts remotos. Si se define en 1, pmlogger solo permite conexiones desde un host local.

PMLOGGER_MAXPENDING

Define el número máximo de conexiones pendientes. El valor por defecto es 5.

PMLOGGER_INTERVAL

Define los usos de pmlogger por defecto del intervalo de muestreo. El valor por defecto es 60 s. Tenga en cuenta que la línea de comandos pmlogger puede anular este valor.

PMLOGGER_CHECK_SKIP_LOGCONF

Al establecer esta opción en , se inhabilita la regeneración y la comprobación de la configuración de pmlogger si la configuración de pmlogger proviene de pmlogconf. El comportamiento por defecto es regenerar los archivos de configuración y comprobar los cambios cada vez que se inicie pmlogger.

A continuación se muestra un ejemplo:

PMLOGGER_LOCAL=1
PMLOGGER_MAXPENDING=5
PMLOGGER_INTERVAL=10
PMLOGGER_CHECK_SKIP_LOGCONF=yes

3.2.2 El archivo /etc/pcp/pmlogger/control.d/local

El archivo /etc/pcp/pmlogger/control.d/local almacena las especificaciones del host, las métricas que se deben registrar, la frecuencia de registro (por defecto es de 24 horas) y las opciones de pmlogger. Por ejemplo:

# === VARIABLE ASSIGNMENTS ===
#
# DO NOT REMOVE OR EDIT THE FOLLOWING LINE
$version=1.1

# Uncomment one of the lines below to enable/disable compression behaviour
# that is different to the pmlogger_daily default.
# Value is days before compressing archives, 0 is immediate compression,
# "never" or "forever" suppresses compression.
#
#$PCP_COMPRESSAFTER=0
#$PCP_COMPRESSAFTER=3
#$PCP_COMPRESSAFTER=never

# === LOGGER CONTROL SPECIFICATIONS ===
#
#Host           P?  S?  directory                       args

# local primary logger
LOCALHOSTNAME   y   n   PCP_ARCHIVE_DIR/LOCALHOSTNAME   -r -T24h10m -c config.default -v 100Mb
Nota
Nota: los valores por defecto apuntan al host local

Si ejecuta pmlogger en un contenedor en un equipo diferente a donde ejecuta pmcd (un cliente), cambie la siguiente línea para que señale al cliente:

# local primary logger
CLIENT_HOSTNAME   y   n   PCP_ARCHIVE_DIR/CLIENT_HOSTNAME   -r -T24h10m -c config.default -v 100Mb

Por ejemplo, para el nombre de host slemicro_1, la línea debe tener el aspecto siguiente:

# local primary logger
slemicro_1   y   n   PCP_ARCHIVE_DIR/slemicro_1   -r -T24h10m -c config.default -v 100Mb

4 Gestión de las métricas de PCP

4.1 Listado de métricas de PCP

Desde el contenedor, puede utilizar el comando pminfo para mostrar las métricas. Por ejemplo, para mostrar todas las métricas de rendimiento disponibles, ejecute:

# pminfo

Puede mostrar un grupo de métricas relacionadas especificando el prefijo de métrica:

# pminfoMETRIC_PREFIX

Por ejemplo, para mostrar todas las métricas relacionadas con el kernel, utilice:

# pminfo disk

disk.dev.r_await
disk.dm.await
disk.dm.r_await
disk.md.await
disk.md.r_await
...

También puede especificar cadenas adicionales para reducir la lista de métricas, por ejemplo:

# piminfo disk.dev

disk.dev.read
disk.dev.write
disk.dev.total
disk.dev.blkread
disk.dev.blkwrite
disk.dev.blktotal
...

Para obtener el texto de ayuda en línea de una métrica concreta, utilice la opción -t seguida de la métrica, por ejemplo:

# pminfo -t kernel.cpu.util.user

kernel.cpu.util.user [percentage of user time across all CPUs, including guest CPU time]

Para mostrar un texto de descripción de una métrica concreta, utilice la opción -T seguida de la métrica, por ejemplo:

# pminfo -T kernel.cpu.util.user

Help:
percentage of user time across all CPUs, including guest CPU time

4.2 Comprobación de métricas locales

Después de iniciar el contenedor de PCP, puede verificar que las métricas se registran correctamente ejecutando el siguiente comando dentro del contenedor:

# pcp

Performance Co-Pilot configuration on localhost:

 platform: Linux localhost 5.3.18-150300.59.68-default #1 SMP Wed May 4 11:29:09 UTC 2022 (ea30951) x86_64
 hardware: 1 cpu, 1 disk, 1 node, 1726MB RAM
 timezone: UTC
 services: pmcd pmproxy
     pmcd: Version 5.2.2-1, 9 agents, 4 clients
     pmda: root pmcd proc pmproxy xfs linux mmv kvm jbd2
 pmlogger: primary logger: /var/log/pcp/pmlogger/localhost/20220607.09.24
     pmie: primary engine: /var/log/pcp/pmie/localhost/pmie.log

Ahora compruebe si los registros se escriben en un destino adecuado:

# lsPATH_TO_PMLOGGER_LOGS

Donde PATH_TO_PMLOGGER_LOGS debería ser /var/log/pcp/pmlogger/localhost/ en este caso.

4.3 Registro de métricas de sistemas remotos

Puede distribuir contenedores que recopilen métricas de sistemas remotos distintos de aquellos en los que se ejecutan los contenedores pmlogger. Cada sistema de recopilador remoto necesita el daemon pmcd y un conjunto de pmda. Para distribuir varios recopiladores con un sistema de monitorización centralizado, haga lo siguiente.

  1. En cada sistema del que desee recopilar métricas (clientes), ejecute un contenedor con el daemon pmcd:

    # podman run -d \
        --name pcp-pmcd \
        --privileged \
        --net host \
        --systemd always \
        -e PCP_SERVICES=pmcd \
        -e HOST_MOUNT=/host \
        -v /:/host:ro,rslave \
        registry.suse.com/suse/pcp:latest
  2. En el sistema de monitorización, cree un archivo de configuración pmlogger para cada cliente de control.CLIENT con el siguiente contenido:

    $version=1.1
    
    CLIENT_HOSTNAME n n PCP_ARCHIVE_DIR/CLIENT -N -r -T24h10m -c config.default -v 100Mb

    Tenga en cuenta que CLIENT_HOSTNAME debe poder resolverse en DNS. En su lugar, puede utilizar direcciones IP o nombres de dominio completos.

  3. En el sistema de monitorización, cree un directorio para cada cliente para almacenar los registros recogidos:

    # mkdir /root/pcp-archives/CLIENT

    Por ejemplo, para slemicro_1:

    # mkdir /root/pcp-archives/slemicro_1
  4. En el sistema de monitorización, ejecute un contenedor con pmlogger para cada cliente:

    # podman run -d \
        --name pcp-pmlogger-CLIENT \
     --systemd always \
     -e PCP_SERVICES=pmlogger \
     -v /root/pcp-archives/CLIENT:/var/log/pcp/pmlogger:z \
        -v $(pwd)/control.CLIENT:/etc/pcp/pmlogger/control.d/local:z \
        registry.suse.com/suse/pcp:latest

    Por ejemplo, para un cliente llamado slemicro_1:

    # podman run -d \
        --name pcp-pmlogger-slemicro_1 \
        --systemd always \
        -e PCP_SERVICES=pmlogger \
        -v /root/pcp-archives:/var/log/pcp/pmlogger:z \
        -v $(pwd)/control.slemicro_1:/etc/pcp/pmlogger/control.d/local:z \
        registry.suse.com/suse/pcp:latest
    Nota
    Nota

    El segundo montaje de enlace apunta al archivo de configuración creado en el Paso 2 y reemplaza la configuración de pmlogger por defecto. Si no crea este montaje de enlace, pmlogger utiliza el archivo /etc/pcp/pmlogger/control.d/local por defecto y el registro de los clientes falla, ya que la configuración por defecto apunta a un host local. Para obtener más información sobre el archivo de configuración, consulte la Sección 3.2.2, “El archivo /etc/pcp/pmlogger/control.d/local.

  5. Para comprobar si la recopilación de registros funciona correctamente, ejecute:

    # ls -l pcp-archives/CLIENT/CLIENT

    Por ejemplo:

    # ls -l pcp-archives/slemicro_1/slemicro_1
    
    total 1076
    -rw-r--r--. 1 systemd-network systemd-network 876372 Jun  8 11:24 20220608.10.58.0
    -rw-r--r--. 1 systemd-network systemd-network    312 Jun  8 11:22 20220608.10.58.index
    -rw-r--r--. 1 systemd-network systemd-network 184486 Jun  8 10:58 20220608.10.58.meta
    -rw-r--r--. 1 systemd-network systemd-network    246 Jun  8 10:58 Latest
    -rw-r--r--. 1 systemd-network systemd-network  24595 Jun  8 10:58 pmlogger.log