Checkmk
to checkmk.com
Important

This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved.

1. Introduction

Logo of the Docker, Inc. company.

À l’échelle mondiale, Docker est devenu l’un des logiciels les plus utilisés pour la virtualisation de conteneurs. Si la supervision de bout en bout et transparente des conteneurs est indispensable, elle s’avère également complexe en raison de l’architecture dynamique et multicouche de ces conteneurs.

Checkmk peut surveiller les conteneurs Docker directement via l’agent Linux. Mais Checkmk ne surveille pas seulement l’état général du daemon ou du conteneur, mais également le conteneur lui-même. Une liste complète des éléments pouvant actuellement être surveillés est disponible dans le Catalogue des plugins de supervision.

Outre les informations d’état et d’inventaire que Checkmk peut déterminer via le nœud (terme utilisé dans le jargon Docker pour désigner « l’hôte sur lequel les conteneurs s’exécutent »), Checkmk peut également déterminer des informations d’état détaillées pour les conteneurs. Pour cela, chaque conteneur doit être ajouté en tant qu’hôte distinct dans Checkmk si l’on souhaite le surveiller. Ses données seront transférées du nœud vers cet hôte.

Dans les éditions commerciales, les hôtes de conteneurs peuvent être automatiquement créés ou supprimés à l’aide de la gestion dynamique des hôtes.

2. Configuration

2.1. Installation de l'agent et du plugin

Pour pouvoir surveiller un Docker node avec Checkmk, celui-ci doit d'abord être surveillé à l'aide de l'agent Linux standard. Cela vous permettra d'obtenir une supervision de base du système hôte, mais vous ne disposerez d'aucune information concernant le Docker daemon ou le conteneur.

Vous aurez besoin du plugin d'agent « mk_docker.py », que vous trouverez ici : Setup > Agents > Other operating systems > Plugins

Installez le plugin dans le dossier des plugins de l'agent (généralement /usr/lib/check_mk_agent/plugins). Pour plus d'informations sur l'installation d'un plugin d'agent, consultez l'article consacré à l'agent Linux.

root@linux# install -m 0755 mk_docker.py /usr/lib/check_mk_agent/plugins
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Dans les éditions commerciales, vous pouvez également effectuer cette opération à l'aide de la boulangerie d’agents, qui est fourni avec le jeu de règles approprié pour la supervision de Docker : Docker node and containers

Pour fonctionner correctement, le module Python docker est requis. Vous pouvez facilement vérifier la présence du module à l'aide de l'instruction python sur la ligne de commande :

root@linux# python3
Python 3.12.3 (main, Jun 18 2025, 17:59:45) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import docker
>>> docker.version
'5.0.3'
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Si nécessaire, installez le module manquant. L'utilisation de l'outil de gestionnaire de packs de votre distribution Linux est la méthode d'installation recommandée. L'installation à l'aide de l'instruction pip3 comporte un risque d'endommagement des modules Python fournis par la distribution.

Tip

Dans certains cas, vous devez recourir à un environnement Python virtuel (venv) pour installer une version suffisamment récente du module Python docker. Si cela s'avère nécessaire, vous pouvez utiliser le fichier de configuration $MK_CONFDIR/python_path.cfg pour spécifier le chemin d'accès vers l'interpréteur Python requis en tant que variable PYTHON3.

Si vous effectuez maintenant la reconnaissance du service dans Checkmk et activez les modifications, vous devriez trouver de nouveaux services qui concernent le Docker node lui-même :

View of the Docker services currently having been found in Checkmk.

2.2. Réglage fin du plugin

Vous pouvez configurer différents paramètres du plugin. Par exemple, vous pouvez économiser des ressources en désactivant les sections inutiles ou, si nécessaire, en personnalisant le point de terminaison du moteur API Docker (la valeur par défaut est le socket Unix unix://var/run/docker.sock).

Créez le fichier de configuration /etc/check_mk/docker.cfg sur l'ordinateur hôte Docker. Un modèle accompagné d'explications détaillées est disponible dans le répertoire Checkmk ~/share/check_mk/agents/cfg_examples/docker.cfg.

Dans les éditions commerciales, vous pouvez facilement configurer tous les paramètres à l'aide de la boulangerie d’agents.

2.3. Supervision des conteneurs

Création des ordinateurs hôtes de conteneurs

Bien sûr, l’aspect intéressant réside dans la supervision des conteneurs Docker. Celle-ci sera mise en œuvre automatiquement lors de l’installation des plugins ; toutefois, les services ne seront pas attribués au Docker node, mais Checkmk suppose un seul ordinateur hôte par conteneur Docker.

Le mécanisme utilisé ici s’appelle « piggyback » : Le plugin d’agent ou l’agent spécial transporte les données d’autres hôtes — « piggybackées », pour ainsi dire — en plus de ses propres données. Checkmk place ces données dans le répertoire ~/tmp/check_mk/piggyback. Il vous suffit, lors de la Configuration, de créer des hôtes avec les noms corrects, et les services leur seront alors automatiquement attribués.

Dans les éditions commerciales, vous pouvez faire créer ces ordinateurs hôtes automatiquement. Utilisez le type de connexion « Piggyback data » dans la gestion dynamique des hôtes. Veuillez noter ce qui suit si vous créez les ordinateurs hôtes manuellement :

  • Le nom de domaine doit correspondre exactement au répertoire créé dans ~/tmp/check_mk/piggyback. Par défaut, il s'agit de l'identifiant court à 12 caractères du conteneur (par exemple, 2ed23056480f).

  • Si les conteneurs ne disposent pas de leurs propres adresses IP (ce qui est généralement le cas), définissez Network address > Famille d'adresses IP# sur No IP.

  • Pour « Monitoring agents », veillez à définir « Checkmk agent / API integrations » sur « No API integrations, no Checkmk agent ».

  • Vous pouvez définir le champ « Parents » dans la section « Basic settings » sur le nom de domaine du Docker node.

  • Il est également important que le Docker node et ses conteneurs soient supervisés à partir du même site Checkmk.

Une fois les hôtes de conteneurs créés, et après avoir effectué une reconnaissance du service, de nouveaux services apparaissent sur ceux-ci.

Si un agent Linux est installé dans le conteneur, il sera exécuté automatiquement. Cependant, comme de nombreux services surveillés par l’agent au sein des conteneurs affichent en réalité des informations provenant du nœud (par exemple, la charge CPU, la température et de nombreux autres paramètres du système d’exploitation), ceux-ci ont été supprimés.

Noms alternatifs pour les ordinateurs hôtes de conteneurs

Par défaut — comme mentionné ci-dessus — l’identifiant court à 12 caractères du conteneur est utilisé comme nom pour l’hôte du conteneur. Il est possible de configurer cela différemment. Pour ce faire, dans le fichier de configuration docker.cfg (voir Réglage fin du plugin), définissez l’option container_id sur long afin d’utiliser l’identifiant complet du conteneur comme nom, ou sur name afin d’utiliser le nom du conteneur.

Les utilisateurs des éditions commerciales peuvent configurer cela dans la boulangerie d’agents à l’aide de la règle Docker node and containers, option Host name used for containers.

Rule for selecting the host names of the containers.

À propos : la règle « Host name translation for piggybacked hosts » vous permet de définir des règles très flexibles pour renommer les noms de domaine contenus dans les données ferroutées. Cette méthode vous permet également de résoudre le problème lié à la présence de conteneurs portant le même nom sur deux Docker nodes différents, par exemple.

Rule for renaming the host names contained in the piggyback data.

Consultez l'article « Le mécanisme de ferroutage » pour découvrir d'autres options et une description plus détaillée de cette fonction.

Supervision de l'état de l'ordinateur hôte

Étant donné que l’état de lordinateur hôte d’un conteneur ne peut pas vraiment être vérifié à l’aide de paquets TCP ou ICMP, il doit être déterminé d’une autre manière. Le service Docker container status facilite cette tâche : il checke en tout cas si le conteneur est en cours d’exécution et peut donc être utilisé comme un outil sûr pour détecter l’état de l’ordinateur hôte. Définissez une règle dans le jeu de règles « Host check command » à cette fin, et configurez l’option « Use the status of the service…​ » sur le service mentionné. N’oubliez pas de définir les conditions de manière à ce que seuls les conteneurs soient concernés. Dans notre exemple, tous les conteneurs se trouvent dans un dossier portant le même nom :

Rule for the command to check the host state of the containers.

Exécution de l'agent directement dans le conteneur

Pour surveiller les détails au sein même du conteneur (par exemple, les processus en cours d’exécution, les bases de données, les fichiers journaux, etc.), il est nécessaire que l’agent Checkmk soit installé et exécuté dans le conteneur lui-même. Cela vaut tout particulièrement pour le déploiement des plugins d’agent. Les trois plugins mem, cpu et diskstat (E/S disque) fonctionnent toutefois sans agent dans le conteneur et sont analysés par l’agent Checkmk sur le nœud lui-même.

En particulier pour les images Docker que vous avez créées vous-même, vous souhaiterez peut-être déployer l’agent lui-même dans le conteneur. Dans ce cas, les données ne sont plus analysées — comme décrit ci-dessus — par l’agent du Docker node. À la place, un agent distinct s’exécute dans chaque conteneur. L’appel de cet agent sera toutefois toujours intégré dans une procédure de ferroutage via le Docker node.

Toutefois, l’agent installé dans le conteneur ne fonctionne que si toutes les instructions nécessaires sont également présentes dans le conteneur. En particulier avec les conteneurs minimalistes basés sur Alpine Linux, il est tout à fait possible que des éléments fondamentaux tels que Bash ne soient pas présents. Dans une telle situation, vous devriez surveiller le conteneur à partir du Docker node.

L'utilisation du jeu de règles « Host check command » ne sera dans ce cas nécessaire que si le conteneur n'est pas joignable par ping — mais elle fonctionnera sinon exactement comme décrit ci-dessus.

3. Options de diagnostic

3.1. Diagnostic d'un Docker node

Si la configuration échoue, plusieurs options s’offrent à vous pour analyser le problème. Le cas échéant, vérifiez qu’un agent Checkmk de version 1.5.0 ou ultérieure est installé sur l’ordinateur hôte.

Si la version de l'agent sur l'ordinateur hôte est appropriée, vérifiez ensuite si les données sont présentes dans la sortie de l'agent. Vous pouvez télécharger la sortie sous forme de fichier texte : dans une vue d'ordinateur hôte de la supervision via l'entrée de menu d'action « Download agent output » :

Action menu of the host in monitoring with the entry for downloading the agent output.

Vous pouvez également effectuer une recherche directement dans le cache de l'agent. Pour plus de clarté, la sortie dans l'exemple suivant est réduite à la sortie pour le nœud :

OMD[mysite]:~$ strings tmp/check_mk/cache/mydockerhost | grep "<<<docker"
<<<docker_node_info>>>
<<<docker_node_disk_usage:sep(44)>>>
<<<docker_node_images>>>
<<<docker_node_network:sep(0)>>>
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Si les sections ne s’affichent pas ici, l’installation de Docker ne sera pas reconnue. L’instruction suivante est utilisée pour le service « Docker node info ». Cette instruction doit être exécutable sous cette forme exacte sur l’ordinateur hôte. Si nécessaire, vérifiez votre installation de Docker :

root@linux# docker info 2>&1
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

3.2. Diagnostic pour un ordinateur hôte de conteneur

Si l'hôte de conteneur ne reçoit aucune donnée ou si aucun service n'est détecté, checkez d'abord si des données ferroutées sont disponibles pour cet hôte. Le nom de l'hôte doit être identique à l'ID du conteneur. Vous pouvez également effectuer une attribution manuelle à l'aide du jeu de règles Host name translation for piggybacked hosts. Dans ce cas, seule l'option Explicit hostname mapping est toutefois appropriée :

Rule for translating host names of hosts with piggyback data.

Pour vérifier si des données ferroutées seront créées pour un identifiant, vous pouvez checker le répertoire suivant :

OMD[mysite]:~$ ls -l tmp/check_mk/piggyback/
76adfc5a7794  f0bced2c8c96  bf9b3b853834
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

4. Étiquettes d'hôte

Dans Checkmk, il existe ce que l'on appelle des étiquettes d'hôte. La supervision Docker attribue notamment automatiquement les étiquettes suivantes :

  • pour le Docker node, l'étiquette « cmk/docker_object:node »,

  • pour chacun des conteneurs, les étiquettes « cmk/docker_image », « cmk/docker_image_name », « cmk/docker_image_version » et « cmk/docker_object ».

Vous pouvez utiliser ces étiquettes, par exemple dans les conditions de vos règles, pour faire dépendre votre configuration de supervision de l'image utilisée dans un conteneur.

5. Fichiers et répertoires

Chemin d'accès au fichier Fonction

~/tmp/check_mk/piggyback/

Checkmk enregistre ici les données ferroutées. Pour chaque ordinateur hôte ferrouté, un sous-dossier est créé avec le nom de l’ordinateur hôte — ce sous-dossier contient un fichier texte avec les données de l’ordinateur hôte. Le nom du fichier correspond au nom de l’ordinateur hôte ferrouté fournissant les données.

~/tmp/check_mk/cache/

C'est ici que sont temporairement enregistrées les dernières sorties de l'agent de tous les ordinateurs hôtes. Le contenu du fichier d'un ordinateur hôte est identique à celui obtenu avec l'instruction « cmk -d myserver123 ».


Last modified: Mon, 15 Dec 2025 20:41:19 GMT via commit 8075c7a52
Sur cette page