Análisis de métricas de rendimiento mediante el kit de herramientas de análisis Performance Co-Pilot
- 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 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
:
-
-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 daemonpmproxy
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
ypmproxy
.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:
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.servicedonde CONTAINER_NAME es el nombre del contenedor de PCP utilizado al ejecutar el contenedor desde la imagen del contenedor.
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. Sipmdaroot
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 habilitadopmdaroot
, ya quepmcd
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 esreadonly
. Puede definir el modo comoreadwrite
, 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 comandospmlogger
puede anular este valor.- PMLOGGER_CHECK_SKIP_LOGCONF
Al establecer esta opción en Sí, se inhabilita la regeneración y la comprobación de la configuración de
pmlogger
si la configuración depmlogger
proviene depmlogconf
. El comportamiento por defecto es regenerar los archivos de configuración y comprobar los cambios cada vez que se iniciepmlogger
.
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
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.
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:latestEn el sistema de monitorización, cree un archivo de configuración
pmlogger
para cada cliente decontrol.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.
En el sistema de monitorización, cree un directorio para cada cliente para almacenar los registros recogidos:
#
mkdir /root/pcp-archives/CLIENTPor ejemplo, para
slemicro_1
:#
mkdir /root/pcp-archives/slemicro_1En 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:latestPor 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:latestNotaEl 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
”.Para comprobar si la recopilación de registros funciona correctamente, ejecute:
#
ls -l pcp-archives/CLIENT/CLIENTPor 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
5 Información legal #
Copyright © 2006 –2025 SUSE LLC y colaboradores. Reservados todos los derechos.
Está permitido copiar, distribuir y modificar este documento según los términos de la licencia de documentación gratuita GNU, versión 1.2 o (según su criterio) versión 1.3. Este aviso de copyright y licencia deberán permanecer inalterados. En la sección titulada “GNU Free Documentation License” (Licencia de documentación gratuita GNU) se incluye una copia de la versión 1.2 de la licencia.
Para obtener información sobre las marcas comerciales de SUSE, consulte https://www.suse.com/company/legal/. Todas las marcas comerciales de otros fabricantes son propiedad de sus respectivas empresas. Los símbolos de marcas comerciales (®, ™, etc.) indican marcas comerciales de SUSE y sus filiales. Los asteriscos (*) indican marcas comerciales de otros fabricantes.
Toda la información recogida en esta publicación se ha compilado prestando toda la atención posible al más mínimo detalle. Sin embargo, esto no garantiza una precisión total. Ni SUSE LLC, ni sus filiales, ni los autores o traductores serán responsables de los posibles errores o las consecuencias que de ellos pudieran derivarse.