Docker
Vue d'ensemble​
Docker permet d'embarquer une application dans un ou plusieurs containers logiciels qui pourront s'exécuter sur n'importe quel système d'exploitation hôte. Docker fonctionne sous Linux comme Windows Server. C'est une technologie qui a pour but de faciliter les déploiements d'application et la gestion du dimensionnement de l'infrastructure sous-jacente.
Contenu du connecteur de supervision​
Objets supervisés​
- Nodes
- Containers
Métriques collectées​
Plus d'informations sur les métriques remontées sont disponibles sur la documentation officielle de l'Api Rest Docker: https://docs.docker.com/engine/api/v1.30/
- Container-Usage
- Nodes-Status
Metric name | Description |
---|---|
Name | Name of the container. Units: text |
State_name | Real state of Container. Units: text |
read_io | The average number of bytes read from disk per second. Units: Bytes/Second |
Write_io | The average number of bytes write from disk per second. Units: Bytes/Second Units: Bytes/s |
Cpu_total_usage | The percentage of CPU utilization. Units: Percent |
Cpu_system_usage | The average amount of time taken per disk I/O write operation. Units: Seconds |
Memory_usage | The percentage of Memory utilization. Units: Percent & Bytes |
Traffic_in | The percentage of Inbound Traffic utilization. Units: Percent & Bytes/s |
Traffic_out | The percentage of Outbound Traffic utilization. Units: Percent & Bytes/s |
Metric name | Description |
---|---|
Node-status | The status of node. Units: text |
Containers-running | The number of Containers system running. Units: counter |
Containers-stopped | The number of Containers system stopped. Units: counter |
Containers_paused | The Number of Containers system paused. Units: counter |
Prérequis​
- Le Plugin nécessite une version de l'API Docker >= 1.21 (https://docs.docker.com/engine/api/v1.30/).
Connexion à l'Api Rest de Docker​
Ouvrez votre terminal ssh préféré :
- vi /lib/systemd/system/docker.service
- Trouver la ligne qui commence par Execstart et modifier les options suivantes :
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H=tcp://0.0.0.0:2375
- Enregistrer les modifications
- Recharger les services du système :
systemctl daemon-reload
- Redémarrer Docker :
system docker restart
Installation​
- Online License
- Offline License
- Installer le Plugin sur l'ensemble des collecteurs Centreon supervisant des ressources Docker:
yum install centreon-plugin-Applications-Docker-Restapi
- Installer le connecteur de supervision "Docker" depuis la page Configuration > Gestionnaire de connecteurs de supervision de l'interface Web de Centreon
- Installer le Plugin sur l'ensemble des collecteurs supervisant des ressources Docker:
yum install centreon-plugin-Applications-Docker-Restapi
- Installer le RPM du connecteur de supervision contenant les modèles de supervision:
yum install centreon-pack-applications-docker-restapi
- Installer le connecteur de supervision "Docker" depuis la page Configuration > Gestionnaire de connecteurs de supervision de l'interface Web de Centreon
Configuration​
Choisissez le modèle d'hôte correspondant aux nodes ou containers "App-Docker-Restapi-custom". Une fois le modèle d'hôte appliqué, il est possible de définir l'ensemble des macros nécessaires au fonctionnement des contrôles:
Mandatory | Nom | Description |
---|---|---|
X | DOCKERENGINEPORT | Engine port application for monitoring containers api usages |
DOCKERENGINEEXTRAOPTIONS | Extra options for monitoring containers api usages |
FAQ​
Je supervise mes nodes et containers Docker, les temps de contrôle sont anormalement longs, est-ce normal ?​
L’api webservice 'container stats' est relativement lente (entre 1s et 2s), les temps de réponse peuvent donc être un peu longs.
Comment tester un contrôle en ligne de commande et que signifient les options principales ?​
A partir du moment ou la sonde est installée, vous pouvez tester directement depuis votre collecteur Centreon avec l'utilisateur centreon-engine:
/usr/lib/centreon/plugins//centreon_docker_restapi.pl \
--plugin=cloud::docker::restapi::plugin \
--mode=node-status \
--hostname='192.168.0.50' \
--port='2375' \
--warning-node-status='' \
--critical-node-status='%{status} !~ /ready/ || %{manager_status} !~ /reachable|-/' \
--verbose
OK: Node '192.168.0.50' Containers Running : 7, Containers Stopped : 2, Containers Paused : 0 | 'containers_running'=7;;;0; 'containers_stopped'=2;;;0; 'containers_paused'=0;;;0;
Node '192.168.0.50' Containers Running : 7, Containers Stopped : 2, Containers Paused : 0
La commande ci-dessus requête un noeud Docker (--mode=node-status
) sur le port 2375 (--port='2375'
) et fournit son état ('ready' ou pas) ainsi que l'état de ses containers en état "running","stopped" et "paused".
Une alerte CRITICAL sera déclenchée si l'état du noeud n'est pas 'ready' ou que le statut du manager renvoie un autre état que 'reachable' (--critical-node-status='%{status} !~ /ready/ || %{manager_status} !~ /reachable|-/'
)