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
Il existe de nombreuses bonnes raisons d'utiliser FreeBSD plutôt que Linux ou d'autres systèmes de type Unix : Par exemple, la fonctionnalité de conteneurs « Jails », disponible depuis 2000, ses performances élevées même sous de lourdes charges d'E/S, la robustesse du système de fichiers UFS2, ou encore l'excellente prise en charge du système de fichiers transactionnel moderne ZFS. Checkmk fournit un agent pour FreeBSD qui s’appuie sur l’agent pour Linux, mais qui a été adapté aux spécificités de FreeBSD, notamment en utilisant des formats de sortie différents pour les outils en ligne de commande et des conventions de chemin d’accès différentes. Toutefois, l’installation et les tests fonctionnels doivent être effectués en grande partie manuellement, car il n’existe pas de solution de packaging ou de déploiement via l’Agent Bakery.
Remarque concernant les autres systèmes BSD : Cet article explique l'installation et la configuration de l'agent pour FreeBSD — des agents pour OpenBSD et NetBSD sont également disponibles. Leur installation est similaire à celle décrite ici. Si vous utilisez DragonFly BSD, nous serions ravis de recevoir des tests et toute suggestion de correctifs pour l'agent FreeBSD. |
La structure de base de l’agent FreeBSD est identique à celle décrite pour l’agent Linux :
Il s’agit d’un simple script shell, qui peut être exécuté via un super-serveur Internet (inetd ou xinetd) ou un tunnel SSH, ce qui le rend léger et sécurisé.
De manière générale, nous partons du principe dans cet article que vous avez une certaine expérience de Linux ou de Solaris ; nous nous concentrerons donc ici principalement sur les différences.
2. Installation
2.1. Conditions préalables
Afin que l'agent Checkmk puisse lire toutes les informations utiles à la surveillance, l'installation d'outils supplémentaires est requise :
sysutils/ipmitooldevel/libstatgrabshells/bashlang/python3ftp/wget
Python est facultatif à ce stade, mais il est de toute façon nécessaire pour de nombreux plug-ins de l'agent.
bash constitue une dépendance particulière, car le script de l'agent utilise en effet une syntaxe qui n'est compatible ni avec le shell Almquist ni avec tcsh.
ipmitool est nécessaire pour récupérer les informations matérielles.
Installez toutes ces dépendances à l'aide de la commande suivante :
2.2. Installation à partir des ports FreeBSD
Les ports FreeBSD contiennent un port pour l'agent Checkmk maintenu par Ian Valentine, qui peut inclure des correctifs visant à rendre l'agent compatible avec les versions plus récentes de FreeBSD-STABLE. Si la version (par exemple 2.3.0) de cet agent Checkmk disponible dans les ports FreeBSD est égale ou inférieure d'une version majeure à la version de Checkmk que vous utilisez actuellement, vous pouvez installer cet agent.
Il existe également un paquet précompilé pour le port check_mk_agent, que vous pouvez installer à l'aide de la commande pkg :
Dans la plupart des cas, la version que vous compilez vous-même à partir des ports est plus récente :
2.3. Installation manuelle
Si la version disponible dans les ports FreeBSD est plus ancienne que celle de votre serveur Checkmk, installez le dernier agent à partir du dépôt GitHub. Étant donné que les adaptations aux nouvelles versions de FreeBSD ne sont pas toujours rétroportées vers les agents des anciennes versions de Checkmk, il est généralement recommandé d'effectuer l'installation à partir de la branche de développement la plus récente :
Si vous recherchez les agents pour d'autres systèmes BSD ou si vous souhaitez définir la branche de développement pour une version spécifique de Checkmk, localisez le dossier de l'agent sur GitHub.
2.4. Test en ligne de commande
Exécutez maintenant l'agent en ligne de commande et parcourez rapidement la sortie dans le pager :
Si aucune sortie n'apparaît, veuillez vérifier à nouveau les prérequis, en particulier que Bash est bien installé sous /usr/local/bin.
3. Configuration de l'accès via le réseau
3.1. inetd sous FreeBSD
Le moyen le plus simple d'accéder à l'agent est l'inetd fourni avec FreeBSD.
Sinon, l'xinetd pour Linux est disponible dans la section security des ports FreeBSD.
Sa configuration est exactement la même que celle décrite dans l'article sur l'agent Linux.
L'inetd lie la sortie de l'agent au port TCP 6556 et, si nécessaire, restreint l'accès à certains serveurs Checkmk.
Vérifiez d'abord si votre fichier « /etc/services » contient déjà une entrée pour le port 6556 :
Si ce n'est pas le cas, Checkmk doit être identifié comme un service. Pour ce faire, ajoutez la ligne suivante :
checkmk-agent 6556/tcp #Checkmk monitoring agentAjoutez maintenant la ligne suivante au fichier de configuration d'/etc/inetd.conf :
checkmk-agent stream tcp nowait root /usr/local/bin/check_mk_agent check_mk_agentL'inetd doit toujours être activé. Pour ce faire, ajoutez la ligne suivante au fichier /etc/rc.conf :
inetd_enable="YES"Si une restriction d'accès est nécessaire, modifiez le fichier /etc/hosts.allow.
Commencez par mettre en commentaire la ligne qui autorise l'accès depuis n'importe où, puis ajoutez une ligne qui n'autorise l'accès qu'au serveur Checkmk — ici avec l'adresse IP 198.51.100.123.
Le premier paramètre est le nom de la commande exécutée par inetd :
# The rules here work on a "first match wins" basis.
# ALL : ALL : allow
sshd : ALL : allow
check_mk_agent : 198.51.100.123 : allowUne fois les modifications de configuration effectuées, redémarrez :
L'accès à l'agent depuis le serveur de surveillance devrait désormais fonctionner.
La manière la plus simple de le vérifier consiste à utiliser netcat ou nc.
Exécutez la commande suivante en tant qu’utilisateur du site sur le serveur Checkmk pour tester la connexion réseau vers l’agent (dans cet exemple, vers l’hôte dont l’adresse IP est 198.51.100.231).
La sortie de la commande est ici abrégée pour n’afficher que les premières lignes :
3.2. Sécurité
Étant donné que l'agent FreeBSD ne prend actuellement pas en charge le chiffrement, nous vous recommandons d'utiliser un tunnel SSH dans les situations où il est nécessaire de sécuriser les données transférées. Nous expliquons comment configurer cela dans l'article consacré à l'agent Linux.
4. Intégration dans la surveillance
L'intégration dans la surveillance s'effectue par une découverte automatique des services, comme pour tous les autres systèmes. Pour un FreeBSD « nu », sans aucun service serveur encore configuré, au moins 11 services devraient être détectés, ainsi que dix autres pour les informations relatives au système de fichiers si celui-ci est installé sur ZFS :

5. Plug-ins
En raison de la configuration entièrement manuelle, de l'absence de distribution automatique et des chemins d'accès aux fichiers différents de ceux sous Linux, il est recommandé de tester les mécanismes de plug-ins les plus importants. Cette opération est lancée à l'aide de MRPE.
5.1. MRPE
Créez un fichier de configuration /etc/check_mk/mrpe.cfg avec le contenu suivant :
Flux_Comp /bin/echo 'OK - Flux compensator up and running'Une section MRPE devrait désormais apparaître dans la sortie de l'agent :
Dans l'Flux_Comp, le service apparaît désormais comme un nouveau service :

5.2. Plug-ins d'agent
L'installation des plug-ins d'agent est identique à celle décrite dans l'article sur l'agent Linux.
Veillez à utiliser le Shebang correct lors de l'installation de tout plug-in.
Perl et Python sont installés dans /usr/local/bin sous FreeBSD, et de nombreux scripts shell fonctionnant avec /bin/sh sous Linux nécessitent en réalité le shell Bourne Again installé dans /usr/local/bin/bash sous FreeBSD.
Pour les tests, une simple vérification locale convient, grâce à laquelle l’évaluation permettant de déterminer si le service surveillé est OK, WARN ou CRIT s’effectue directement sur l’hôte surveillé. Pendant que nous y sommes, utilisons un script de deux lignes pour tester l’interpréteur Python. Une fois encore, notez les chemins d’accès par défaut différents par rapport à Linux :
N'oubliez pas de rendre le script exécutable :
Dans ce cas également, le service est immédiatement détecté :

6. Fichiers et répertoires
6.1. Chemins d'accès aux fichiers sur l'hôte surveillé
| Chemin d'accès | Description |
|---|---|
|
Emplacement d'installation de l'agent Checkmk sur l'hôte cible. |
|
Répertoire de base pour les extensions de l'agent. |
|
Plug-ins qui enrichissent l'agent de données de surveillance supplémentaires. Les plug-ins peuvent être écrits dans n'importe quel langage de programmation disponible. |
|
Emplacement de stockage pour les vérifications locales personnalisées. |
|
Contient des données créées par des tâches cron, par exemple, et comprend sa propre section. Celles-ci sont également ajoutées à la sortie de l'agent. |
|
Emplacement de stockage des fichiers de configuration de l'agent. |
|
Fichier de configuration pour MRPE — permettant d'exécuter des plug-ins de vérification classiques compatibles avec Nagios. |
Il n'y a pas de chemins d'accès par défaut définis pour FreeBSD, contrairement à Linux (voir |
