Comment surveiller l'utilisation des ressources des conteneurs Docker

0
314

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

La commande Docker Stats

Docker&# Le mécanisme intégré de 8217 pour afficher la consommation de ressources est les statistiques de docker. 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 comprend 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 à la table en passant l'indicateur -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 de chaque et plusieurs conteneurs de la même manière que les autres commandes CLI Docker courantes. 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 Advertisement

docker stats prend en charge le formatage personnalisé afin que vous puissiez sélectionner uniquement les colonnes dont vous avez besoin. L'indicateur –format 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 conteneur avec les métriques d'utilisation du processeur et de la mémoire :

docker stats — format “table {{.Name}}t{{.CPUPerc}}t{{.MemUsage}}”

Le type de formatage du tableau 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 faciliter l'accès.

Obtenir plus d'informations

Plus d'informations détaillées sur l'utilisation des ressources d'un conteneur peut être acquise en inspectant son groupe de contrôle (cgroup). Ce mécanisme du 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 savoir que le conteneur est plein IDENTIFIANT. Il doit s'agir de la version complète, et non de la forme tronquée affichée dans docker ps et docker stats output. Vous pouvez le trouver en exécutant docker ps –no-trunc.

Publicité

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 de cgroups v1 :

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

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

Rechercher des métriques de ressources avec l'API Docker< /h2>

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 point de terminaison /containers/{id}/stats fournit des détails détaillés sur l'utilisation des ressources. Remplacez {id} par l'ID 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 drapeau –unix-socket. L'API Docker renverra les données au format JSON ; ceci est canalisé dans jq pour le rendre plus lisible dans le terminal.

Chaque réponse 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 “brute” et peut ne pas être immédiatement intelligible 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 actuels d'un conteneur spécifié :

docker top my-container Advertisement

Elle énumère le conteneur&# 8217;s liste des processus au moment de l'exécution de la commande. Contrairement aux statistiques, il ne fournit pas de flux de données en direct. Vous pouvez voir chaque processus’ ID, 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 point de terminaison /containers/{id}/stats par /containers/{id}/top.

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

docker exec -it my-container sh # remplace les commandes de votre gestionnaire de paquets 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 à l'aide des statistiques Docker, 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 La commande docker top ne fournit aucune indication sur les métriques de ressources. Cela signifie qu'il est d'une utilité limitée lors de l'inspection des raisons pour lesquelles un conteneur contient trop de CPU ou de mémoire. Vous devrez vous y connecter manuellement et inspecter de l'intérieur.

Les outils 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 surveillance Linux plus larges qui fonctionnent à l'intérieur des conteneurs sera plus efficace pour résoudre les problèmes.