# Checkmk

Checkmk est un logiciel développé en Python et C++ pour la supervision d’infrastructures informatiques et de réseaux. Il est utilisé pour le contrôle de serveurs, applications conteneurisées ou non, réseaux, infrastructures cloud (publiques, privées, et hybrides), périphériques de stockage, bases de données et capteurs environnementaux.
Checkmk est disponible sous quatre formes : une édition open source (Checkmk Raw Edition), une édition commerciale à destination des entreprises (Checkmk Entreprise Edition), une édition commerciale comprenant des fonctionnalités avancées de supervision du cloud (Checkmk Cloud Edition) et une autre édition commerciale pour les fournisseurs de services d’infogérance (MSP) (Checkmk Managed Services Edition). Ces éditions de Checkmk sont disponibles pour plusieurs plateformes, en particulier différentes versions de Debian, Ubuntu, SLES et RedHat, et aussi comme Docker Image. Des équipements matériels et virtualisés de différente taille sont aussi offerts pour simplifier l’administration par une interface graphique et de proposer des solutions de haute disponibilité.
Les sondes, ou agents, utilisés par Checkmk pour collecter les données sont disponibles pour 11 plateformes, dont Windows.

## Historique

Checkmk a été créé en 2008 en substituant un script shell à l'agent Inetd de Nagios. Il fut publié en avril 2009 sous la GPL. À l’origine, il ajoutait de nouvelles extensions à un noyau Nagios$^,$. L’édition open source (Checkmk Raw Edition) est toujours basée sur le noyau Nagios et des extensions formant un système de supervision open source complet.
Au fil des années, les éditions commerciales de Checkmk ont remplacé les composants essentiels de Nagios par des composants propres, incluant un cœur de supervision propriétaire plus performant. Cependant, la majorité du développement pour les éditions commerciales, dont les agents et les plugins, est disponible dans l’édition libre.
En plus de la supervision d’environnements étendus et hétérogènes sur site, Checkmk supporte la supervision des services AWS, Azure, Docker et Kubernetes depuis la version 1.5+ (1.5p12).
Checkmk est développé par Checkmk GmbH à Munich en Allemagne. L’entreprise opérait sous le nom de « Mathias Kettner GmbH » jusqu’au 16 avril 2019. À cette occasion, l'entreprise a été transformée en« tribe29 GmbH » et le nom du produit « Check_MK » a également été changé en « Checkmk ». Un autre changement de marque a ensuite eu lieu le 14 avril 2023 et l'entreprise a été renommée Checkmk GmbH.
Checkmk GmbH suit un modèle d’entreprise open source. L’édition libre est disponible sous différentes licences, dont principalement la GPLv2, tandis qu’une grande partie des éditions commerciales est distribuée sous la « Checkmk Enterprise License ».

## Le produit

Checkmk combine trois types de supervision d’infrastructures informatiques : la supervision fondée sur l’état du système, la supervision à base de données de métriques et la supervision basée sur les événements. La supervision fondée sur l’état du système utilise des seuils pour déterminer et enregistrer la « santé » d’un périphérique ou d’une application. La supervision à base de données de métriques permet l’enregistrement et l’analyse graphique de séries temporelles ; un système graphique en HTML5 et une intégration avec Grafana sont également disponibles dans l’édition entreprise (CEE). Et finalement, la supervision basée sur les événements et la journalisation offre la possibilité de filtrer les événements clés et de déclencher des actions.
Afin d’assurer une supervision très large, Checkmk a actuellement plus de 2000 plugins sous licence GPLv2 qui sont disponibles dans chaque édition. Ces plugins font partie du produit et sont régulièrement complétés par d’autres plugins et des extensions. Il est également possible d’utiliser des plugins Nagios.
La configuration et le fonctionnement de Checkmk sont simplifiés par une entière intégration de tous les composants. Une seule et même règle peut ainsi être utilisée pour différents services et différents hôtes. Ce haut degré d’automatisation accélère le workflow de manière significative. Il est ainsi possible de découvrir automatiquement des ordinateurs hôtes et des services, de configurer automatiquement des plugins par des seuils et des règles présentes par défaut, de mettre à jour automatiquement des agents (une fonctionnalité CEE), de configurer automatiquement et de manière dynamique le logiciel ce qui permet la supervision de services d’une durée de vie de quelques secondes seulement, tel que dans l’environnement Kubernetes (CEE v1.6), et de découvrir automatiquement des tags et étiquettes à partir de sources telles que Kubernetes, AWS et Azure (CEE v1.6).
En outre, il existe des manuels d'utilisation pour des outils de configuration et de déploiement tels qu’Ansible ou Salt.
Checkmk est souvent utilisé dans de très larges environnements distribués où un nombre élevé de sites, comme les 300 sites de Faurecia) ou les plus de 100 000 périphériques d’Edeka, sont surveillés. Cela est rendu possible par le micronoyau de Checkmk qui consomme beaucoup moins de ressources processeur que, par exemple, Nagios et offre donc des performances nettement supérieures avec le même matériel. De plus, les données non persistantes sont stockées en mémoire vive, ce qui améliore considérablement la rapidité d'accès.

## Composants
### Le noyau de supervision (« Checkmk Microcore – CMC »)

Les éditions commerciales de Checkmk utilisent un noyau de supervision écrit en C++ (Checkmk Microcore - CMC) offrant des performances bien supérieures au noyau Nagios qui est utilisé dans l’édition libre, Checkmk Raw Edition. De plus, à partir de la version 1.6, le CMC permet de surveiller de manière dynamique des objets ayant un cycle de vie court tels que les conteneurs.

### Configuration et contrôle

Checkmk propose une découverte de services et une génération de paramètres automatiques. Checkmk utilise sa propre méthode pour effectuer les contrôles (checks) et ne sonde chaque hôte qu’une seule fois pour récolter les données. Les résultats du sondage sont transmis au noyau de supervision en tant que « contrôles passifs ». Cela améliore considérablement les performances du serveur de supervision et des hôtes surveillés.
Checkmk utilise différentes méthodes pour accéder aux données. Celles-ci comprennent les agents installés sur le système cible ; les « agents spéciaux » fonctionnant sur le superviseur et communiquant avec l'API du système cible, l'API SNMP de gestion de réseau des périphériques réseau et des imprimantes ; et les protocoles HTTP et TCP pour communiquer avec des services web et l’internet. Par défaut, Checkmk interroge explicitement les données (pull) afin d’identifier les pannes système rapidement. Un hôte peut également transférer directement ses données à Checkmk ou à un hôte intermédiaire (push).

### Interface données (« Livestatus »)

Livestatus est la principale interface de Checkmk. Elle propose un accès direct à toutes les données depuis les hôtes et les services surveillés. Les données sont récupérées directement en mémoire, ce qui permet un accès rapide aux informations sans surcharger le système. L'accès s'effectue grâce à un protocole simple, réalisable dans n’importe quel langage de programmation, sans bibliothèque spéciale.

### Interface utilisateur en ligne (« Multisite »)

Multisite est l’interface utilisateur web de Checkmk. Elle offre une mise en page rapide et la possibilité de définir des vues et des tableaux de bord et intégrés à NagVis. De plus, elle permet une supervision distribuée intégrant plusieurs instances de monitoring via Livestatus. Elle comprend une connexion LDAP et permet aussi l'accès à d’autres données par des services web, etc.. L’interface utilisateur est disponible en plusieurs langues.

### Administration en ligne (« Setup »)

L'application de contrôle de configuration en ligne, le setup (anciennement: WATO), permet à un système basé sur Checkmk d'être entièrement administrable dans le navigateur. Cela inclut la gestion des utilisateurs, des rôles, des groupes, des périodes de supervision, etc. Des autorisations peuvent être accordées de manière granulaire en définissant de nouveaux rôles. Les rôles existants (LDAP, AD) peuvent aussi être utilisés à cet effet. Le setup fonctionne sur la base de règles, de sorte que la configuration d’environnements complexes reste simple et intuitive. La découverte, la configuration, et la mise à jour automatique des agents, accélèrent encore la configuration. Une interface HTTP peut aussi être utilisée pour intégrer des CMDBs pour simplifier le travail des administrateurs.

### Système d’alerte

Plusieurs canaux de notification peuvent être configurés avec des règles différentes pour chaque utilisateur. Par exemple, les e-mails peuvent être envoyés à tout moment de la journée, mais les SMS ne le sont que pour les problèmes les plus importants et pendant les heures de garde. Les notifications peuvent être définies pour toutes les équipes ou pour des équipes spécifiques, par exemple, en ne notifiant que les administrateurs responsables du stockage qu'un disque dur est en panne. Les messages en double sont regroupés afin qu'un utilisateur ne soit pas averti deux fois par le même canal. De plus, les utilisateurs peuvent configurer leurs propres notifications. Dans les environnements distribués, les alertes peuvent être gérées de manière centralisée. Pour les problèmes détectés, des actions peuvent être déclenchées automatiquement par des scripts. Checkmk comprend une intégration aux passerelles de courriels et de SMS ainsi qu'aux solutions de communication telles que Slack, Jira, PagerDuty, OpsGenie, VictorOps et ServiceNow.

### Informatique décisionnelle

Le module d’informatique décisionnelle est intégré à l'interface graphique. Il regroupe l’état général des processus d’affaires et leur dépendance à l'égard des applications et des éléments d'infrastructure provenant des différents hôtes et services. Il se base sur les règles définies par l’opérateur. Il peut également être utilisé pour contrôler des applications constituées de microservices consistant en modules Kubernetes et en déploiements d’applications conteneurisées. De plus, les scénarios les plus défavorables peuvent être simulés en temps réel et l’historique des données peut être analysé pour identifier les causes de la dégradation des performances.

### Console d'événements

La console d'événements intègre le traitement des messages du journal et des interruptions SNMP à l’application de contrôle. Elle est configurée par un ensemble de règles qui classent les messages selon qu’il doivent être traités ou supprimés. La console peut compter les messages, les corréler et en attendre de nouveaux, les réécrire, etc. Des entrées peuvent être regroupées (par exemple, après plusieurs échecs de connexion) pour assurer le suivi des événements. La console intègre également un démon syslog qui reçoit les messages directement sur le port 514 et un gestionnaire SNMP qui les reçoit sur le port 162.

### Représentation des données de métriques

Les éditions commerciales Checkmk utilisent leur propre représentation graphique de données de métriques (également appelées séries temporelles). Cela permet d'analyser ses données sur de longs intervalles à l'aide d’éléments visuels interactifs HTML5 avec une résolution maximale d'une seconde. Les données peuvent être importées à partir d'une variété de sources et de formats (JSON, XML, SNMP, etc.) et stockées à long terme sur un autre périphérique.
Il est également possible d’exporter les données vers Graphite ou InfluxDB. Dans la version 1.5p16 de la version CEE, un plugin est disponible pour l'exportation des données directement vers Grafana à des fins de visualisation. La Checkmk Raw Edition utilise PNP4Nagios comme système graphique.

### Rapports

Les rapports permettent d’établir des documents au format PDF, de manière automatique ou ad hoc et à intervalles réguliers. Ils comprennent l'analyse de la disponibilité dans laquelle l'historique des données peut être fourni en un clic sur n'importe quelle période de temps. Les calculs de disponibilité peuvent exclure les heures non surveillées, ajuster la résolution ou ignorer des intervalles courts. Outre les calculs de disponibilité, ils peuvent également inclure des informations sur la qualité de service (SLA) dans lesquels des configurations complexes peuvent être contrôlées. Les rapports ne sont disponibles que dans les versions commerciales de Checkmk.

### Inventaire logiciel et inventaire matériel

L'inventaire matériel et l’inventaire logiciel peuvent être utilisés pour surveiller les changements matériels et logiciels, pour vérifier que les mises à jour de sécurité sont installées et pour mettre à jour des données statiques telles que celles de l'utilisation d’un disque dur. L’intégration d’une base de données de gestion de la configuration (CMDB) simplifie l’échange de données.