La surveillance de l’infrastructure informatique est complexe, mais un outil comme Checkmk la rend plus facile.

De nombreuses organisations ont ajouté des technologies cloud-natives à leur pile technologique afin d’améliorer les performances de leurs produits. Dans le même temps, elles continuent souvent à gérer leurs propres réseaux et infrastructures sur site. Cette évolution vers des infrastructures hybrides doit être prise en compte dans la surveillance en raison du nombre considérable de métriques générées chaque seconde pour divers composants tels que le système d’exploitation, le stockage, le serveur, les environnements cloud, etc. Tous ces éléments sont importants pour s’assurer que les applications fonctionnent de manière optimale.

Ces mesures sont un signal essentiel pour les équipes DevOps afin de comprendre la santé de leur infrastructure. C’est pourquoi les organisations ont besoin d’une solution de surveillance pour les aider à identifier rapidement les problèmes dans la production avec des métriques, des visualisations et des analyses. Checkmk est l’un des outils de surveillance d’infrastructure les plus populaires et les plus utiles. Dans cet article, je vais vous expliquer pourquoi Checkmk mérite sa bonne réputation et comment vous pouvez faire les premiers pas avec lui.

Qu’est-ce que Checkmk ?

Checkmk vérifie en permanence le fonctionnement de n’importe quel aspect des environnements informatiques modernes et est particulièrement bien adapté aux infrastructures hybrides. D’une part, Checkmk est flexible et prend en charge les conteneurs, les actifs en nuage et les systèmes sur site tels que les commutateurs et les serveurs. D’autre part, il est très facile de démarrer et de gérer votre surveillance, car Checkmk est livré avec des alertes automatiques basées sur une grande expertise informatique et d’autres fonctionnalités intelligentes qui vous feront gagner beaucoup de temps.

Si vous souhaitez utiliser Checkmk gratuitement, deux options s’offrent à vous : Premièrement, vous pouvez opter pour Checkmk Raw Edition, qui est entièrement open-source et dont l’utilisation est gratuite sans aucune limitation. Deuxièmement, il y a l’édition d’essai Checkmk Enterprise qui possède toutes les fonctionnalités supplémentaires des éditions Checkmk Enterprise, mais après 30 jours, le nombre d’hôtes sera limité à 25.

Comment Checkmk résout-il le problème ?

Checkmk peut surveiller les applications, les serveurs, les bases de données, les réseaux, les conteneurs, le stockage, etc. Il fournit une liste massive de plus de 2 000 plug-ins de surveillance. Grâce à ces plug-ins. Checkmk peut être étendu pour surveiller des technologies spécifiques de différents fournisseurs disponibles sur le marché. Quelques plug-ins populaires de Checkmk sont pour Docker, Kubernetes, Cisco, Nginx, VMware, Linux, Windows, AWS, Dell. Avec ses 2 000 plug-ins, Checkmk se distingue comme une solution de surveillance d’infrastructure très prometteuse disponible actuellement.

En outre, pour toute solution de surveillance, la rapidité et la précision avec lesquelles elle peut lire les métriques et mettre en place des alertes et des notifications intelligentes sont cruciales. La solution de Checkmk répond à tous ces critères. Grâce à sa fonction de découverte automatique, Checkmk peut identifier plus de 90 % des services et des appareils. Aujourd’hui, la plupart des entreprises ont besoin d’évolutivité et d’automatisation. Avec Checkmk, vous pouvez faire évoluer la capacité de surveillance d’une centaine d’hôtes à des milliers d’hôtes en toute simplicité et tirer parti de ses agents disponibles pour l’automatisation.

Installez Checkmk dans un conteneur Docker

Dans cet article, je vais installer Checkmk Raw Edition dans un conteneur Docker sur un serveur Linux fonctionnant sous Ubuntu 20.04. Depuis Dockerhub, vous pouvez télécharger le conteneur Docker Checkmk. Il a presque 5 millions de tirages jusqu’à présent, ce qui montre à quel point Checkmk est populaire et largement utilisé.

checkmk dockerhub

Prenez l’image Docker avec la dernière version de Checkmk et exécutez-la dans un conteneur en utilisant la commande docker container run.

docker container run -dit -p 8080:5000 --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 -v monitoring:/omd/sites --name monitoring -v /etc/localtime:/etc/localtime:ro --restart always checkmk/check-mk-raw:2.0.0-latest

Le nom du conteneur sera ‘monitoring’, le serveur web écoutera le port 5000 et ouvrira le port 8080 du noeud. Le conteneur utilisera le système de fichiers temporaire et le fuseau horaire local.

geekflare@geekflare:~$ sudo docker container run -dit -p 8080:5000 --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 -v/omd/sites --name monitoring -v/etc/localtime:/etc/localtime:ro --restart always checkmk/check-mk-raw:2.0.0-latest
Impossible de trouver l'image 'checkmk/check-mk-raw:2.0.0-latest' localement
2.0.0-latest : Extrait de checkmk/check-mk-raw
33847f680f63 : Extraction terminée
474905f2790b : Extraction terminée
1804f0e63047 : Extraction terminée
f36fe6334464 : Retiré complet
03c68dfa69cf : Extraction complète
b60cfdb78e96 : Extraction terminée
Digest: sha256:7788fa2e31c7270be201d75285c13ccc7a74f67f991872ea63ba0cfa6708cac6
Statut : Téléchargement d'une image plus récente pour checkmk/check-mk-raw:2.0.0-latest
9729e323a840a08b0e758cfa9e6dbf76ba5dab4b2ecc4eea5174b8ee1a5cfbcf

Vous pouvez vérifier si l’image Docker a été téléchargée en exécutant la commande docker images.

geekflare@geekflare:~$ sudo docker images
DÉPÔT TAG IMAGE ID CRÉÉ TAILLE
bitnami/node-exporter latest ba0f519ca49b il y a 34 heures 104MB
checkmk/check-mk-raw 2.0.0-latest 097319702432 il y a 13 jours 1.03Go
hello-world dernier feb5d9fea6a5 il y a 7 semaines 13.3kB

Exécutez la commande docker ps pour voir si le conteneur Checkmk est en cours d’exécution.

geekflare@geekflare:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9729e323a840 checkmk/check-mk-raw:2.0.0-latest "/docker-entrypoint...."   Il y a environ une minute Up 59 seconds (health : starting) 6557/tcp, 0.0.0.0:8080->5000/tcp, :::8080->5000/tcp monitoring
3d3a95ed3c25 bitnami/node-exporter:latest "/opt/bitnami/node-e..." il y a 25 heures Up 25 hours 9100/tcp node-exporter

Pour obtenir les détails de connexion à l’interface web de Checkmk, imprimez le journal du conteneur Checkmk.

geekflare@geekflare:~$ sudo docker container logs 9729e323a840 
### CREATION DU SITE 'cmk'
Ajout de /opt/omd/sites/cmk/tmp à /etc/fstab.
Nous allons désactiver TMPFS.
Système de fichiers temporaire déjà monté
Mise à jour de la configuration du noyau...
Génération de la configuration pour le noyau (type nagios)...Pré-compilation des contrôles d'hôtes...OK
OK
Exécution du script post-création "01_create-sample-config.py"...OK
Création d'un nouveau cmk de site avec la version 2.0.0p15.cre.

  Le site peut être démarré avec le cmk omd start.
  L'interface web par défaut est disponible à l'adresse http://9729e323a840/cmk/

  L'utilisateur administrateur pour les applications web est cmkadmin avec le mot de passe : ClFxBPre
  Pour administrer le site en ligne de commande, connectez-vous avec 'omd su cmk'.
  Après vous être connecté, vous pouvez modifier le mot de passe de cmkadmin avec 'htpasswd etc/htpasswd cmkadmin'.

### DÉMARRAGE DE XINETD
[ ok ] Démarrage du superserveur internet : xinetd.
### DÉMARRAGE DU SITE
Système de fichiers temporaire déjà monté
Démarrage de mkeventd...OK
Démarrage de rrdcached...OK
Démarrage de npcd...OK
Démarrage de nagios...OK
Démarrage d'apache...OK
Démarrage de redis...OK
Initialisation de la Crontab...OK
### DÉMARRAGE DU CRON
### CONTENEUR DÉMARRÉ

Le conteneur Docker Checkmk sera lancé par défaut à l’adresse https://localhost:8080/cmk/check_mk. La sortie de la commande ci-dessus vous indique que le nom d’utilisateur est cmkadmin et le mot de passe, dans mon cas le mot de passe est ClFxBPre. Ouvrez l’adresse dans un navigateur web et utilisez vos identifiants pour vous connecter.

checkmk login

Une fois connecté, voici le “tableau de bord principal” qui apparaît. Il est vide car vous n’avez pas encore ajouté d’hôtes.

checkmk dashboard

Surveiller Docker avec Checkmk

Habituellement, vous installez l’agent Checkmk sur la machine qui héberge vos conteneurs Docker, puis vous utilisez le plug-in Checkmk pour Docker afin de surveiller tous les conteneurs. Ce plug-in (mk_docker.py) utilise l’API Python de Docker pour suivre les conteneurs Docker et obtenir une visibilité complète de leur état et de leurs performances en temps réel. Vous pouvez lire plus de détails sur la surveillance de Docker avec Checkmk sur le site web de Checkmk.

Comme dans mon environnement Docker il n’y a qu’un seul conteneur Docker qui tourne, mon conteneur Checkmk Docker, je vais juste utiliser l’agent Checkmk qui tourne dans le conteneur Docker et je n’installerai pas Checkmk sur mon hôte Docker. L’agent est pré-installé dans le conteneur Checkmk, il me suffit donc d’ajouter mon conteneur Checkmk en tant qu’hôte.

Obtenons l’adresse IP sur laquelle le service Docker s’exécute en utilisant ifconfig dans le terminal.

geekflare@geekflare:~$ ifconfig
docker0 : flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
        inet6 fe80::42:59ff:fe8a:8ba8 prefixlen 64 scopeid 0x20<link>
        ether 02:42:59:8a:8b:a8 txqueuelen 0 (Ethernet)
        Paquets RX 5559 octets 7230215 (7.2 MB)
        RX errors 0 dropped 0 overruns 0 frame 0
        Paquets TX 4164 octets 614703 (614.7 KB)
        Erreurs TX 0 abandonnées 0 dépassements 0 porteuse 0 collisions 0

enp0s3 : flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.0.108 netmask 255.255.255.0 broadcast 192.168.0.255
        inet6 fe80::144a:4682:35e7:bb2 prefixlen 64 scopeid 0x20<link>
        ether 08:00:27:91:82:82 txqueuelen 1000 (Ethernet)
        Paquets RX 699491 octets 1044235622 (1.0 GB)
        Erreurs RX 0 dropped 7 overruns 0 frame 0
        Paquets TX 101260 octets 7555470 (7.5 MB)
        Erreurs TX 0 abandonnées 0 dépassements 0 porteuse 0 collisions 0

lo : flags=73<UP,LOOPBACK,RUNNING> mtu 65536
        inet 127.0.0.1 netmask 255.0.0.0
        inet6 ::1 prefixlen 128 scopeid 0x10<hôte>
        loop txqueuelen 1000 (Local Loopback)
        Paquets RX 20655 octets 8446042 (8.4 MB)
        RX errors 0 dropped 0 overruns 0 frame 0
        Paquets TX 20655 octets 8446042 (8.4 MB)
        Erreurs TX 0 abandonnées 0 dépassements 0 porteuse 0 collisions 0

veth44ba5ce : flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet6 fe80::145f:1fff:fee9:a7b0 prefixlen 64 scopeid 0x20<link>
        ether 16:5f:1f:e9:a7:b0 txqueuelen 0 (Ethernet)
        Paquets RX 5559 octets 7308041 (7.3 MB)
        RX errors 0 dropped 0 overruns 0 frame 0
        Paquets TX 4173 octets 616263 (616.2 KB)
        Erreurs TX 0 abandonnées 0 dépassements 0 porteuse 0 collisions 0

vetha82ee43 : flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet6 fe80::585c:6fff:fe0a:a79b prefixlen 64 scopeid 0x20<link>
        ether 5a:5c:6f:0a:a7:9b txqueuelen 0 (Ethernet)
        Paquets RX 0 octets 0 (0.0 B)
        RX errors 0 dropped 0 overruns 0 frame 0
        Paquets TX 92 octets 9799 (9.7 KB)
        Erreurs TX 0 abandonnées 0 dépassements 0 porteuse 0 collisions 0

Dans mon cas, le service Docker s’exécute sur 172.17.0.1. L’étape suivante consiste à ajouter le service Docker en tant qu’hôte dans Checkmk afin qu’il puisse être surveillé.

  • Allez dans Checkmk et cliquez sur Setup -> Hosts.

checkmk hosts

  • Cliquez sur “Ajouter un hôte”

checkmk add host

  • Indiquez le nom d’hôte et l’adresse IP et cliquez sur “Save & go to the service configuration”.

checkmk host docker

  • Une fois que vous avez fait cela, Checkmk démarrera automatiquement la découverte du service.

checkmk docker service

Faites défiler vers le bas pour voir les services de surveillance fonctionnant sous l’hôte Docker. Vous pouvez voir que les services ne sont pas surveillés actuellement. Si vous voulez tout surveiller, la solution la plus simple est de cliquer sur “Fix all”. Si vous souhaitez configurer les services à surveiller, vous pouvez également le faire en détail. Cliquez sur le signe si vous souhaitez surveiller un service.

checkmk docker service list

Une fois que vous avez sélectionné les services que vous voulez surveiller, ils apparaîtront dans l’onglet “Services surveillés”. Vous obtiendrez tous les détails de l’état de chaque service que vous surveillez. Si vous cliquez sur le signe ?, ce service passera dans la liste des services indécis. Si vous cliquez sur le signe X, le service sera placé dans l’onglet “Services désactivés”.

checkmk monitored services

J’ai désactivé quatre services, je peux donc les voir dans l’onglet des services désactivés.

checkmk disabled services

Lorsque vous avez terminé d’ajouter les services, vous devez activer les modifications avant qu’elles ne soient mises en production.

  • Cliquez sur le champ en surbrillance avec le point d’exclamation jaune ( !) dans le coin supérieur droit pour voir les changements en attente.
  • Cliquez sur Activer sur les sites sélectionnés.

Vous avez réussi à surveiller les services Docker à l’aide de Checkmk !

Conclusion

Voilà pour ce qui est de Checkmk, un outil de surveillance d’infrastructure. C’est un outil très facile à utiliser que vous devez essayer pour surveiller vos environnements de production. Je vous recommande d’essayer l’édition gratuite de Checkmk pour commencer votre surveillance.