Analyse des métriques de performances à l'aide de la suite d'outils d'analyse Performance Co-Pilot
- CONTENU
Pour surveiller les performances, SUSE Linux Enterprise Micro fournit une image de conteneur qui vous permet d'exécuter la suite d'outils d'analyse Performance Co-Pilot (PCP) dans un conteneur.
- MOTIF
Vous souhaitez surveiller les performances de votre système. Cet article fournit des informations sur la configuration et l'utilisation de la suite d'outils.
- EFFORT
La lecture de l'article prend environ 40 minutes.
- OBJECTIF
Vous serez capable de démarrer le conteneur PCP avec une configuration adaptée à vos besoins.
- CONDITIONS REQUISES
Une instance en cours d'exécution de SLE Micro.
1 Suite d'outils d'analyse Performance Co-Pilot #
La suite est constituée d'outils de collecte et de traitement des informations de performances collectées en temps réel ou à partir des journaux d'archivage PCP.
Les données de performances sont collectées par des agents de domaine de métriques de performances et transmises au daemon pmcd
. Le daemon coordonne la collecte et l'exportation des statistiques de performances en réponse aux requêtes des outils de surveillance PCP. pmlogger
est ensuite utilisé pour consigner les métriques. Pour plus de détails, reportez-vous à la documentation relative à PCP : PCP
documentation.
1.1 Obtention de l'image du conteneur PCP #
L'image du conteneur PCP est basée sur le conteneur BCI-Init qui utilise systemd
pour gérer les services PCP.
Vous pouvez extraire l'image du conteneur à l'aide de Podman ou à partir de la console de gestion Web Cockpit. Pour extraire l'image à l'aide de Podman, exécutez la commande suivante :
#
podman pull registry.suse.com/suse/pcp:latest
Pour obtenir l'image du conteneur à l'aide de Cockpit, accédez à pcp. Sélectionnez ensuite l'image à partir de registry.suse.com
pour SLE 15 SP4, puis téléchargez-la.
2 Exécution du conteneur PCP #
La commande suivante affiche les options minimales que vous devez utiliser pour exécuter un conteneur PCP :
#
podman run -d \
--systemd always \
-pHOST_IP:HOST_PORT:CONTAINER_PORT \
-v HOST_DIR:/var/log/pcp/pmlogger \
PCP_CONTAINER_IMAGE
où les options ont la signification suivante :
-
-d
Le conteneur s'exécute en mode détaché sans tty.
-
--systemd always
Exécute le conteneur en mode
systemd
. Tous les services devant s'exécuter dans le conteneur PCP sont démarrés automatiquement parsystemd
dans le conteneur.-
--privileged
Le conteneur s'exécute avec des privilèges étendus. Utilisez cette option si SELinux est activé dans votre système, faute de quoi les métriques collectées seront incomplètes.
-
-v HOST_DIR:/var/log/pcp/pmlogger
Crée un montage lié afin que les archives
pmlogger
soient écrites sur l'hôte HOST_DIR. Par défaut,pmlogger
stocke les métriques collectées à l'emplacement/var/log/pcp/pmlogger
.- PCP_CONTAINER_IMAGE
Image du conteneur PCP téléchargée.
D'autres options utiles de la commande podman run
sont les suivantes :
-
-p HOST_IP:HOST_PORT:CONTAINER_PORT
Publie les ports du conteneur en assignant un port de conteneur à un port hôte. Si vous ne spécifiez pas HOST_IP, les ports sont assignés sur l'hôte local. Si vous n'indiquez pas de valeur HOST_PORT, un numéro de port aléatoire est utilisé. Par défaut, le daemon
pmcd
écoute et expose PMAPI pour recevoir des métriques sur le port 44321. Il est donc recommandé d'assigner ce port au même numéro de port sur l'hôte. Le daemonpmproxy
écoute et expose REST PMWEBAPI pour accéder aux métriques sur le port 44322 par défaut. Il est donc recommandé d'assigner ce port au même numéro de port hôte.-
--net host
Le conteneur utilise le réseau de l'hôte. Utilisez cette option pour collecter des métriques à partir des interfaces réseau de l'hôte.
-
-e
Cette option vous permet de définir les variables d'environnement suivantes :
- PCP_SERVICES
Liste de services séparés par des virgules à démarrer par
systemd
dans le conteneur.Les services par défaut sont :
pmcd
,pmie
,pmlogger
,pmproxy
.Vous pouvez utiliser cette variable pour exécuter un conteneur avec une autre liste de services que celle par défaut, par exemple, uniquement avec
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
Chemin à l'intérieur du conteneur permettant d'accéder au montage lié du système de fichiers racine de l'hôte. La valeur par défaut n'est pas définie.
- REDIS_SERVERS
Spécifie une connexion à un serveur Redis. Dans une configuration hors grappe, fournissez une liste de spécifications pour l'hôte en les séparant par des virgules. Dans une configuration en grappe, indiquez un hôte de grappe individuel, les autres hôtes de la grappe sont découverts automatiquement. La valeur par défaut est ;
localhost:6379
.
Si vous devez utiliser une configuration différente de celle fournie par les variables d'environnement, procédez comme décrit à la Section 3, « Configuration des services PCP »
2.1 Démarrage automatique du conteneur PCP au démarrage #
Après avoir exécuté le conteneur PCP, vous pouvez configurer systemd
pour démarrer le conteneur au démarrage. Pour ce faire, suivez la procédure ci-après :
Créez un fichier d'unité pour le conteneur à l'aide de la commande
podman generate systemd
:#
podman generate systemd --nameCONTAINER_NAME > /etc/systemd/system/container-CONTAINER_NAME.serviceOù CONTAINER_NAME est le nom du conteneur PCP que vous avez utilisé lors de l'exécution du conteneur à partir de l'image du conteneur.
Activez le service dans
systemd
:#
systemctl enable container-CONTAINER_NAME
3 Configuration des services PCP #
Tous les services qui s'exécutent dans le conteneur PCP ont une configuration par défaut qui pourrait ne pas répondre à vos besoins. Si vous avez besoin d'une configuration personnalisée qui ne peut pas être couverte par les variables d'environnement, créez des fichiers de configuration pour les services PCP et transmettez-les au PCP à l'aide d'un montage lié comme suit :
#
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
Où :
- CONTAINER_NAME
Est un nom de conteneur facultatif.
- HOST_CONFIG
Est un chemin d'accès absolu à la configuration que vous avez créée sur la machine hôte. Vous pouvez choisir n'importe quel nom de fichier.
- CONTAINER_CONFIG_PATH
Est un chemin d'accès absolu à un fichier de configuration spécifique à l'intérieur du conteneur. Chaque fichier de configuration disponible est décrit plus en détail dans les sections correspondantes.
- HOST_LOGS_PATH
Répertoire qui doit être un montage lié aux journaux de conteneur.
Par exemple, un conteneur nommé pcp
, ayant le fichier de configuration pmcd
et le répertoire des journaux pcp-archives
sur la machine hôte, est exécuté à l'aide de la commande suivante :
#
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 Configuration du daemon pmcd
personnalisé #
La configuration du daemon pmcd
est stockée dans le fichier /etc/sysconfig/pmcd
. Le fichier stocke les variables d'environnement qui modifient le comportement du daemon pmcd
.
Vous pouvez ajouter les variables suivantes au fichier /etc/sysconfig/pmcd
pour configurer le daemon pmcd
:
- PMCD_LOCAL
Définit si l'hôte distant peut se connecter au daemon
pmcd
. Si la valeur est définie sur 0, les connexions à distance au daemon sont autorisées. Si la valeur est définie sur 1, le daemon écoute uniquement sur l'hôte local. La valeur par défaut est 0.- PMCD_MAXPENDING
Définit le nombre maximal de connexions à l'agent en attente. La valeur par défaut est 5.
- PMCD_ROOT_AGENT
Si
pmdaroot
est activée (la valeur est définie sur 1), l'ajout d'un nouveau PDMA ne déclenche pas le redémarrage des autres PMDA. Sipmdaroot
n'est pas activée,pmcd
exigera le redémarrage de tous les PMDA lors de l'ajout d'un nouveau PMDA. La valeur par défaut est 1.- PMCD_RESTART_AGENTS
S'il est défini sur 1, le daemon
pmcd
tente de redémarrer tout PMDA qui a été quitté. N'activez cette option que si vous avez activépmdaroot
, car le daemonpmcd
ne dispose pas des privilèges suffisants pour redémarrer PMDA de manière autonome.- PMCD_WAIT_TIMEOUT
Définit le délai maximal en secondes pendant lequel le daemon
pmcd
peut patienter pour accepter une connexion. Passé ce délai, la connexion est signalée comme ayant échoué. La valeur par défaut est 60.- PCP_NSS_INIT_MODE
Définit le mode d'initialisation dans lequel le daemon
pmcd
initialise la base de données de certificats NSS lorsque des connexions sécurisées sont utilisées. La valeur par défaut estreadonly
. Vous pouvez définir le mode surreadwrite
, mais si l'initialisation échoue, la valeur par défaut est utilisée comme solution de secours.
Voici un exemple :
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 Configuration pmlogger
personnalisée #
La configuration personnalisée de pmlogger
est stockée dans les fichiers de configuration suivants :
/etc/sysconfig/pmlogger
/etc/pcp/pmlogger/control.d/local
3.2.1 Fichier /etc/sysconfig/pmlogger
#
Vous pouvez utiliser les attributs suivants pour configurer pmlogger
:
- PMLOGGER_LOCAL
Définit si
pmlogger
autorise les connexions à partir d'hôtes distants. Si la valeur est définie sur 1,pmlogger
autorise uniquement les connexions à partir d'un hôte local.- PMLOGGER_MAXPENDING
Définit le nombre maximal de connexions en attente. La valeur par défaut est 5.
- PMLOGGER_INTERVAL
Définit l'intervalle d'échantillonnage par défaut utilisé par
pmlogger
. La valeur par défaut est 60 s. N'oubliez pas que cette valeur peut être remplacée par la ligne de commandepmlogger
.- PMLOGGER_CHECK_SKIP_LOGCONF
La définition de cette option sur yes (oui) désactive la régénération et la vérification de la configuration
pmlogger
si la configurationpmlogger
provient depmlogconf
. Le comportement par défaut consiste à régénérer les fichiers de configuration et à vérifier les modifications à chaque démarrage depmlogger
.
Voici un exemple :
PMLOGGER_LOCAL=1 PMLOGGER_MAXPENDING=5 PMLOGGER_INTERVAL=10 PMLOGGER_CHECK_SKIP_LOGCONF=yes
3.2.2 Fichier /etc/pcp/pmlogger/control.d/local
#
Le fichier /etc/pcp/pmlogger/control.d/local
stocke les spécifications de l'hôte, les métriques à consigner, la fréquence de consignation (par défaut : 24 heures) et les options pmlogger
. Par exemple :
# === 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 vous exécutez pmlogger
dans un conteneur sur une autre machine que celle qui exécute le daemon pmcd
(un client), modifiez la ligne suivante pour pointer vers le client :
# local primary logger CLIENT_HOSTNAME y n PCP_ARCHIVE_DIR/CLIENT_HOSTNAME -r -T24h10m -c config.default -v 100Mb
Par exemple, pour le nom d'hôte slemicro_1
, la ligne doit se présenter comme suit :
# local primary logger slemicro_1 y n PCP_ARCHIVE_DIR/slemicro_1 -r -T24h10m -c config.default -v 100Mb
4 Gestion des métriques PCP #
4.1 Liste des métriques PCP #
À partir du conteneur, vous pouvez utiliser la commande pminfo
pour établir la liste des métriques. Par exemple, pour répertorier toutes les métriques de performances disponibles, exécutez :
#
pminfo
Vous pouvez obtenir la liste d'un groupe de métriques associées en spécifiant le préfixe des métriques :
#
pminfoMETRIC_PREFIX
Par exemple, pour obtenir la liste de toutes les métriques liées au kernel, utilisez :
#
pminfo disk
disk.dev.r_await
disk.dm.await
disk.dm.r_await
disk.md.await
disk.md.r_await
...
Vous pouvez également spécifier des chaînes supplémentaires pour affiner la liste des métriques, par exemple :
#
piminfo disk.dev
disk.dev.read
disk.dev.write
disk.dev.total
disk.dev.blkread
disk.dev.blkwrite
disk.dev.blktotal
...
Pour obtenir le texte d'aide en ligne d'une métrique spécifique, utilisez l'option -t
suivie de la métrique, par exemple :
#
pminfo -t kernel.cpu.util.user
kernel.cpu.util.user [percentage of user time across all CPUs, including guest CPU time]
Pour afficher le texte de description d'une métrique particulière, utilisez l'option -T
suivie de la métrique, par exemple :
#
pminfo -T kernel.cpu.util.user
Help:
percentage of user time across all CPUs, including guest CPU time
4.2 Vérification des métriques locales #
Après avoir démarré le conteneur PCP, vous pouvez vérifier que les métriques sont correctement enregistrées en exécutant la commande suivante à l'intérieur du conteneur :
#
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
Vérifiez maintenant si l'écriture des journaux s'effectue dans à l'emplacement de destination approprié :
#
lsPATH_TO_PMLOGGER_LOGS
où PATH_TO_PMLOGGER_LOGS doit être /var/log/pcp/pmlogger/localhost/
dans ce cas-ci.
4.3 Enregistrement de métriques à partir de systèmes distants #
Vous pouvez déployer des conteneurs de collecteurs qui collectent des métriques à partir d'autres systèmes distants que ceux sur lesquels les conteneurs pmlogger
sont en cours d'exécution. Chaque système de collecteur distant a besoin du daemon pmcd
et d'un ensemble de pmda. Pour déployer plusieurs collecteurs avec un système de surveillance centralisé, procédez comme suit.
Sur chaque système à partir duquel vous souhaitez collecter des métriques (clients), exécutez un conteneur avec le 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:latestSur le système de surveillance, créez un fichier de configuration
pmlogger
pour chaque clientcontrol.CLIENT
avec le contenu suivant :$version=1.1 CLIENT_HOSTNAME n n PCP_ARCHIVE_DIR/CLIENT -N -r -T24h10m -c config.default -v 100Mb
Gardez à l'esprit que CLIENT_HOSTNAMEdoit pouvoir être résolu dans DNS. Vous pouvez utiliser des adresses IP ou des noms de domaine complets (FQDN) à la place.
Sur le système de surveillance, créez un répertoire pour chaque client afin de stocker les journaux enregistrés :
#
mkdir /root/pcp-archives/CLIENTPar exemple, pour
slemicro_1
:#
mkdir /root/pcp-archives/slemicro_1Sur le système de surveillance, exécutez un conteneur avec
pmlogger
pour chaque client :#
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:latestPar exemple, pour un client appelé
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:latestNoteLe second montage lié pointe vers le fichier de configuration créé à l'Étape 2 et remplace la configuration
pmlogger
par défaut. Si vous ne créez pas ce montage lié,pmlogger
utilise le fichier/etc/pcp/pmlogger/control.d/local
par défaut et la consignation à partir des clients échoue, car la configuration par défaut pointe vers un hôte local. Pour plus de détails sur le fichier de configuration, reportez-vous à la Section 3.2.2, « Fichier/etc/pcp/pmlogger/control.d/local
».Pour vérifier si la collecte de journaux fonctionne correctement, exécutez :
#
ls -l pcp-archives/CLIENT/CLIENTPar exemple :
#
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 Mentions légales #
Copyright © 2006–2025 SUSE LLC et contributeurs. Tous droits réservés.
Il est autorisé de copier, distribuer et/ou modifier ce document conformément aux conditions de la licence de documentation libre GNU version 1.2 ou (à votre discrétion) 1.3, avec la section permanente qu'est cette mention de copyright et la licence. Une copie de la version de licence 1.2 est incluse dans la section intitulée « Licence de documentation libre GNU ».
Pour les marques commerciales SUSE, consultez le site Web https://www.suse.com/company/legal/. Toutes les autres marques de fabricants tiers sont la propriété de leur détenteur respectif. Les symboles de marque (®, ™, etc.) désignent des marques commerciales de SUSE et de ses sociétés affiliées. Des astérisques (*) désignent des marques commerciales de fabricants tiers.
Toutes les informations de cet ouvrage ont été regroupées avec le plus grand soin. Cela ne garantit cependant pas sa complète exactitude. Ni SUSE LLC, ni les sociétés affiliées, ni les auteurs, ni les traducteurs ne peuvent être tenus responsables des erreurs possibles ou des conséquences qu'elles peuvent entraîner.