Comment surveiller les registres de conteneurs Docker

Docker ajoute automatiquement la sortie standard du conteneur et les flux d'erreurs (|_+_|/|_+_|) aux sources de journal gérées par le démon Docker. Vous pouvez facilement surveiller les journaux pour comprendre ce qui se passe dans vos conteneurs.

Les journaux contiennent la sortie que vous verriez dans votre terminal lorsque vous vous connecteriez à un conteneur en mode interactif (|_+_|). Les journaux ne seront disponibles que si le processus de premier plan de votre conteneur génère réellement une sortie. Assurez-vous que vos conteneurs enregistrent les erreurs |__+_| afin que les commandes Docker puissent les exposer.

Vous pouvez afficher les registres de conteneurs à tout moment pendant le cycle de vie d'un conteneur. Lorsqu'un conteneur est en cours d'exécution, il peut diffuser des journaux en temps réel. Pour les conteneurs arrêtés, vous pouvez accéder à tous les journaux capturés avant l'arrêt.

Afficher les journaux du conteneur

À voir registre des conteneurs , utilisez le |_+_| J'envoie:

|__+_|

Remplacer |__+_| avec le nom ou l'ID du conteneur que vous souhaitez inspecter. vous pouvez utiliser |__+_| pour obtenir les identifiants et les noms de vos conteneurs.

Le |__+_| La commande imprime toute la sortie du journal du conteneur sur votre terminal. La sortie ne sera pas continue. Si vous souhaitez continuer à diffuser de nouveaux journaux, ajoutez le fichier |__+_| drapeau sur la commande Cela équivaut à utiliser |__+_| avec des fichiers journaux normaux sur votre machine.

Personnalisez ce qui est affiché

Le |__+_| La commande prend en charge plusieurs drapeaux qui vous permettent d'ajuster sa sortie :

    –horodatages- Afficher les horodatages complets au début de chaque ligne de journal. -Jusqu'à |_+_|- Ces flags permettent de récupérer les lignes logguées pendant un certain laps de temps. Passez soit un horodatage complet (|_+_|) soit une heure relativement conviviale (ex |_+_| = il y a 1 heure). -queue- Récupérer un certain nombre de lignes du journal. |__+_| affichera les dix dernières lignes enregistrées par le conteneur. - détails- Il s'agit d'un indicateur spécial qui ajoute des informations supplémentaires à la sortie du journal, en fonction des options transmises au gestionnaire de journal. Nous verrons comment enregistrer les pilotes dans la section suivante. Valeurs typiques indiquées avec |__+_| inclure des étiquettes de conteneur et des variables d'environnement.

Vous pouvez combiner ces indicateurs pour obtenir les enregistrements au format requis. Les |__+_|, |__+_| est |__+_| les drapeaux n'auront aucun effet si vous utilisez |__+_| pour transmettre en continu les données du journal.

Gestionnaire de registre Docker

Docker collecte et stocke les journaux de conteneur à l'aide de l'un des nombreux fichiers dossier de conducteur . Vous pouvez configurer le gestionnaire de journalisation actif par conteneur. Lorsqu'aucun gestionnaire de journalisation n'est spécifié, Docker utilise l'extension |__+_| chauffeur.

Ce contrôleur stocke les journaux de conteneur dans un fichier JSON. Ce format est assez lisible par l'homme et peut être facilement utilisé par des outils tiers. Si vous ne prévoyez pas d'accéder directement aux fichiers journaux, accédez au fichier |__+_| le contrôleur vous fera économiser de l'espace de stockage. Utilisez un format de stockage de journal personnalisé.

Les autres gestionnaires de journalisation intégrés incluent |__+_| (écrire dans le démon |_+_| exécuté sur votre machine), |_+_| (utilisez une instance run |__+_|) et |__+_| (utilisez un démon |_+_|). Il existe également des pilotes pour Amazon CloudWatch, Google Cloud Platform, Event Tracing pour Windows et d'autres solutions de surveillance des journaux.

Docker prend en charge les pilotes de journalisation tiers via des plugins. Vous pouvez trouver les pilotes sur Docker Hub. Pour installer un pilote de plug-in, exécutez |__+_|. Vous pouvez ensuite vous y référer en tant que gestionnaire de journal, comme |_+_|.

Spécifier un gestionnaire de journal

Vous pouvez spécifier le gestionnaire de journalisation d'un conteneur en transmettant le fichier |__+_| marquer un |__+_| :

|__+_|

Vous pouvez modifier globalement le gestionnaire de journalisation par défaut en mettant à jour la configuration du démon Docker. Éditez (ou créez) |__+_|. Sélectionnez le |__+_| clé pour le nom d'un gestionnaire de journaux. Docker utilisera ce contrôleur pour tous les conteneurs créés sans |__+_| dossier. drapeau.

|__+_|

De nombreux pilotes de registre sont livrés avec leurs propres options de configuration. Ceux-ci sont définis à l'aide de |__+_| drapeau de conteneur, ou |__+_| dans |__+_|. Vous trouverez ci-dessous un exemple correspondant à la valeur par défaut. |__+_| chauffeur. Indique à Docker de faire pivoter les fichiers journaux une fois qu'ils dépassent 8 Mo. Seuls cinq fichiers seront conservés à la fois.

|__+_|

|__+_|

|__+_|

|__+_|

chauffeur livraison

Les journaux peuvent être fournis en mode bloquant ou non bloquant. Par défaut, Docker bloque la livraison. Les enregistrements du conteneur seront immédiatement envoyés au chauffeur. Cela garantit la livraison des enregistrements, mais peut affecter les performances. L'application attendra que l'écriture du journal soit terminée. Cela peut entraîner un retard notable si le pilote de journalisation est occupé.

En mode non bloquant, Docker écrit les journaux dans un tampon en mémoire. Le conteneur n'a pas besoin d'attendre que le gestionnaire de journaux termine son écriture. Cela peut améliorer considérablement les performances sur les machines actives avec un stockage lent.

Le compromis avec le mode non bloquant est la possibilité de perdre des enregistrements. Cela peut se produire lorsque les enregistrements sont sortis plus rapidement que le pilote ne peut les traiter. Le tampon en mémoire peut être plein, ce qui entraîne l'effacement des enregistrements mis en cache avant qu'ils n'aient été transmis au contrôleur.

Vous pouvez activer la livraison non bloquante en configurant le |__+_| extension. log, les deux avec |__+_| ou |__+_|. Vous pouvez définir la taille du tampon de journal en mémoire avec l'extension |_+_| option. Définir cette valeur sur une valeur élevée réduit le risque de perdre des journaux, tant que vous disposez de suffisamment de RAM.

|__+_|

Registre des meilleures pratiques

Vos conteneurs doivent fonctionner avec le système de registre Docker dans la mesure du possible. Problème de connexion |__+_| est |__+_| permet à Docker et à d'autres outils de les ajouter de manière standardisée.

La sortie du journal ne doit pas inclure d'horodatage. Les gestionnaires de journalisation de Docker enregistreront automatiquement l'heure à laquelle un événement s'est produit.

Vous pouvez parfois avoir des exigences d'enregistrement complexes qui |__+_| ne peut tout simplement pas satisfaire. Si tel est le cas, vous devrez peut-être implémenter votre propre solution de journalisation dans le conteneur. Vous pouvez archiver les journaux directement dans le système de fichiers à l'aide d'un volume Docker ou en appelant un service d'API externe.

Certaines piles nécessitent un conteneur de journalisation dédié qui se trouve à côté des conteneurs d'application. Le conteneur de journaux, souvent appelé 'side-car', lit les fichiers journaux temporaires que les conteneurs d'applications créent sur un volume Docker partagé. Le side-car gère l'agrégation de ces journaux dans un format pouvant être téléchargé vers un service de surveillance des journaux.

Cette approche peut être utile pour des implémentations plus complexes, bien qu'elle soit plus compliquée à configurer et à mettre à l'échelle. Cela vous laisse généralement sans la commodité prête à l'emploi des commandes de journalisation intégrées de Docker.

Sommaire

Docker dispose de capacités polyvalentes de surveillance des journaux fournies par un ensemble de gestionnaires de journaux. Chaque conteneur peut utiliser un gestionnaire de journaux unique, ce qui vous permet de stocker les journaux dans un format adapté aux exigences de chaque application.

Les journaux incluent tout ce qui est émis par les flux de sortie standard d'un conteneur. vous pouvez utiliser |_+_|, |_+_|, |_+_| ou l'équivalent de votre langage de programmation pour ajouter des lignes au fichier |__+_| production. Les enregistrements sont sauvegardés jusqu'au conteneur avec |__+_| est supprimé.

Qu'est-ce que tu penses?