GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Surveillance des conteneurs Docker :avantages, bonnes pratiques et outils indispensables

Il y a huit ans, les conteneurs étaient une technologie connue, mais peu adoptée par le public. Ensuite, Solomon Hykes a créé Docker, une technologie de conteneurs, rendant les conteneurs beaucoup plus faciles à utiliser. Aujourd'hui, les conteneurs dominent le monde informatique. Gartner prédit que 70 % des entreprises exécuteront des applications conteneurisées d'ici 2023.

Pourquoi? Les entreprises réalisent les avantages d'une configuration plus facile, d'un déploiement plus rapide et de la possibilité d'exécuter davantage de charges de travail sur le même matériel avec des applications conteneurisées.

Pour tirer le meilleur parti possible des conteneurs, la surveillance des conteneurs Docker est indispensable. Sans surveillance des conteneurs, vous voyagez dans le noir. Vous ne pouvez littéralement pas voir à quel point vos conteneurs fonctionnent, ce qu'ils font ou à quel point ils font leur travail.

De plus, sans la surveillance des conteneurs Docker, vous ne pouvez pas savoir comment fonctionnent les microservices et les applications construits sur des conteneurs. La surveillance des conteneurs vous permet de savoir ce qui se passe avec les conteneurs eux-mêmes et avec vos programmes plus importants destinés aux utilisateurs.

Surveillance des conteneurs Docker :les bases

L'une des principales raisons pour lesquelles les conteneurs sont populaires est qu'ils se prêtent à l'intégration continue/déploiement continu (CI/CD). Il s'agit d'une méthodologie DevOps conçue pour permettre aux programmeurs d'intégrer leur code dans un référentiel partagé tôt et souvent. Une fois sur place, les programmes conteneurisés sont déployés rapidement et efficacement.

Docker permet également aux développeurs d'emballer, d'expédier et d'exécuter n'importe quelle application en tant que conteneur léger, portable et autonome, qui peut s'exécuter pratiquement n'importe où. Les conteneurs vous offrent une portabilité instantanée des applications.

Les conteneurs le font en permettant aux développeurs d'isoler le code dans un seul conteneur, ce qui rend plus efficace la modification et la mise à jour du programme. Il permet aux entreprises de répartir les grands projets de développement entre plusieurs petites équipes Agile à l'aide de pipelines CI/CD pour automatiser la livraison de code nouveau et mis à jour via des conteneurs.

Enfin, et peut-être le point le plus important pour les entreprises, les conteneurs permettent aux entreprises de maximiser les ressources matérielles et cloud. Comme James Bottomley, ancien directeur technique de la virtualisation de serveur de Parallels et développeur de noyau Linux de premier plan, l'a expliqué :« Les hyperviseurs VM, tels que Hyper-V, KVM et Xen, sont tous basés sur l'émulation de matériel virtuel. Cela signifie qu'ils sont gros en termes de configuration système."

Les conteneurs, cependant, utilisent des systèmes d'exploitation partagés, ils sont donc beaucoup plus légers que les hyperviseurs en termes de ressources système. Au lieu de virtualiser le matériel, les conteneurs reposent sur une seule instance Linux. Cela signifie que vous pouvez "laisser derrière vous les 99,9 % de VM inutiles, vous laissant avec une petite capsule soignée contenant votre application", comme l'a dit Bottomley. En d'autres termes, avec un système de conteneurs bien réglé, vous pouvez avoir jusqu'à quatre à six conteneurs en cours d'exécution sur un système qui, dans le passé, ne pouvait exécuter qu'une seule instance.

Aujourd'hui, il existe de nombreux types de plates-formes de conteneurs. Alors que Docker est le plus connu, il y a aussi LXC, runC, containerrd et podman. Ils remplissent tous des fonctions similaires et peuvent en grande partie être gérés avec les mêmes outils.

Qu'est-ce que Docker ?

Alors, qu'est-ce que Docker précisément ? Docker est construit sur LXC. Comme avec tout autre conteneur, en ce qui concerne tout programme exécuté sur Docker, il possède son propre système de fichiers, son stockage, son processeur et sa RAM. La principale différence entre les conteneurs et les machines virtuelles est que, tandis que l'hyperviseur résume un appareil entier, les conteneurs ne font qu'abstraire le noyau du système d'exploitation. Tous les avantages de Docker proviennent uniquement de ce mécanisme simple.

Pourquoi a-t-il réussi alors que ses prédécesseurs tels que FreeBSD Jails, Oracle Solaris Zones et OpenVZ ont permis aux conteneurs de fonctionner correctement et en toute sécurité, mais n'ont eu que peu de succès sur le marché ? Dans une certaine mesure, les conteneurs étaient efficaces mais invisibles. Par exemple, Google a utilisé son propre programme de conteneurs open source lmctfy (Let Me Contain That For You) pendant plus d'une décennie. Chaque fois que vous utilisiez la fonctionnalité Google, par exemple, la recherche, Gmail, Google Docs, elle s'exécutait dans un conteneur invisible.

Ce que Docker apporte à la table, c'est qu'il rend les conteneurs plus sûrs et plus efficaces à déployer et à utiliser que les approches précédentes. De plus, parce que le partenariat de Docker avec les autres puissances de conteneurs, notamment Canonical, Google, Red Hat et Parallels, sur son composant clé open source libcontainer, apporte une normalisation indispensable aux conteneurs.

Docker fait don du format de conteneur libcontainers et de son environnement d'exécution, ainsi que des spécifications associées, au projet Open Container de la Fondation Linux. Plus précisément, cela inclut tout le contenu du projet libcontainer, y compris nsinit, et toutes les modifications nécessaires pour le faire fonctionner indépendamment de Docker.

Docker continue de travailler sur d'autres efforts de normalisation des conteneurs. Par exemple, Docker a fait don de containerd, son environnement d'exécution de conteneur open source, à la Cloud Native Computing Foundation (CNCF). La standardisation joue un rôle majeur dans le succès de Docker.

Contrairement aux autres technologies de conteneurs, Docker prend également en charge les réseaux définis par logiciel (SDN). Cela permet aux équipes DevOps de définir des réseaux pour les conteneurs, sans se soucier des commutateurs matériels. Au lieu de cela, ils configurent des topologies de réseau complexes et définissent des réseaux via des fichiers de configuration.

Simultanément, SDN et Docker permettent d'exploiter des microservices. Ensemble, ils rendent plus efficace la création d'applications à partir de services faiblement couplés fonctionnant ensemble via des protocoles bien connus tels que HTTP et TCP.

Enfin, le succès de Docker doit une grande partie au simple fait d'être la bonne technologie ouverte au bon moment pour aider les utilisateurs à tirer parti de la révolution du cloud computing.

Qu'est-ce que la surveillance des conteneurs ?

Un scénario courant pour les entreprises est qu'elles utilisent Docker et ont des centaines à des centaines de milliers de conteneurs exécutant des applications vitales pour votre entreprise. Pour les orchestrer, il y a de fortes chances qu'ils utilisent Kubernetes. Comme le dit le CTO de la CNCF, Chris Aniszczyk, il y a un vide croissant dans la compréhension que Kubernetes et les conteneurs sont essentiellement un forfait. Il existe d'autres programmes d'orchestration de conteneurs, mais Kubernetes est le leader écrasant du marché. Parmi ceux-ci, Datadog rapporte que près de 90 % des utilisateurs de Kubernetes tirent parti des services gérés dans le cloud, contre près de 70 % en 2020.

C'est génial dans la mesure où ça va. Mais Kubernetes contrôle, déploie et fait évoluer les conteneurs. Il ne les surveille pas.

La surveillance est compliquée. Les conteneurs sont éphémères. Ils tournent de haut en bas en quelques minutes. Le conteneur Kubernetes moyen dure une seule journée. Les outils que vous utilisez pour surveiller les applications traditionnelles exécutées sur des serveurs virtuels ou des serveurs bare metal ne sont pas à la hauteur. Au moment où votre programme de surveillance appelle un rapport, le conteneur peut très bien avoir disparu de la vue, emportant avec lui tous les journaux qu'il contient.

Les avantages de la surveillance des conteneurs

Bien que complexe, la surveillance des conteneurs est vitale. Comme le dit l'administrateur système Gary Williams, "Vous ne pouvez pas avoir trop de surveillance." Gary a raison.

Les avantages de la surveillance des conteneurs incluent :

  • Identifier les problèmes de manière proactive pour éviter les pannes du système
  • Surveillance des données de séries chronologiques pour améliorer le fonctionnement des applications
  • Optimiser l'allocation des ressources.
  • Identifier les problèmes le plus tôt possible pour les résoudre rapidement

La surveillance des conteneurs est également vitale, car les applications basées sur des conteneurs sont constamment attaquées par des ransomwares et des attaques de crypto-monnaie. Bref, tant pour la sécurité que pour les performances, la surveillance de vos conteneurs est un must. Ce sont les mêmes raisons pour lesquelles vous surveillez tous vos systèmes, et les conteneurs ne sont pas différents.

Les programmes de surveillance sont confrontés à d'autres défis pour collecter des données d'observabilité à partir de conteneurs. Il existe plusieurs méthodes de collecte de données. Ils incluent :

  • Déploiement d'un agent de surveillance dédié en tant qu'application hôte ou conteneur
  • Déploiement d'un routeur de journaux pour collecter automatiquement les journaux générés par les conteneurs
  • Utilisation du pilote de journalisation Docker pour stocker les journaux de conteneur sur l'hôte.
  • Collecter des métriques via les statistiques Docker, le pipeline de métriques Kubernetes ou une API similaire

La surveillance des conteneurs couvre les métriques de base telles que l'utilisation de la mémoire, l'utilisation du processeur, la limite du processeur et la limite de la mémoire. Vos programmes de surveillance doivent également offrir des journaux de diffusion en temps réel, un traçage et une observabilité.

À un niveau supérieur, en plus de collecter et de centraliser les données de surveillance des conteneurs et de leurs hôtes, vous devez collecter et analyser les données de l'ensemble de l'application, plutôt que des conteneurs individuels.

Comme l'a dit Minh Dao de LogDNA, « imaginez que vous avez une application Web à trois niveaux, chaque niveau fonctionnant comme un conteneur séparé. Imaginez maintenant que votre niveau backend commence soudainement à générer des erreurs et que les conteneurs se bloquent en conséquence. L'extraction de journaux et de métriques à partir de conteneurs individuels facilitera l'analyse des causes profondes, mais cela ne vous aidera pas à voir l'erreur dans le contexte de l'ensemble de l'application. Le problème peut être spécifique au conteneur ou indiquer un problème plus large, à l'échelle de l'application. »

Mettez tout cela ensemble et il n'y a aucun doute à ce sujet. Vous devez surveiller vos conteneurs.

Les cinq meilleurs outils de surveillance des conteneurs

Bon nombre des meilleurs programmes de surveillance des conteneurs sont des programmes open source. Linode fournit les bases pour démarrer avec la pile Elasticsearch, Logstash et Kibana (ELK) en utilisant Filebeat et Metricbeat avec Kibana et l'analyse de séries chronologiques avec Graphite et un tableau de bord Grafana. Avec un peu d'effort, vous pouvez créer votre propre système de surveillance des conteneurs.

Les programmes de la liste ci-dessous sont classés par ordre alphabétique, et non dans l'ordre du meilleur au pire. C'est parce que vous ne pouvez pas les classer équitablement. Ils ont tous leurs propres forces et faiblesses et mesurent souvent des paramètres différents. Il y a donc de fortes chances que si vous voulez vraiment garder un œil sur vos conteneurs, vous devez utiliser plusieurs de ces programmes.

Conseiller en conteneurs (cAdvisor)

Google’sContainer Advisor (cAdvisor) est un programme de surveillance open source. Il s'exécute comme un démon qui collecte, agrège et exporte les données d'utilisation des ressources et de performances des conteneurs ciblés. Il suit les paramètres d'isolation des ressources de chaque conteneur, l'utilisation historique des ressources, les histogrammes de l'utilisation complète des ressources historiques et les statistiques du réseau. Ces données sont exportées par conteneur et à l'échelle de la machine.

Le programme est livré avec une prise en charge native des conteneurs Docker et est conçu pour prendre en charge à peu près tous les autres types de conteneurs prêts à l'emploi. Il expose également les métriques Prometheus. En d'autres termes, cAdvisor collecte les données, tandis que Prometheus les récupère. L'abstraction des conteneurs de CAdvisor est basée sur celle de lmctfy, de sorte que les conteneurs sont intrinsèquement imbriqués hiérarchiquement.

Vous pouvez installer les builds cAdvisor en tant qu'images sur vos hôtes Docker. Le programme fournit également à la fois une interface utilisateur Web (UI) et une interface de programmation d'application REST (API). Grâce à cela, vous pouvez à la fois surveiller directement vos conteneurs Docker et intégrer des métriques à une application externe via des points de terminaison de service Web.

Datadog

Datadog est recommandé par Docker pour une bonne raison. Il fournit de nombreux outils de surveillance qui suivent les métriques liées aux conteneurs, à l'infrastructure et aux applications.

Son interface utilisateur et son tableau de bord sont également très pratiques. Grâce à ses données en temps réel, vous pouvez configurer diverses visualisations, notamment des séries chronologiques, des valeurs de requête, des listes supérieures, des tableaux, des cartes thermiques, des arborescences, des camemberts, des cartes d'hôtes, des flux de journaux, des listes, des valeurs d'alerte, des cartes de service, etc. . Il corrèle automatiquement les données et visualise les comportements inhabituels.

Le cœur de Datadog est propriétaire, mais l'agent Datadog et tous les autres programmes qui s'exécutent sur vos machines et vos clouds sont open-source.

La surveillance est disponible via les requêtes Trace, qui alimentent ses visualisations graphiques et ses alertes. Le programme collecte des données concernant les services, les applications et les plates-formes via des données de journal détaillées.

Le programme est un écosystème de surveillance. Outre vos conteneurs, il surveille à peu près tout. Il le fait en partie en prenant en charge la plupart des programmes et protocoles de télémétrie tels que StatsD, OpenMetrics et OpenTelemetry.

Bien qu'il soit vendu principalement en tant que logiciel en tant que service (SaaS), il peut également être déployé sur site.

Elasticsearch et Kibana

Elasticsearch est un moteur de recherche Java open source dérivé de la bibliothèque Apache Lucene. Il fournit un moteur de recherche en texte intégral distribué et multi-locataire avec une interface Web HTTP et des documents JSON sans schéma. C'est le cœur de la pile ELK.

Son programme partenaire, Kibana, est une interface utilisateur gratuite et ouverte pour visualiser vos données Elasticsearch et naviguer dans la pile ELK. Vous pouvez suivre les chargements de requêtes pour voir comment les requêtes transitent par vos applications. Kibana est livré avec les classiques habituels du tableau de bord de l'interface utilisateur :histogrammes, graphiques linéaires, camemberts, sunbursts, etc. Et, bien sûr, vous pouvez effectuer une recherche dans tous vos documents.

À des fins de surveillance des conteneurs, vous utilisez Filebeat et Metricbeat pour capturer automatiquement les données du conteneur. Filebeat trouve automatiquement les conteneurs et stocke leurs journaux dans Elasticsearch. Vous déployez automatiquement Metricbeat dans vos conteneurs. Une fois sur place, il collecte les statistiques d'utilisation du processeur, de mémoire, de système de fichiers, d'E/S disque et d'E/S réseau au niveau du système. Ses modules, écrits en Go, peuvent également garder un œil sur les programmes dans les conteneurs tels que Apache, NGINX, MongoDB, MySQL, PostgreSQL et Prometheus. Toutes ces données sont ensuite accessibles via Kibana.

C'est très souple. Vous devez passer un temps considérable à apprendre à le configurer et à l'utiliser, mais cela en vaut la peine.

Prométhée et Grafana

Comme Elasticsearch et Kibana, Prometheus et Grafana sont des programmes open source que vous pouvez utiliser pour créer vos propres systèmes de surveillance. C'est complexe, mais le travail en vaut la peine.

Prometheus stocke les données sous forme de séries chronologiques. Dans les séries chronologiques, les données sont conservées sous forme de flux de valeurs horodatées pour la même statistique et le même ensemble de dimensions étiquetées.

Prometheus, un projet CNCF, extrait les métriques directement des conteneurs ou en utilisant une passerelle push. Les échantillons extraits sont stockés localement et des règles sont appliquées à ses données pour agréger et générer de nouvelles séries chronologiques ou générer des alertes définies par l'utilisateur.

L'objectif principal de Prometheus est la fiabilité plutôt que la précision. Pour ce faire, le programme rend chaque serveur Prometheus autonome avec un stockage de base de données de séries chronologiques locales pour éviter de dépendre d'un service distant. Cette conception fait de Prometheus un outil idéal sur lequel s'appuyer pour identifier rapidement les problèmes et obtenir des commentaires en temps réel. Ainsi, il est généralement utilisé dans des systèmes hautement dynamiques tels que les microservices basés sur des conteneurs exécutés sur un cloud.

Prometheus possède son propre tableau de bord Web, ou vous pouvez en extraire des données à l'aide de son API. Grafana est utilisé comme interface par défaut.

Sysdig

Sysdig est une plate-forme commerciale de surveillance du cloud qui fonctionne main dans la main avec Prometheus. Cela vous permet d'accéder aux données de séries chronologiques sans avoir à créer votre propre système de surveillance Prometheus.

Sysdig suit les données Docker directement à partir des métadonnées du conteneur pour permettre la sécurité et la surveillance. Docker recommande Sysdig comme solution de surveillance pour les applications conteneurisées.

Sysdig intègre également des programmes de surveillance Linux dans une interface unique et cohérente. Le programme le fait au niveau du système d'exploitation en s'intégrant au noyau Linux. Il capture les appels système et d'autres événements du système d'exploitation.

Sa combinaison unique de Prometheus et d'informations de bas niveau sur le système d'exploitation en fait un outil de surveillance puissant.

Conclusion

La surveillance des conteneurs est un must, pas une subtilité. Sans surveillance, faire rouler des conteneurs revient à conduire sur une autoroute sombre et sinueuse sans phares.

Le programme de surveillance que vous choisissez dépend de votre cas d'utilisation, de votre budget et des ressources informatiques disponibles dans votre organisation. Vous pouvez créer vos propres systèmes de surveillance de conteneurs à l'aide des nombreux programmes open source disponibles ou opter pour un package commercial. Quel que soit le programme de surveillance que vous décidez d'utiliser, il s'agit d'un composant essentiel à la santé et à la stabilité de vos applications Web conteneurisées.


Docker
  1. Comment exporter et importer des conteneurs Docker

  2. différence entre podman et docker.

  3. Top 25 des meilleurs outils de surveillance et de débogage des performances Linux

  4. Comment sauvegarder et restaurer des conteneurs Docker

  5. Comment mettre en pause et reprendre les conteneurs Docker

Comment utiliser Docker Cp pour copier des fichiers entre l'hôte et les conteneurs

Comment déployer et gérer un conteneur Docker MongoDB

Comment exécuter des conteneurs Docker

Comment nommer ou renommer les conteneurs Docker

ctop - Interface de type Top pour la surveillance des conteneurs Docker

Développement sur Docker avec les nouveaux outils de conteneur Visual Studio améliorés (et WSL2)