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
Avec plus de 2 000 plugins de supervision prêts à l'emploi et de multiples méthodes pour la supervision du contenu des fichiers et des dossiers, l' évaluation des messages de journal et la supervision des tâches récurrentes, Checkmk est la solution prête à l'emploi idéale pour une multitude de tâches de supervision. Si un plugin destiné à un usage très spécialisé n'est pas disponible, la communauté Checkmk se fera un plaisir de vous aider en proposant des développements personnalisés via Checkmk Exchange.
Il existe toutefois toujours des situations où un matériel est trop récent, un logiciel trop peu courant ou le développement propre à une organisation trop spécifique pour que quiconque ait déjà identifié la nécessité de son intégration dans Checkmk. Si vous en êtes arrivé là, il est temps de commencer à programmer vos propres extensions.
Cet article vous donne un aperçu des options disponibles.
Ces options sont multiples : Dans certains cas, par exemple, il suffit d’ajouter quelques lignes à un script de sauvegarde pour afficher la réussite ou l’échec sous une forme facilement visualisable dans Checkmk — cela signifie que le « développement interne » peut parfois être réalisé en quelques minutes seulement. Dans d’autres cas, vous devrez visualiser des situations de charge à l’aide de graphiques détaillés — dans une telle situation, il vaut la peine d’y consacrer quelques heures supplémentaires.
2. Possibilités d'extension à l'aide de vos propres programmes
Les sections suivantes présentent les procédures permettant d'intégrer vos propres extensions dans Checkmk, ainsi que l'emplacement de la collection et de l'évaluation des données dans chaque cas.
2.1. Checks locaux
L'utilisation de contrôles locaux constitue sans doute le moyen le plus simple d'étendre Checkmk. Un programme exécuté par le script de l'agent de l'hôte surveillé affiche le nom, l'état et d'autres informations requises sur une seule ligne. Pour les contrôles locaux, Checkmk prend en charge la reconnaissance du service. La programmation est possible dans n'importe quel langage de programmation sans avoir à apprendre une API.
Exécution : entièrement sur l'ordinateur hôte surveillé. Vous devez vous assurer que l'interpréteur approprié est disponible sur tous les ordinateurs hôtes recevant un check local, le cas échéant.
Valeurs seuils : une paire de valeurs seuils inférieures et supérieures (pour les transitions vers « WARN » et « CRIT » respectivement) peut être gérée par l’instance Checkmk.
Métriques : plusieurs métriques par service sont possibles. Les unités ne peuvent pas être gérées explicitement ; elles sont automatiquement attribuées ou omises.
2.2. Plugins de supervision natifs basés sur un agent
Les plugins de supervision basés sur des agents évaluent les données fournies par l’agent Checkmk. Un plugin d’agent collecte des données brutes et les préfiltre, mais n’effectue pas d’analyse sur les données collectées. Cette collection de données peut être effectuée dans n’importe quel langage de programmation. La sortie sous forme de fichier JSON ou au format CSV est très courante. Cependant, vous verrez également de nombreux plugins d’agent qui n’appellent que des instructions système Linux brutes.
L'évaluation s'effectue ensuite sur le serveur Checkmk à l'aide d'un plugin de supervision écrit en Python, qui utilise les API de Checkmk. Un état peut ainsi être déterminé de manière très flexible. Il est possible d'utiliser des valeurs seuil inférieures et supérieures. De plus, plusieurs services peuvent être créés et l'état d'un service peut être vérifié par plusieurs contrôles. Il est également possible de déterminer des tendances et d'inclure des valeurs antérieures. Les plugins de supervision natifs prennent en charge la création automatique d'étiquettes et l'inventaire matériel/logiciel.
Exécution : plugin d'agent pour la collecte de données dans n'importe quel langage de programmation sur l'ordinateur hôte surveillé, évaluation ultérieure par un plugin de supervision sur le serveur Checkmk à l'aide de l'API Check.
Seuils : toute combinaison de valeurs de seuil pour chaque service.
Métriques : N'importe quel nombre de métriques par service avec unités.
2.3. Agents spéciaux
Les agents spéciaux constituent une extension des plugins de supervision basés sur des agents. Ici, ce n’est pas un plugin d’agent qui collecte les données brutes, mais un programme s’exécutant sur le serveur Checkmk qui récupère les données depuis une autre source et les convertit au format d’agent de Checkmk. Les agents spéciaux sont utilisés, par exemple, lorsqu’un appareil à surveiller fournit des données pertinentes pour la supervision au format JSON ou XML via une API REST. Pour des exemples d’utilisation des agents spéciaux fournis avec Checkmk, consultez AWS, Azure ou VMware.
Lors de la programmation, vous accédez à deux API : pour la configuration des ports ou autres paramètres similaires, Checkmk fournit une API qui vous permet de spécifier ces paramètres dans la configuration. Pour la requête de données proprement dite, utilisez l'API REST de la source externe. L'évaluation sur le serveur Checkmk est effectuée comme décrit dans la section précédente consacrée aux plugins de supervision natifs.
Exécution : programme/script pour la collecte de données et l'évaluation ultérieure sur le serveur Checkmk.
Seuils : toute combinaison de valeurs de seuil pour chaque service.
Métriques : N'importe quel nombre de métriques par service avec unités.
2.4. Plugins de supervision natifs basés sur SNMP
Les plugins de supervision pour SNMP constituent une variante des plugins de supervision basés sur un agent. La différence réside ici dans le fait qu’aucune section d’agent n’est demandée ni évaluée ; à la place, certains OID SNMP sont explicitement demandés par l’agent SNMP.
Exécution : collecte des données et évaluation ultérieure par un plugin de supervision sur le serveur Checkmk à l'aide de l'API Check.
Seuils : toute combinaison de valeurs de seuil pour chaque service.
Métriques : N'importe quel nombre de métriques par service avec des unités.
Le protocole SNMP étant intrinsèquement très inefficace, nous vous recommandons de n'utiliser SNMP que si aucun autre accès aux données de supervision n'est possible. Par exemple, si un périphérique fournit également les mêmes données via une API REST, vous devriez créer un agent spécial à cet effet.
2.5. Plugins de supervision Nagios hérités
Les plugins de supervision Nagios se trouvent à deux endroits dans Checkmk : En tant que vérifications actives, pour vérifier l'accessibilité de certains services depuis le serveur Checkmk, et en tant qu'extension MRPE des agents Windows ou Linux pour vérifier ces services depuis un ordinateur hôte — si l'hôte/les services ne sont pas accessibles depuis le serveur Checkmk.
La programmation est possible dans n'importe quel langage.
Exécution : entièrement sur l'ordinateur hôte surveillé (via MRPE) ou entièrement sur le serveur Checkmk (contrôle actif).
Seuils : valeurs de seuil uniquement lorsqu'elles sont utilisées en tant que check actif.
Métriques : métriques uniquement en cas d'utilisation en tant que check actif.
En raison d’un certain nombre d’inconvénients, tels qu’un dépannage fastidieux, nous ne recommandons la réimplémentation que si une compatibilité totale avec Nagios est requise. Dans tous les autres cas, utilisez des plugins de supervision natifs ou — pour des requêtes simples — utilisez des checks locaux. Une documentation détaillée des formats de sortie est disponible sur Monitoring-Plugins.org.
3. Articles supplémentaires
3.1. Le répertoire spool
Checkmk propose un autre mécanisme pour générer des données d'agent : Demandez à un programme d'écrire directement un fichier texte au format de l'agent Checkmk. Stocké dans le répertoire spool, l'agent Checkmk transfère le contenu de ce fichier avec le reste de la sortie de l'agent.
Grâce au répertoire spool, vous pouvez, par exemple, demander à des scripts de sauvegarde d'écrire l'état et les statistiques d'un check local ou d'un plugin de supervision directement à la fin de l'exécution. Cela évite de passer par l'évaluation des fichiers journaux.
Lors du développement de vos propres plugins de supervision, les fichiers spool vous aident à simuler des sorties spécifiques de votre plugin d'agent.
3.2. Le mécanisme de ferroutage
Le mécanisme de ferroutage est utilisé lorsqu’un ordinateur hôte dispose d’informations concernant un autre ordinateur hôte. Une section d’agent spécialement formatée est alors attribuée à l’ordinateur hôte concerné lors de l’évaluation de la sortie de l’agent.
Pour les machines virtuelles, le mécanisme de ferroutage sert à fusionner les données collectées par le logiciel de virtualisation avec celles issues de la supervision au sein de la machine virtuelle.
3.3. Paquets d'extensions Checkmk (MKPs)
Si vous avez programmé vos propres extensions et que vous souhaitez les versionner puis les diffuser, vous avez la possibilité de regrouper une extension avec ses fichiers associés dans des paquets d'extension Checkmk (MKPs). Vous devez également utiliser ce format de paquet si vous souhaitez proposer ces extensions sur Checkmk Exchange.
3.4. The bakery API
Dans de nombreux cas, vous souhaiterez fournir aux plugins d'agent une configuration supplémentaire. Ou vous souhaiterez peut-être exécuter des scriptlets d'installation spécifiques en fonction des paramètres définis dans la configuration de Checkmk.
Si vous utilisez la boulangerie d’agents pour la distribution des paquets d’agents, la bakery API vous fournit une interface de programmation grâce à laquelle les paramètres définis dans Checkmk peuvent être facilement transférés vers d'autres ordinateurs hôtes surveillés.
4. Contribuer à Checkmk
Si vous programmez vos propres extensions, nous vous recommandons de les soumettre d'abord à Checkmk Exchange. Vous en restez le propriétaire et la personne de contact, et vous pouvez facilement fournir de nouvelles versions. Comme les exigences en matière de qualité du code pour l'Exchange ne sont pas aussi élevées que pour les plugins de supervision fournis avec Checkmk, vous pouvez facilement tester de nouvelles idées auprès d'un large public via l'Exchange.
Si, à un moment donné, vous estimez que votre plugin de supervision devrait faire partie intégrante de Checkmk, veuillez d'abord lire le document « Contribuer à Checkmk ».
