Accéder au contenuNavigation Accéder à la page : page précédente [raccourci clavier p] / page suivante [raccourci clavier n]
documentation.suse.com / Analyse des métriques de performances à l'aide de la suite d'outils d'analyse Performance Co-Pilot

Analyse des métriques de performances à l'aide de la suite d'outils d'analyse Performance Co-Pilot

Date de publication : 26 fév 2025
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 à Conteneurs Podman, cliquez sur Obtenir une nouvelle image, puis recherchez 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 par systemd 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 :

Autres options
-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 daemon pmproxy é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 :

  1. 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.service

    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.

  2. 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. Si pmdaroot 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 daemon pmcd 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 est readonly. Vous pouvez définir le mode sur readwrite, 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 commande pmlogger.

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 configuration pmlogger provient de pmlogconf. Le comportement par défaut consiste à régénérer les fichiers de configuration et à vérifier les modifications à chaque démarrage de pmlogger.

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
Note
Note : les valeurs par défaut pointent vers l'hôte local

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

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 pmloggersont 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.

  1. 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:latest
  2. Sur le système de surveillance, créez un fichier de configuration pmlogger pour chaque client control.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.

  3. 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/CLIENT

    Par exemple, pour slemicro_1 :

    # mkdir /root/pcp-archives/slemicro_1
  4. Sur 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:latest

    Par 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:latest
    Note
    Note

    Le 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 ».

  5. Pour vérifier si la collecte de journaux fonctionne correctement, exécutez :

    # ls -l pcp-archives/CLIENT/CLIENT

    Par 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