Comment surveiller l'utilisation des ressources des conteneurs Docker - CloudSavvy IT
Agence web » Actualités du digital » Comment surveiller l’utilisation des ressources des conteneurs Docker –

Comment surveiller l’utilisation des ressources des conteneurs Docker –

Bien que Docker soit beaucoup plus léger que les machines virtuelles traditionnelles, trop de conteneurs peuvent rapidement consommer les ressources de votre hôte. Voici comment vérifier l’utilisation du matériel et surveiller le nombre de processus à l’intérieur de vos conteneurs.

La commande Docker Stats

Le mécanisme intégré de Docker pour afficher la consommation des ressources est docker stats. Cette commande vous donne une vue tabulée de vos conteneurs. Chaque conteneur affiche un flux en direct de ses métriques critiques.

La sortie de la commande inclut la consommation du processeur et une mesure de l’utilisation du réseau et du stockage de chaque conteneur pendant sa durée de vie. La colonne Mémoire affiche l’utilisation de la mémoire en direct ainsi que la limite de mémoire configurée sur le conteneur. Lorsqu’aucune limite n’est définie, vous verrez la quantité de RAM disponible sur votre hôte. La dernière colonne, PIDS, est le nombre de processus démarrés par le conteneur.

Les conteneurs arrêtés sont exclus par défaut. Vous pouvez les ajouter au tableau en passant le -a (--all) à la commande. L’utilisation du processeur et de la mémoire ne sera pas disponible, mais vous pourrez voir les métriques agrégées tout au long de la vie du conteneur, telles que l’activité du réseau.

Vous pouvez afficher les statistiques d’un ou de plusieurs conteneurs de la même manière que d’autres docker Commandes CLI. Transmettez une liste d’ID ou de noms de conteneurs séparés par des espaces. La sortie affichera les métriques des conteneurs spécifiés, en supprimant tout le reste.

docker stats first-container second-container

docker stats prend en charge le formatage personnalisé afin que vous puissiez sélectionner uniquement les colonnes dont vous avez besoin. Le --format flag accepte une chaîne d’espace réservé Go qui vous permet de créer des visualisations de données personnalisées.

Voici comment afficher les noms de conteneurs avec les métriques d’utilisation du processeur et de la mémoire :

docker stats --format "table {{.Name}}t{{.CPUPerc}}t{{.MemUsage}}"

Le table le type de formatage ajoute les en-têtes de colonne à la sortie. Omettez ceci si vous voulez les données brutes sans tabulation. Si vous utilisez régulièrement la même chaîne de formatage, envisagez de l’ajouter en tant qu’alias shell pour en faciliter l’accès.

Obtenir plus d’informations

Des informations plus détaillées sur l’utilisation des ressources d’un conteneur peuvent être obtenues en inspectant son groupe de contrôle (cgroup). Ce mécanisme de noyau suit la consommation d’un groupe de processus, exposant les métriques collectées dans un pseudo-système de fichiers.

Deux versions du système de groupe de contrôle sont disponibles. La v2 n’est prise en charge que sur Docker 20.10 ou version ultérieure avec le noyau Linux v4.15. Les versions plus anciennes utiliseront la v1. La documentation sur la v2 est encore incomplète, donc la v1 peut être plus facile à utiliser.

Pour trouver le groupe de contrôle d’un conteneur, vous devez déterminer quelle version est active et connaître l’ID complet du conteneur. Il doit s’agir de la version complète et non de la forme tronquée indiquée dans docker ps et docker stats production. Vous pouvez le trouver en exécutant docker ps --no-trunc.

Combinez l’ID du conteneur avec le chemin d’accès au répertoire des groupes de contrôle de votre système. Les chemins pour v1 et v2 sont documentés par Docker. Ensuite, vous pouvez inspecter le pseudo-système de fichiers pour trouver des statistiques détaillées sur les ressources. Voici le chemin pour trouver l’utilisation de la mémoire d’un conteneur lors de l’utilisation des groupes de contrôle v1 :

cat /sys/fs/cgroup/memory/docker/<full container id>/memory.stat

Le fichier mémoire fournit des informations détaillées sur la consommation, les limites, la pagination et l’utilisation de l’échange.

Trouver des métriques de ressources avec l’API Docker

L’API Docker est un moyen plus simple d’accéder à ces informations. Ceci est activé par défaut via le socket Unix du démon Docker. Le /containers/{id}/stats le point de terminaison fournit des détails détaillés sur l’utilisation des ressources. Remplacer {id} avec l’identifiant de votre conteneur.

curl --unix-socket /var/run/docker.sock "http://localhost/v1.41/containers/{id}/stats" | jq

Nous utilisons curl dans cet exemple. Il est indiqué d’utiliser le socket du démon Docker via le --unix-socket drapeau. L’API Docker renverra les données au format JSON ; c’est canalisé dans jq pour le rendre plus lisible dans le terminal.

Chaque réponse d’API contient des informations détaillées sur l’utilisation actuelle et passée des ressources du conteneur. Il s’agit de données numériques destinées à être consommées par les machines-outils. Les valeurs sont présentées « brutes » et peuvent ne pas être immédiatement intelligibles sans traitement supplémentaire ou intégration dans un outil de tableau de bord.

Affichage des processus en cours

Une commande distincte, docker top, vous permet de voir la liste des processus en cours d’un conteneur spécifié :

docker top my-container

Il énumère la liste des processus du conteneur au moment de l’exécution de la commande. contrairement à stats, il ne fournit pas de flux de données en direct. Vous pouvez voir l’ID de chaque processus, l’utilisateur qui l’a démarré et la commande en cours d’exécution.

Vous pouvez également obtenir ces informations à partir de l’API. Utilisez la même approche que celle décrite ci-dessus, en remplaçant le /containers/{id}/stats point final pour /containers/{id}/top.

Docker ne fournit pas de moyen intégré de visualiser l’utilisation des ressources par processus. Si vous voulez ces informations, il est préférable de les attacher au conteneur et d’installer top ou alors htop. Ces outils vous donneront une vue beaucoup plus approfondie de l’activité du conteneur.

docker exec -it my-container sh

# substitute your package manager's commands
apt update && apt install htop -y

htop

Résumé

Le démon Docker collecte et expose des statistiques de consommation de ressources en temps réel et historiques sur vos conteneurs. Vous pouvez accéder à une vue graphique de base des données en utilisant docker stats mais pour des lectures plus avancées, l’API Docker ou l’inspection manuelle du groupe de contrôle est nécessaire.

Vous pouvez également répertorier les processus en cours d’exécution d’un conteneur, mais le docker top La commande ne fournit aucune indication sur les métriques de ressources. Cela signifie qu’il est d’une utilité limitée lors de l’inspection Pourquoi un conteneur contient trop de CPU ou de mémoire. Vous devrez vous y attacher manuellement et inspecter de l’intérieur.

Les outils de Docker ciblent la surveillance et l’observabilité générales, et non l’inspection détaillée pour faciliter la résolution des problèmes. La plupart du temps, ils sont parfaitement adéquats mais une bonne connaissance des outils de supervision Linux plus larges qui fonctionnent à l’intérieur les conteneurs seront plus efficaces pour résoudre les problèmes.

★★★★★