Checkmk
to checkmk.com
Important

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. Pourquoi la ligne de commande ?

Une fois qu'un système Checkmk a été installé, il peut être entièrement configuré et utilisé via l'interface web. Il existe néanmoins des situations dans lesquelles il est utile de se plonger dans les méandres de la ligne de commande, par exemple :

  • lors de la recherche de la source de problèmes

  • lors de l'automatisation de l'administration de Checkmk avec l'API REST

  • lors de la programmation et du test de vos propres extensions

  • pour comprendre le fonctionnement interne de Checkmk

  • si vous appréciez tout simplement de travailler avec la ligne de commande !

Cet article présente les instructions, fichiers et répertoires les plus importants de Checkmk.

2. L'utilisateur de l'instance

2.1. Login en tant qu'utilisateur de l'instance

Lors de l'administration de Checkmk, à quelques exceptions près, vous n'avez jamais besoin de travailler en tant qu'utilisateur « root ». Dans cet article, nous partirons généralement du principe que vous êtes connecté en tant que utilisateur de l'instance. Pour ce faire, vous pouvez par exemple utiliser la commande suivante :

root@linux# su - mysite
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Il est également possible de réaliser un login direct via SSH pour accéder à une instance sans passer par root. Étant donné que l'utilisateur de l'instance est un utilisateur Linux « tout à fait normal », il vous suffit de lui attribuer un mot de passe (ce qui nécessite l'autorisation d'root, une seule fois, pour la configuration) :

root@linux# passwd mysite
Enter new Unix password: **********
Retype new Unix password: **********
passwd: password updated successfully
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Par la suite, un login SSH directement depuis un autre ordinateur devrait être possible (les utilisateurs Windows utiliseront de préférence PuTTY pour cela). Sous Linux, ce login s'effectue simplement à l'aide de l'instruction ssh :

user@otherhost:~$ ssh mysite@myserver123
mysite@myserver123's password: **********
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Lors du premier login, un avertissement concernant une clé hôte inconnue s'affichera probablement. Si vous êtes certain qu'aucun pirate n'a pris le contrôle de l'adresse IP de votre système d'exploitation à ce moment précis, vous pouvez simplement le vérifier à l'aide de la commande « yes ».

Vous pouvez également utiliser la ligne de commande sur la Checkmk Appliance. La procédure à suivre est expliquée dans un article dédié.

2.2. Profil et variables d'environnement

Afin de limiter au maximum les problèmes, notamment ceux liés aux distributions individuelles ou aux configurations différentes des systèmes d’exploitation, le système Checkmk veille à ce que l’utilisateur de l’instance – ainsi que tous les processus de supervision – disposent toujours d’un environnement clairement défini. Outre le répertoire personnel et les autorisations, les variables d’environnement jouent un rôle important.

Entre autres, lors de la connexion en tant qu’utilisateur de l’instance, les variables suivantes seront définies ou modifiées. Ces variables sont disponibles pour être utilisées dans tous les processus s’exécutant au sein de l’instance. Cela s’applique également aux scripts qui sont indirectement invoqués par ces processus (par exemple, les scripts de notification propres à un utilisateur).

OMD_SITE

Le nom du site (mysite). Dans les scripts personnalisés, il convient de toujours utiliser cette variable plutôt qu’un nom de site codé en dur (par exemple, avec $OMD_SITE dans le script shell). Cela permet également d’utiliser le script tel quel sur d’autres instances.

OMD_ROOT

Le chemin d'accès au répertoire d'instances (/omd/sites/mysite/).

PATH

Répertoires dans lesquels les programmes exécutables seront recherchés. Par exemple, Checkmk conserve ici le fichier ~/bin/ du site. En cas de noms identiques, les programmes Checkmk ont la priorité – ceci est important, par exemple pour l’instruction mail, dont une version spéciale est fournie avec l’installation de Checkmk.

LD_LIBRARY_PATH

Répertoires dans lesquels les bibliothèques binaires supplémentaires sont recherchées. Grâce à cette variable, Checkmk garantit que les bibliothèques fournies avec Checkmk ont la priorité sur celles installées dans le système d'exploitation standard.

PERL5LIB

Chemin d'accès pour les modules Perl. Ici aussi, les variantes de modules fournies par Checkmk ont la priorité en cas de doute.

LANG

Le paramètre de langue pour les instructions en ligne de commande. Ce paramètre est repris de l’installation Linux. Cette variable est automatiquement supprimée dans les processus de l’instance, et le paramètre revient à la valeur par défaut : l’anglais ! Cela affecte également d’autres paramètres régionaux. La suppression de LANG est très importante, car un certain nombre de plugins Nagios standard, par exemple le paramètre de langue allemande, utilisent une virgule comme séparateur décimal au lieu d’un point. Votre sortie ne peut donc pas être traitée correctement.

L'instruction « env » vous permet d'afficher toutes les variables d'environnement ; l'ajout de « | sort » à cette instruction permet d'organiser la liste de manière un peu plus claire :

OMD[mysite]:~$ env | sort
HOME=/omd/sites/mysite
LANG=de_DE.UTF-8
LD_LIBRARY_PATH=/omd/sites/mysite/local/lib:/omd/sites/mysite/lib
LOGNAME=mysite
MAILRC=/omd/sites/mysite/etc/mail.rc
MAIL=/var/mail/mysite
MANPATH=/omd/sites/mysite/share/man:
MODULEBUILDRC=/omd/sites/mysite/.modulebuildrc
MP_STATE_DIRECTORY=/omd/sites/mysite/var/monitoring-plugins
NAGIOS_PLUGIN_STATE_DIRECTORY=/omd/sites/mysite/var/monitoring-plugins
OMD_ROOT=/omd/sites/mysite
OMD_SITE=mysite
PATH=/omd/sites/mysite/lib/rabbitmq/sbin:/omd/sites/mysite/lib/perl5/bin:/omd/sites/mysite/local/bin:/omd/sites/mysite/bin:/omd/sites/mysite/local/lib/perl5/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
PERL5LIB=/omd/sites/mysite/local/lib/perl5/lib/perl5:/omd/sites/mysite/lib/perl5/lib/perl5:
PERL_MM_OPT=INSTALL_BASE=/omd/sites/mysite/local/lib/perl5/
PWD=/omd/sites/mysite
SHELL=/bin/bash
SHLVL=1
TERM=xterm
USER=mysite
_=/usr/bin/env
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Sous Linux, l'environnement est un attribut d'un processus. Chaque processus possède ses propres variables, qu'il transmet automatiquement aux sous-processus. Ces derniers démarrent initialement avec les mêmes variables héritées, mais peuvent également les modifier.

Avec l'instruction `env`, vous ne pouvez toujours consulter que l'environnement du shell actuel. Si vous soupçonnez une erreur dans l’environnement d’un processus particulier, une petite astuce vous permet néanmoins d’afficher la liste de son environnement. Pour cela, vous n’avez besoin que de l’ID du processus (PID). Vous pouvez l’identifier à l’aide, par exemple, de ps ax, pstree -p ou top. Vous pouvez alors accéder directement au fichier d’environs du processus via le système de fichiers /proc. Voici, à titre d’exemple, une instruction adaptée pour le PID 13222 :

OMD[mysite]:~$ tr \\0 \\n < /proc/13222/environ | sort
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Si vous avez besoin de variables définies par l'utilisateur pour vos propres scripts ou d’autres logiciels à exécuter dans l’instance, enregistrez-les dans le fichier ~/etc/environment, spécialement créé à cet effet. Toutes les variables définies ici seront disponibles partout dans l’instance :

~/etc/environment
# Custom environment variables
#
# Here you can set environment variables. These will
# be set in interactive mode when logging in as site
# user and also when starting the OMD processes with
# omd start.
#
# This file has shell syntax, but without 'export'.
# Better use quotes if your values contain spaces.
#
# Example:
#
# FOO="bar"
# FOO2="With some spaces"
#
MY_SUPER_VAR=blabla123
MY_OTHER_VAR=10.88.112.17

2.3. Personnalisation du shell

Si vous souhaitez personnaliser votre shell (invite de commande ou autres éléments), vous pouvez le faire comme d'habitude dans le fichier .bashrc. Les variables d'environnement appartiennent toutefois à ~/etc/environment, ce qui garantit qu'elles seront disponibles pour tous les processus.

Rien ne vous empêche non plus d'avoir votre propre fichier .vimrc si vous aimez travailler avec Vim.

3. La structure des répertoires

3.1. La séparation entre les logiciels et les données

Le graphique suivant présente les répertoires les plus importants d'une installation Checkmk avec une instance nommée mysite et une instance <version> appelée, par exemple, 2.4.0p24.cee :

Illustration of the directory structure of a Checkmk site.

Le répertoire /omd constitue la base de cette structure. Tous les fichiers de Checkmk se trouvent ici, sans exception. /omd est en fait un lien symbolique vers /opt/omd, tandis que les données physiques réelles se trouvent dans /opt – mais tous les chemins d’accès aux données dans Checkmk utilisent toujours /omd.

Il est important de distinguer les données (surlignées en jaune) et les logiciels (en bleu). Les données de l'instance se trouvent à l'adresse /omd/sites/, et les logiciels installés à l'adresse /omd/versions/.

3.2. Répertoire d'instances

Comme tout utilisateur Linux, l’utilisateur de l’instance dispose également d’un répertoire personnel, que nous appelons le répertoire d’instances. Si votre instance s’appelle mysite, elle se trouve dans /omd/sites/mysite/. Comme d’habitude sous Linux, le shell abrège son propre répertoire personnel par un tilde (~) (ou un tiret). Comme vous vous trouverez effectivement dans ce répertoire immédiatement après un login, le tilde apparaît automatiquement dans l’invite de commande :

OMD[mysite]:~$

Les sous-répertoires du répertoire d'instances sont affichés par rapport au tilde :

OMD[mysite]:~$ cd var/log
OMD[mysite]:~/var/log$
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Le répertoire d'instances contient plusieurs sous-répertoires, que vous pouvez lister à l'aide de la commande « ll » (alias de « ls -l ») :

OMD[mysite]:~$ ll
total 16
lrwxrwxrwx  1 mysite mysite   11 Jan 24 11:56 bin -> version/bin/
drwxr-xr-x 19 mysite mysite 4096 Jan 24 11:56 etc/
lrwxrwxrwx  1 mysite mysite   15 Jan 24 11:56 include -> version/include/
lrwxrwxrwx  1 mysite mysite   11 Jan 24 11:56 lib -> version/lib/
drwxr-xr-x  5 mysite mysite 4096 Jan 24 11:56 local/
lrwxrwxrwx  1 mysite mysite   13 Jan 24 11:56 share -> version/share/
drwxr-xr-x  2 mysite mysite 4096 Jan 24 09:57 tmp/
drwxr-xr-x 12 mysite mysite 4096 Jan 24 11:56 var/
lrwxrwxrwx  1 mysite mysite   29 Jan 24 11:56 version -> ../../versions/2.4.0p24.cee/
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Comme on peut le constater, les répertoires bin, include, lib, share et version sont des liens symboliques. Les autres sont des répertoires « normaux ». Cela reflète la séparation entre le logiciel et les données, comme expliqué ci-dessus. Le répertoire du logiciel doit être accessible en tant que sous-répertoire du site, mais il est physiquement situé dans /omd/versions/ et peut également être utilisé par d’autres sites.

Logiciels Données

Répertoires

bin, include, lib, share

etc, local, tmp, var

Propriétaire

root

Utilisateur de l'instance (mysite)

Créé par

Installation de Checkmk

Création, configuration et supervision de l'instance

Emplacement physique

/omd/versions/2.4.0p24.cee/

/omd/sites/mysite/

Type de fichier

Liens symboliques

Répertoires normaux

3.3. Logiciels

Les répertoires de logiciels, comme c'est habituellement le cas sous Linux, appartiennent à root et ne peuvent donc pas être modifiés par un utilisateur de l'instance. Les sous-répertoires suivants sont présents – ceux de l'exemple se trouvent physiquement dans /omd/versions/2.4.0p24.cee/ , et sont accessibles via des liens symboliques depuis le répertoire d'instances :

bin/

Répertoire des programmes exécutables. C'est là que se trouve, par exemple, l'instruction `cmk`.

lib/

Répertoires C, plugins complémentaires pour Apache et Python – et, dans le répertoire nagios/plugins/, plugins de supervision standard, qui sont pour la plupart écrits en C ou en Perl.

share/

La partie principale du logiciel installé. De très nombreux composants se trouvent dans share/check_mk – parmi lesquels, bien plus de 2 000 plugins de supervision.

include/

Contient des fichiers d'en-tête pour les programmes C, qui doivent être liés aux bibliothèques situées dans lib/. Ce répertoire n'est pas important et n'est utilisé que si vous souhaitez compiler vous-même des programmes C.

Le lien symbolique version est une « étape intermédiaire » et sert de point de relais pour la version utilisée par l’instance. Lors d’une mise à jour du logiciel, celui-ci sera basculé de l’ancienne vers la nouvelle version. Néanmoins, n’essayez pas d’effectuer une mise à jour manuellement en modifiant le lien, car une mise à jour nécessite un certain nombre d’autres étapes supplémentaires – qui échoueront.

3.4. Données

Les données proprement dites d’une instance se trouvent dans les sous-répertoires restants du répertoire d’instances. Sans exception, celles-ci appartiennent à l’utilisateur de l’instance. Le répertoire d’instances lui-même est également inclus. Checkmk ne stocke rien d’autre que les répertoires qui y sont répertoriés. Vous pouvez y créer sans problème vos propres fichiers et répertoires, dans lesquels vous pouvez conserver, selon vos besoins, des tests, des données téléchargées, des copies de fichiers journaux, etc.

Les répertoires suivants ont été prédéfinis :

etc/

Fichiers de configuration.
Ceux-ci sont modifiés par des actions effectuées dans la configuration de Checkmk.
Remarque : les scripts situés dans etc/init.d sont en réalité également des « fichiers de configuration », puisqu’ils se trouvent dans etc/. Ce schéma reprend celui que l’on trouve dans tous les systèmes Linux sous /etc/init.d/. Nous vous déconseillons toutefois de modifier ce script, car cela peut entraîner des conflits lors d’une mise à jour du logiciel. Il n’est pas nécessaire de modifier ces scripts.

var/

Données d'exécution.
Toutes les données générées par la supervision seront stockées ici. En fonction du nombre d'ordinateurs hôtes et de services, un volume considérable de données peut s'accumuler, dont la plus grande partie est constituée des valeurs mesurées enregistrées dans les RRD.

tmp/

Données volatiles.
Checkmk et d’autres composants stockent ici des données temporaires (qui n’ont pas besoin d’être conservées). Un système de fichiers « tmpfs » est donc monté à cet emplacement. Il s’agit d’un système de fichiers qui gère les données en mémoire vive (RAM), ne générant ainsi aucun E/S disque. Le redémarrage de l’ordinateur entraîne la perte de toutes les données contenues dans « tmp/ » ! Toutefois, l’arrêt et le redémarrage de l’instance ne suppriment pas les données. Les données telles que les sockets, les pipes et les fichiers PID se trouvent dans tmp/run – elles sont nécessaires à la communication et à la gestion des processus du serveur. N'utilisez pas tmp/ pour stocker vos propres données, car ce répertoire est monté sur la mémoire vive (RAM), où l'espace est plutôt limité. Stockez vos propres données directement dans le répertoire d'instances, ou dans votre propre sous-répertoire à l'intérieur de celui-ci.

local/

Extensions propres.
Une hiérarchie « miroir » des répertoires du logiciel bin/, lib/ et share/ se trouve dans local/. Ces répertoires sont destinés à vos propres modifications ou extensions du logiciel. À noter également : Ne stockez en aucun cas des fichiers de test, des fichiers journaux, des copies de sauvegarde ou tout autre élément qui n'a pas sa place dans local/. Checkmk pourrait tenter d'exécuter ces fichiers en les prenant pour des composants du logiciel. De même, dans le cadre d'une surveillance distribuée, les données seront également dupliquées sur toutes les instances distantes.

3.5. Modification et extension de Checkmk – les fichiers locaux

Tip

Certaines affirmations faites dans cette section concernant la priorité des fichiers locaux (spécifiques au site) sur les fichiers portant le même nom dans le répertoire du logiciel ne sont plus correctes. Nous mettrons à jour les sections concernées prochainement.

Comme le montre le tableau ci-dessus, le répertoire ~/local/, avec ses nombreux sous-répertoires, est destiné à vos propres extensions. Dans une nouvelle instance, tous les répertoires de ~/local/ sont initialement vides.

Grâce à l'instruction pratique « tree », vous pouvez rapidement obtenir un aperçu de la structure de « ~/local/ ». L'option « -L 3 » limite la profondeur à 3 :

OMD[mysite]:~$ tree -L 3 local
local
├── bin
├── lib
│   ├── apache
│   ├── check_mk -> python3/cmk
│   ├── nagios
│   │   └── plugins
│   ├── python
│   └── python3
│       ├── cmk
│       └── cmk_addons
└── share
    ├── check_mk
    │   ├── agents
    │   ├── alert_handlers
    │   ├── checkman
    │   ├── checks
    │   ├── inventory
    │   ├── locale
    │   ├── mibs
    │   ├── notifications
    │   ├── pnp-rraconf
    │   ├── pnp-templates
    │   ├── reporting
    │   └── web
    ├── diskspace
    ├── doc
    │   └── check_mk
    ├── nagios
    │   └── htdocs
    ├── nagvis
    │   └── htdocs
    └── snmp
        └── mibs
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Tous les répertoires du niveau le plus bas sont activement intégrés au logiciel. Un fichier stocké ici sera traité de la même manière que s’il se trouvait dans le répertoire du même nom au sein de /omd/versions/…​ (ou, respectivement, dans le chemin d'accès logique du site dans ~/bin/, ~/lib/ ou ~/share/).

Exemple : sur l’instance, les programmes exécutables seront recherchés dans ~/bin/ et dans ~/local/bin/.

Il convient de noter qu’en cas de noms identiques, le fichier situé dans ~/local/ a toujours la priorité. Cela permet de modifier le logiciel sans avoir à changer les fichiers d’installation dans /omd/versions/. La procédure est simple :

  1. Copiez le fichier souhaité dans le répertoire approprié de ~/local/.

  2. Modifiez ce fichier.

  3. Redémarrez le service concerné pour que la modification prenne effet.

En ce qui concerne le point 3 ci-dessus, si vous ne savez pas exactement à quel service s'applique la modification, redémarrez simplement l'ensemble de l'instance à l'aide de omd restart.

3.6. Fichiers journaux

Dans Checkmk – comme déjà décrit – les fichiers journaux sont stockés dans le répertoire de données var/. Les fichiers journaux des composants concernés s’y trouvent. La sortie suivante, correspondant à l’une des éditions commerciales, est abrégée :

OMD[mysite]:~$ ll -R var/log/
var/log/:
total 1268
drwxr-x--- 2 mysite_cce mysite_cce   4096 May 19 15:20 agent-receiver/
-rw------- 1 mysite_cce mysite_cce  13646 Aug 14 12:02 alerts.log
drwxr-x--- 2 mysite_cce mysite_cce   4096 May 19 15:20 apache/
drwx------ 2 mysite_cce mysite_cce   4096 May 19 15:20 automation-helper/
-rw------- 1 mysite_cce mysite_cce 379995 Aug 14 14:35 cmc.log
-rw------- 1 mysite_cce mysite_cce  57808 Aug 14 12:03 dcd.log
-rw------- 1 mysite_cce mysite_cce      0 May 19 16:05 diskspace.log
-rw------- 1 mysite_cce mysite_cce 529922 Aug 14 18:12 licensing.log
-rw------- 1 mysite_cce mysite_cce   8395 Aug 14 12:02 liveproxyd.log
-rw-rw---- 1 mysite_cce mysite_cce     62 Aug 14 18:13 liveproxyd.state
drwxr-x--- 2 mysite_cce mysite_cce   4096 May 19 15:19 mkeventd/
-rw------- 1 mysite_cce mysite_cce  37345 Aug 14 12:02 mkeventd.log
-rw------- 1 mysite_cce mysite_cce  63829 Aug 14 14:35 mknotifyd.log
-rw-rw---- 1 mysite_cce mysite_cce    564 Aug 14 18:13 mknotifyd.state
-rw------- 1 mysite_cce mysite_cce  30060 Aug 14 14:35 notify.log
-rw------- 1 mysite_cce mysite_cce  32202 Aug 14 12:02 redis-server.log
-rw------- 1 mysite_cce mysite_cce      0 May 19 15:20 rrdcached.log
-rw------- 1 mysite_cce mysite_cce  21132 Sep  4 18:43 security.log
drwx------ 2 mysite_cce mysite_cce   4096 May 19 15:20 ui-job-scheduler/
-rw------- 1 mysite_cce mysite_cce  25871 Sep  4 09:17 update.log
-rw------- 1 mysite_cce mysite_cce   2486 Aug 14 12:12 web.log

var/log/agent-receiver:
total 264
-rw-r--r-- 1 mysite_cce mysite_cce 233243 Jun 18 10:25 access.log
-rw-r--r-- 1 mysite_cce mysite_cce      0 May 19 15:20 agent-receiver.log
-rw-r--r-- 1 mysite_cce mysite_cce  27546 Aug 14 12:02 error.log
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Sur l'interface web, vous pouvez facilement configurer l'étendue des données à consigner dans les fichiers journaux en recherchant dans Setup > General > Global settings toutes les entrées de journal contenant logging :

List of global settings for logging.
Les paramètres globaux de journalisation dans une édition commerciale
Important

Les fichiers journaux peuvent rapidement devenir très volumineux si un niveau de journalisation élevé a été défini. Il est généralement conseillé d'utiliser ces paramètres pour une personnalisation temporaire, par exemple pour faciliter l'identification d'un problème.

4. L'instruction cmk

Avec l'instruction `omd`, qui sert à démarrer et à arrêter des instances, à effectuer la configuration de base des composants et à lancer une mise à jour du logiciel, l'instruction `cmk` est la plus importante. Elle permet de créer une configuration pour un noyau de supervision, d'exécuter des checks manuellement, d'effectuer la reconnaissance du service, et bien plus encore.

4.1. Les options de l'instruction

L'instruction cmk est en réalité une abréviation de check_mk, introduite pour accélérer la saisie de l'instruction. L'instruction comprend une aide en ligne intégrée très détaillée, accessible via l'option --help :

OMD[mysite]:~$ cmk -h
WAYS TO CALL:
 cmk  --automation [COMMAND...]          Internal helper to invoke Check_MK actions
 cmk  --check [HOST [IPADDRESS]]         Check all services on the given HOST
 cmk  --check-discovery HOSTNAME         Check for not yet monitored services
...
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Comme vous pouvez le voir dans l'instruction ci-dessus, nous avons appelé l'aide avec l'option « -h » au lieu de « --help ». Car ce qui vaut pour l'instruction elle-même vaut également pour ses options : moins il y a à taper, plus c'est rapide. Ce n’est pas le cas pour toutes les options, mais pour celles qui sont souvent utilisées, il existe donc un formulaire abrégé en plus du formulaire long. Même si le formulaire long est plus intuitif, en particulier pour les débutants (check_mk --list-hosts), que le formulaire abrégé (cmk -l), nous utiliserons le formulaire abrégé dans le guide de l'utilisateur. En cas de doute, vous pouvez toujours consulter l’aide de l’instruction. Il est de toute façon conseillé de consulter attentivement l’aide de l’instruction, car nous ne présenterons pas toutes les options dans le guide de l'utilisateur.

En saisissant une option, vous lancez l'instruction cmk dans un mode spécifique. Voici un aperçu des options que nous présenterons dans ce chapitre, mais également dans d'autres parties du manuel :

Option Fonction

Noyau de supervision

cmk -R

Redémarrage du noyau du processeur

cmk -O

Chargement d'une nouvelle configuration dans le noyau du processeur

cmk -U

Créer une nouvelle configuration pour le noyau du processeur

cmk -N

Afficher la configuration Nagios du noyau du processeur

Contrôles

cmk myserver123

Exécution de checks sur l'myserver123 de l'ordinateur hôte

Services

cmk -I myserver123

Exécution de la reconnaissance du service

cmk --check-discovery myserver123

Exécute la vérification de découverte sur l'hôte, qui recherche les services nouveaux et disparus ainsi que les nouvelles étiquettes d'hôte. Lorsqu'un changement survient, l'hôte est « marqué » par la création d'un fichier contenant le nom de domaine de l'hôte dans ~/var/check_mk/autodiscovery — mais uniquement si la mise à jour automatique de la configuration des services est activée dans Checkmk (dans le jeu de règles « Periodic service discovery »).

Agents

cmk -d myserver123

Récupération des données des agents

cmk -A myserver123

Agents de cuisson

Diagnostics

cmk -l

Liste des hôtes

cmk --list-tag mytag

Liste des ordinateurs hôtes avec balise de l’hôte

cmk -D myserver123

Affichage de la configuration d'un ordinateur hôte

Informations

cmk -V

Affiche la version de Checkmk installée sur l'instance.

cmk -L

Liste des plugins de supervision

cmk -m

Accès au catalogue des plugins de supervision

cmk -M df

Affichage de la page de manuel d'un plugin de supervision (ici, celle du plugin « df »)

Thèmes spécifiques

cmk --update-dns-cache

Supprime le cache DNS et le recrée. Pour plus de détails sur le cache DNS, consultez l'article sur les ordinateurs hôtes. Par défaut, cette instruction est exécutée une fois par jour sur une instance Checkmk via le cron.

cmk --cleanup-piggyback

Supprime toutes les données ferroutées obsolètes du répertoire ~/tmp/check_mk/piggyback/. Par défaut, cette instruction est exécutée une fois par jour sur une instance Checkmk via le cron.

cmk -P

Gestion des MKP

cmk --snmpwalk myswitch

Extraction d'une exploration SNMP à partir de l'myswitch de l'ordinateur hôte

cmk --snmptranslate

Traduction d'une requête SNMP

cmk --create-diagnostics-dump

Créer un dump de diagnostics de support

Dans certains modes, des options supplémentaires spécifiques sont à votre disposition ; vous pouvez par exemple limiter la reconnaissance du service à certaines vérifications, par exemple à la vérification « df » à l'aide de l'instruction « cmk -I --detect-plugins=df myserver123 ».

Un certain nombre d'options fonctionnent toujours, quel que soit le mode dans lequel l'instruction est exécutée :

Option Fonction

cmk -v

Demande à cmk de générer un rapport détaillé de son activité actuelle (« verbose »)

cmk -vv

Identique à l’option ci-dessus, mais avec encore plus de détails : « very verbose »

cmk --cache

Les informations sont lues à partir des fichiers de cache, même s’ils ne sont plus à jour. L’agent n’est contacté que si aucun fichier de cache n’existe. Les données de l’agent mises en cache pour l’ordinateur hôte se trouvent dans ~/tmp/check_mk/cache.

cmk --no-tcp

Fonctionne comme --cache, mais s'interrompt si un fichier de cache est absent ou n'est pas à jour. Ainsi, dans n'importe quelle situation, vous pouvez empêcher l'accès à l'agent.

cmk --no-cache

Les informations sont toujours récupérées à jour, c'est-à-dire qu'aucun fichier de cache n'est utilisé.

cmk --usewalk

Pour les ordinateurs hôtes SNMP : au lieu d'accéder à l'agent SNMP, cette fonction utilise une exploration SNMP enregistrée, qui a été préalablement récupérée avec cmk --snmpwalk myserver123. Ces explorations sont stockées dans ~/var/check_mk/snmpwalks.

cmk --debug

En cas d'erreur, cette option garantit qu'elle ne sera plus interceptée, mais que l'exception Python d'origine s'affichera dans son intégralité. Cela peut constituer une information importante pour le développeur, car cela indique l'emplacement exact du programme où se trouve l'erreur. Cela sera également très utile pour localiser les erreurs dans les plugins de supervision que vous avez vous-même écrits. Si, lors de l'appel de cmk, une erreur survient qui doit être signalée au support ou via le formulaire de commentaires, répétez la requête en ajoutant l'option --debug, et joignez la trace Python à votre courrier électronique.

Dans la section suivante, nous vous montrerons comment utiliser ces instructions. Les exemples de sortie sont pour la plupart présentés sous une forme abrégée.

4.2. Instructions pour le noyau de supervision

Les éditions commerciales utilisent le Checkmk Micro Core (CMC) comme noyau de supervision, CRE tandis que la communauté Checkmk utilise Nagios. Une tâche importante de l’cmk consiste à générer un fichier de configuration lisible par le noyau, et qui contient tous les ordinateurs hôtes, services, contacts, groupes de contacts, périodes, etc. configurés. Sur la base de ces informations, le noyau sait quelles vérifications doivent être exécutées et quels objets il doit fournir à l’interface graphique via Livestatus.

Tant pour Nagios que pour le CMC, il est fondamental que le nombre d’ordinateurs hôtes, de services et d’autres objets reste toujours fixe pendant le fonctionnement, et que ce nombre ne puisse être modifié que par la génération d’une nouvelle configuration, suivie d’un rechargement du noyau du processeur. Avec Nagios, cela nécessite un redémarrage du noyau du processeur. Le CMC dispose d’une fonction très efficace pour le rechargement de sa configuration pendant le traitement actif.

Le tableau suivant met en évidence les différences importantes entre les configurations des deux noyaux du processeur :

Nagios CMC

Fichier de configuration

~/etc/nagios/conf.d/check_mk_objects.cfg

~/var/check_mk/core/config

Type de fichier

Fichier texte contenant des instructions d'define

Fichier binaire compressé et optimisé

Activation

Redémarrage du noyau du processeur

Instruction du noyau du processeur pour recharger la configuration

Instruction

cmk -R

cmk -O

La régénération de la configuration est toujours nécessaire si le contenu des fichiers de configuration dans ~/etc/check_mk/conf.d ou des services détectés automatiquement dans ~/var/check_mk/autochecks a été modifié. L'Setupe conserve une trace de ces modifications et les met en évidence dans l'interface graphique en tant que modifications à activer. Les instructions suivantes sont disponibles pour l'activation via la ligne de commande :

Option Fonction

cmk -R

Génère une nouvelle configuration pour le noyau du processeur et redémarre celui-ci (de manière analogue à omd restart core). Il s'agit de la méthode fournie pour Nagios.

cmk -O

Génère la configuration du noyau du processeur et la charge sans redémarrer le traitement actif (analogue à omd reload core). Il s'agit de la variante recommandée avec le CMC. Attention : avec Nagios comme noyau du processeur, cette option fonctionne également, mais peut entraîner des fuites de mémoire et d'autres instabilités. Par ailleurs, cette option n'effectue en aucun cas un véritable rechargement, mais arrête et redémarre en quelque sorte le processus en interne.

cmk -U

Génère la configuration pour le noyau du processeur sans l'activer.

cmk -N

À des fins de diagnostic, cela affiche la configuration à générer sur la sortie standard, sans modifier le fichier de configuration réel. Vous pouvez saisir ici un nom de domaine simplement pour afficher la configuration de l'ordinateur hôte (par exemple cmk -N myserver123).

4.3. Exécution des checks

Un deuxième mode de Checkmk concerne l'exécution des contrôles basés sur Checkmk d'un ordinateur hôte. Cela vous permet de faire vérifier immédiatement tous les services détectés automatiquement, ainsi que ceux configurés manuellement, sans avoir à vous soucier du noyau de supervision ou de l'interface graphique.

Pour ce faire, saisissez cmk --check suivi du nom d’un ordinateur hôte configuré dans la supervision. L’option --check étant l’option par défaut de cmk, vous pouvez également l’omettre. De plus, vous devriez toujours ajouter les deux options -n (ne pas envoyer les résultats au noyau de supervision) et -v (afficher tous les résultats). Vous trouverez plus d’informations à ce sujet dans la description des options ci-dessous.

OMD[mysite]:~$ cmk -nv myserver123
+ FETCHING DATA
Get piggybacked data
CPU load             15 min load: 1.53, 15 min load per core: 0.19 (8 cores)
CPU utilization      Total CPU: 10.02%
Check_MK Agent       Version: 2.4.0p24, OS: linux, ...
Disk IO SUMMARY      Read: 412 kB/s, Write: 1.15 MB/s, Latency: 57 microseconds
Filesystem /         Used: 61.61% - 287 GiB of 466 GiB, trend per 1 day 0 hours: +671 MiB, trend per 1 day 0 hours: +0.14%, Time left until disk full: 272 days 23 hours
Interface 2          [tun0], (up), Speed: 10 GBit/s, In: 511 B/s (<0.01%), Out: 184 B/s (<0.01%)
Kernel Performance   Process Creations: 67.64/s, Context Switches: 8509.18/s, Major Page Faults: 2.18/s, Page Swap in: 0.00/s, Page Swap Out: 0.00/s
Memory               Total virtual memory: 37.07% - 6.08 GB of 16.41 GB
Mount options of /   Mount options exactly as expected
Number of threads    2684 (warn/crit at 2000/4000)(!), Usage: 2.13%
TCP Connections      Established: 36
Temperature Zone 0   Temperature: 25.0 °C
Uptime               Up since 2025-09-08 08:54:55, Uptime: 8 hours 8 minutes
[agent] Success, [piggyback] Success (but no data found for this host), execution time 2.1 sec | execution_time=2.070 user_time=0.160 system_time=0.000 ...
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Autres conseils :

  • N'utilisez pas cette instruction sur les ordinateurs hôtes de production surveillés qui utilisent la supervision des fichiers journaux. Les messages de journal ne sont envoyés qu'une seule fois par les agents, et il peut arriver qu'une commande manuelle « cmk -nv » les « intercepte », ce qui entraînerait leur perte pour la supervision. Dans une telle situation, utilisez l'option « --no-tcp ».

  • Si Nagios est utilisé pour le noyau du processeur et que l'-n est omis, cela se traduira par une actualisation immédiate des résultats des checks dans le noyau du processeur et dans l'interface graphique.

  • Cette instruction est utile lors du développement de vos propres plugins de supervision, car elle permet un test plus rapide que l’utilisation de l’interface graphique. Si la vérification échoue et renvoie un UNKNOWN, l’option --debug peut aider à localiser le problème dans le code.

Les options suivantes influencent l'instruction :

Option Fonction

-v

Sortie des résultats du check : Sans cette option, vous ne verrez que la sortie de l'Check_MK du service lui-même, et non les résultats des autres services.

-n

Simulation : les résultats ne sont pas transmis au noyau du processeur, le compteur de performances n'est pas mis à jour.

--detect-plugins=df,uptime

Limite l'exécution aux plugins de supervision df et uptime. Dans le cas des ordinateurs hôtes SNMP, seules les données requises pour ceux-ci seront récupérées. Cette option est utile si vous développez vos propres plugins de supervision et que vous souhaitez uniquement les tester.

4.4. Récupération de la sortie de l'agent

La commande cmk -d récupère et affiche la sortie de l’agent Checkmk d’un ordinateur hôte. Avec cmk -d, les données de l’agent sont récupérées de la même manière que lors de la supervision. Elles ne sont ni validées ni traitées. Ainsi, les données affichées correspondent à une correspondance exacte avec celles qui sont transmises au Agent Controller (lorsque le chiffrement TLS est activé) ou à un programme de tunneling si des programmes source de données sont configurés.

OMD[mysite]:~$ cmk -d myserver123
<<<check_mk>>>
Version: 2.4.0p24
AgentOS: linux
Hostname: myserver123
AgentDirectory: /etc/check_mk
DataDirectory: /var/lib/check_mk_agent
SpoolDirectory: /var/lib/check_mk_agent/spool
PluginsDirectory: /usr/lib/check_mk_agent/plugins
LocalDirectory: /usr/lib/check_mk_agent/local
OSType: linux
OSName: Ubuntu
OSVersion: 24.04
OSPlatform: ubuntu
...
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Vous pouvez même exécuter cmk -d en utilisant le nom ou l'adresse IP d'un ordinateur hôte qui n'est pas configuré dans la supervision. Dans ce cas, les paramètres hérités de l'ordinateur hôte seront utilisés (connexion TCP au port 6556, pas d'Agent Controller, pas de chiffrement, pas de programme source de données).

4.5. Intégration des agents

Dans les éditions commerciales, vous pouvez également « cuire » les agents à partir de la ligne de commande, comme vous le feriez autrement via l'interface web. Cela vous offre la possibilité, par exemple, de mettre à jour régulièrement les agents, par exemple via un cron.

Pour installer les agents, utilisez l'option « -A » suivie du nom d'un ordinateur hôte (ou de plusieurs) :

OMD[mysite]:~$ cmk -Av myserver123
Baking packages for targets myserver123:
...
Baking...linux_deb:baking...linux_rpm:baking...solaris_pkg:baking...windows_msi:baking...linux_tgz:baking...solaris_tgz:baking...aix_tgz:baking
...
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

La sortie indique que les paquets d'agent disponibles pour l'ordinateur hôte myserver123 ont été compilés avec succès. Si vous ne spécifiez pas d'ordinateur hôte, les paquets seront compilés pour tous les ordinateurs hôtes.

L'instruction ne génère les paquets que lorsque cela est nécessaire. Si les paquets sont toujours à jour, la sortie ressemblera à ceci :

OMD[mysite]:~$ cmk -Av myserver123
Baking packages for targets myserver123:
...
myserver123..linux_deb: up to date (not baking)...linux_rpm: up to date (not baking)...solaris_pkg: up to date (not baking)...windows_msi: up to date (not baking)...linux_tgz: up to date (not baking)...solaris_tgz: up to date (not baking)...aix_tgz: up to date (not baking)...
...
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Vous pouvez toujours forcer la compilation à l'aide de l'option -f (force).

4.6. Liste des ordinateurs hôtes

L'instruction « cmk -l » affiche simplement la liste des noms des ordinateurs hôtes configurés dans l'Setup :

OMD[mysite]:~$ cmk -l
myserver123
myserver124
myserver125
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Comme les données sont fournies « brutes » et « non traitées », elles sont faciles à utiliser dans des scripts – par exemple, il est possible de créer une boucle sur tous les noms de domaine :

OMD[mysite]:~$ for host in $(cmk -l) ; do echo "Host: $host" ; done
Host: myserver123
Host: myserver124
Host: myserver125
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Si, au lieu de echo, vous insérez une instruction qui effectue une action utile, cela peut s'avérer très pratique.

L'appel de la commande `cmk --list-tag` affiche également les noms de domaine, mais offre en outre la possibilité de filtrer par balises de l’hôte. Il suffit de saisir une balise de l’hôte pour obtenir tous les hôtes possédant cette balise. L'exemple suivant répertorie tous les hôtes sous supervision par SNMP :

OMD[mysite]:~$ cmk --list-tag snmp
myswitch01
myswitch02
myswitch03
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Saisissez plusieurs balises et elles seront combinées par un « ET ». L'instruction ci-dessous affiche tous les ordinateurs hôtes surveillés à la fois par SNMP et par l'agent Checkmk. Comme aucun ordinateur hôte ne remplit cette condition, la sortie reste vide :

OMD[mysite]:~$ cmk --list-tag snmp checkmk-agent
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

4.7. Affichage de la configuration de l'ordinateur hôte

Pour un ou plusieurs ordinateurs hôtes spécifiés, la commande « cmk -D » affiche les services configurés, les balises de l’hôte, les étiquettes d’hôte et d’autres attributs. La liste des services étant très longue, elle peut sembler quelque peu confuse sur le terminal. Envoyez le résultat via « less -S » pour éviter une coupure :

OMD[mysite]:~$ cmk -D myserver123 | less -S
myserver123
Addresses:              192.168.178.34
Tags:                   [address_family:ip-v4-only], [agent:cmk-agent], [criticality:prod], [ip-v4:ip-v4], [networking:lan], [piggyback:auto-piggyback], [site:mysite], [tcp:tcp]
Labels:                 [cmk/check_mk_server:yes], [cmk/os_family:linux]
Host groups:            mylinuxservers
Contact groups:         all
Agent mode:             Normal Checkmk agent, or special agent if configured
Type of agent:
  TCP: 192.168.178.34:6556
  Process piggyback data from /omd/sites/mysite/tmp/check_mk/piggyback/mycmkserver
Services:
Type of agent:          TCP (port: 6556)
Is aggregated:          no
Services:
  checktype        item              params
  ---------------- ----------------- ------------
  cpu_loads        None              (5.0, 10.0)
  kernel_util      None              {}
...
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

4.8. Informations sur les plugins de supervision

Checkmk fournit en standard un grand nombre de plugins de supervision prêts à l'emploi. À chaque version, quelques nouveaux plugins de supervision sont ajoutés, et la version 2.4.0 en comprend déjà plus de 2 000. Trois options de l'instruction « cmk » vous permettent d'accéder à des informations sur ces plugins de supervision.

cmk -L affiche une liste de tous les plugins avec leur nom, leur type et une description. Parallèlement, tous les plugins que vous avez vous-même écrits et qui sont stockés dans ~/local/ seront également répertoriés.

Les types suivants sont possibles :

agent

Évalue les données provenant de plugins d'agent ou d'agents spéciaux. L'agent est (normalement) récupéré via le port TCP 6556.

snmp

Assure la supervision des périphériques SNMP.

active

Lance une vérification active. Cela inclut les plugins tiers compatibles avec Nagios pour lesquels Checkmk se contente d'adopter la configuration.

La liste peut bien sûr être filtrée simplement à l'aide de l'grepe si vous recherchez quelque chose de spécifique :

OMD[mysite]:~$ cmk -L | grep f5
f5_bigip_apm                      snmp   F5 Big-IP: Number of Current SSL/VPN Connections
f5_bigip_chassis_temp             snmp   F5 Big-IP: Chassis Temperature
f5_bigip_cluster                  snmp   F5 Big-IP: Cluster State, Up to Firmware Version 10
f5_bigip_cluster_status           snmp   F5 Big-IP: Active/Active or Passive/Active Cluster Status (< V11.2)
f5_bigip_cluster_status_v11_2     snmp   F5 Big-IP: Active/Active or Passive/Active Cluster Status (> V11.2)
f5_bigip_cluster_v11              snmp   F5 Big-IP: Cluster State for Firmware Version >= 11
f5_bigip_conns                    snmp   F5 Big-IP: Number of Current Connections
f5_bigip_cpu_temp                 snmp   F5 Big-IP: CPU Temperature
f5_bigip_fans                     snmp   F5 Big-IP: System Fans
f5_bigip_interfaces               snmp   F5 Big-IP: Special Network Interfaces
f5_bigip_mem                      snmp   F5 Big-IP: Usage of Memory
f5_bigip_pool                     snmp   F5 Big-IP: Load Balancing Pools
f5_bigip_psu                      snmp   F5 Big-IP: Power Supplies
f5_bigip_snat                     snmp   F5 Big-IP: Source NAT
f5_bigip_vcmpfailover             snmp   F5 Big-IP: Active/Active or Passive/Active vCMP Guest Failover Status
f5_bigip_vcmpguests               snmp   F5 Big-IP: Show Failover States of all vCMP Guests Running on a vCMP Host
f5_bigip_vserver                  snmp   F5 Big-IP: Virtual Servers
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Si vous souhaitez obtenir plus d'informations sur un plugin donné, vous pouvez consulter la documentation sous forme de page de manuel à l'aide de cmk -M :

OMD[mysite]:~$ cmk -M f5_bigip_pool
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Cela produit le résultat suivant :

Example of a check plug-in manual page.

L'utilisation de la commande « cmk -m » sans autre option permet d'accéder à un catalogue complet de toutes les pages de manuel des plugins de supervision.

OMD[mysite]:~$ cmk -m
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Vous pouvez naviguer de manière interactive dans ce catalogue :

Main menu for selecting a manual page.
Submenu for selecting a manual page.

5. Fichiers de configuration

Connaître l'emplacement et la structure des fichiers de configuration peut souvent aider à résoudre des problèmes et à identifier des erreurs, par exemple, dans les extensions téléchargées depuis Checkmk Exchange ou programmées par vos soins.

La comparaison entre les fichiers d'Setups et les fichiers de configuration présentée dans ce chapitre n'a pas pour but d'encourager la modification des fichiers de configuration à l'aide de scripts. S'il est nécessaire d'automatiser les modifications de configuration, cela peut être fait en toute sécurité et sans effets secondaires à l'aide de l'API REST.

Important

N'apportez aucune modification aux fichiers de configuration à moins d'y avoir été explicitement invité par un représentant du support Checkmk, car…​ Il y a des pièges !

5.1. Où se trouve la documentation ?

Pas ici. Les fichiers de configuration sont définis par les composants qui les écrivent et les lisent. En fin de compte, seule l'analyse du code source et des tests associés permet de révéler la structure de la configuration stockée dans le système de fichiers.

Notez également que les formats des fichiers de configuration peuvent changer d'une version de correctif à l'autre. Dans ce cas, des routines de migration assurent la conversion des formats de données modifiés.

De plus, les unités utilisées peuvent différer entre l’affichage dans l’Setupe et le stockage dans le fichier de configuration. Cela s’applique, par exemple, à l’affichage des périodes ou des températures.

L'exemple suivant présente un ensemble complet de paramètres pour le plugin de supervision qui effectue la supervision des systèmes de fichiers dans Checkmk (ici dans une version antérieure). En raison du grand nombre de paramètres, la capture d'écran a été divisée en deux parties et mise en forme avec une petite police :

“Complete parameter set of the check plug-in for monitoring file systems.”

La section correspondante dans le fichier de configuration proprement dit se présente ainsi (avec une mise en forme un peu plus soignée) :

{ 'inodes_levels'      : (10.0, 5.0),
  'levels'             : (80.0, 90.0),
  'levels_low'         : (50.0, 60.0),
  'magic'              : 0.8,
  'magic_normsize'     : 20,
  'show_inodes'        : 'onlow',
  'show_levels'        : 'onmagic',
  'show_reserved'      : True,
  'subtract_reserved'  : False,
  'trend_mb'           : (100, 200),
  'trend_perc'         : (5.0, 10.0),
  'trend_perfdata'     : True,
  'trend_range'        : 24,
  'trend_showtimeleft' : True,
  'trend_timeleft'     : (12, 6)},

Comme on peut le constater, il y a ici plus de 10 paramètres différents, chacun suivant sa propre logique. Certains sont configurés à l’aide de nombres à virgule flottante (0.8), d’autres à l’aide de nombres entiers (24), certains à l’aide de mots-clés ('onlow'), d’autres à l’aide de valeurs booléennes (True), et enfin certains à l’aide de tuples tels que ((5.0, 10.0)).

Cet exemple ne présente qu'un seul des plus de 2 000 plugins de supervision disponibles. De plus, Checkmk reconnaît d'autres configurations comme paramètres de contrôle : pensez notamment aux périodes, aux règles de l'Event Console, aux profils d'utilisateurs et bien plus encore.

Tip

En ce qui concerne les noms des répertoires de fichiers, des fichiers ou même du contenu des fichiers, vous trouverez souvent l’abréviation wato. WATOest l’abréviation de Web Administration Tool — l’outil de configuration de Checkmk jusqu’à la version 1.6.0 incluse. À partir de la version 2.0.0, les fonctions de WATO ont été reprises par le menu Setup, ou Setup en abrégé. Bien que WATO ait été complètement remplacé par Setup dans l’interface web, il subsiste dans les noms des fichiers et des répertoires.

5.2. Quel fichier de configuration est actuellement utilisé ?

Il existe une instruction pratique pour déterminer quel fichier Setup vient d'être modifié : find. En l'appelant avec les paramètres suivants, vous trouverez tous les fichiers (-type f) dans ~/etc/ qui ont été modifiés au cours de la dernière minute (-mmin -1) :

OMD[mysite]:~$ find ~/etc/ -mmin -1 -type f
/omd/sites/mysite/etc/check_mk/conf.d/wato/rules.mk
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

La base de la configuration est toujours le répertoire ~/etc/check_mk/. Celui-ci est divisé en différents domaines, dont la plupart sont liés à une fonctionnalité spécifique. Chaque domaine dispose d'un répertoire se terminant par .d, à partir duquel tous les fichiers se terminant par .mk sont automatiquement lus par ordre alphanumérique.

5.3. Fichiers de configuration et d'installation

Au sein des répertoires de configuration .d/, il existe toujours un sous-répertoire nommé wato, par exemple ~/etc/check_mk/conf.d/wato/. Le service Setup ne lit et n'écrit généralement que dans ce répertoire. Cependant, le service responsable du répertoire de configuration lit également les autres fichiers situés dans son « propre » répertoire .d.

Si des fichiers se trouvent en dehors du répertoire wato/, ils ont soit été créés manuellement à un moment donné dans le but d’apporter des modifications effectives mais non visibles dans l’Setup, soit ils ont été créés par d’autres composants de Checkmk.

Fichiers et dossiers verrouillés

Divers mécanismes d'automatisation fonctionnant au sein de Checkmk ou accédant à Checkmk depuis l'extérieur (par exemple via l'API REST) peuvent apporter des modifications de configuration. Dans certains cas, il est souhaitable que les ordinateurs hôtes et les dossiers créés de cette manière soient visibles et vérifiables dans le répertoire Setup, mais il n'est pas souhaitable que des modifications soient apportées par des utilisateurs « humains ». Dans de tels cas, les ordinateurs hôtes ou les dossiers peuvent être verrouillés.

Vous pouvez reconnaître un fichier « hosts.mk » d'un ordinateur hôte verrouillé grâce à la ligne comportant l'attribut « lock » :

hosts.mk
# Created by WATO
# encoding: utf-8

_lock = True

Lorsque vous ouvrez un tel dossier dans l’Setup, le message suivant s’affiche au-dessus de la liste des ordinateurs hôtes :

“Message indicating that editing hosts function in the folder is locked.”

Toutes les actions nécessitant une modification du fichier d’hosts.mk sont alors verrouillées dans l’interface graphique. Cela n’affecte toutefois pas la reconnaissance du service. Les services configurés sur un ordinateur hôte sont stockés sous ~/var/check_mk/autochecks/.

Les propriétés des dossiers peuvent également être verrouillées. Cela s’effectue via une entrée dans le fichier `.wato` du dossier. Dans le dictionnaire du fichier, la clé `lock` prend alors la valeur `True` :

.wato
{'title': 'My folder',
 'attributes': {},
 'num_hosts': 1,
 'lock': True,
 'lock_subfolders': False,
 '__id': '7f2a8906d3c3448fac8a379e2d1cec0e'}

Si la valeur de la clé lock_subfolders est définie sur True, la création et la suppression de sous-dossiers sont empêchées.

5.4. Contenu et syntaxe des fichiers

Les fichiers de configuration peuvent être des fichiers texte consultables dans n’importe quel éditeur, ou des fichiers binaires nécessitant des outils spécifiques. Les fichiers texte respectent la syntaxe Python, mais leur traitement par Checkmk présente certaines différences :

  • Les fichiers contenant des affectations de variables (=) sont exécutés comme un script, par exemple hosts.mk.

  • Les fichiers qui ne contiennent que des valeurs simples ou des dictionnaires Python sont lus comme des variables, par exemple : .wato.

Le codage de caractères UTF-8 est toujours utilisé. Si vous devez apporter des modifications pour quelque raison que ce soit, assurez-vous que le fichier modifié puisse toujours être analysé par Python.

Les fichiers binaires ont l'extension .pb, qui signifie « Protocol Buffers » et est parfois également appelé « Protobuf ». Ce format, développé par Google pour la sérialisation de la configuration et des messages, peut être écrit et lu avec un faible dépassement. Cependant, des outils spéciaux sont nécessaires pour le visualiser. Le paquet Checkmk comprend protoc, qui effectue de nombreuses tâches simples. Par exemple, ce qui suit fournit un aperçu « brut » du dernier état d'un CMC arrêté :

OMD[mysite]:~$ cat ~/var/check_mk/core/state.pb | protoc --decode_raw | less
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Pour une analyse plus détaillée des fichiers Protobuf, vous pouvez utiliser protoscope.

5.5. Vérification des fichiers de configuration

Si vous soupçonnez que des fichiers de configuration sont corrompus (par exemple en raison d'un support de données défectueux), vous pouvez les faire checker. Checkmk fournit à cet effet le programme « cmk-validate-config » qui, contrairement à « cmk-update-config » (appelé lors d’une mise à jour du logiciel), n’effectue aucune modification telle que la migration des formats de données. « cmk-validate-config» vérifie à la fois la syntaxe (parenthèses, affectations correctes, etc.) et, en partie, la sémantique (types de données utilisés et présence de certaines clés). Si le programme détecte des erreurs de syntaxe, le premier fichier endommagé s’affichera :

OMD[mysite]:~$ cmk-validate-config
Cannot read in configuration file etc/check_mk/conf.d/wato/rules.mk: invalid syntax (rules.mk, line 42)
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Si les fichiers checkés sont OK, une liste de tous les fichiers examinés s'affichera :

OMD[mysite]:~$ cmk-validate-config
The following mk files have passed the validation:
  etc/check_mk/multisite.d/wato/roles.mk...................... Passed
  etc/check_mk/conf.d/wato/groups.mk.......................... Passed
  etc/check_mk/multisite.d/wato/groups.mk..................... Passed
  etc/check_mk/conf.d/wato/passwords.mk....................... Passed
  etc/check_mk/conf.d/wato/notifications.mk................... Passed
  etc/check_mk/multisite.d/wato/tags.mk....................... Passed
  etc/check_mk/multisite.d/sites.mk........................... Passed
  etc/check_mk/multisite.d/broker_connections.mk.............. Passed
  etc/check_mk/multisite.d/wato/user_connections.mk........... Passed
  etc/check_mk/multisite.d/wato/users.mk...................... Passed
  etc/check_mk/conf.d/wato/contacts.mk........................ Passed
  etc/check_mk/multisite.d/wato/configuration_bundles.mk...... Passed
  etc/check_mk/conf.d/wato/timeperiods.mk..................... Passed
  etc/check_mk/conf.d/wato/rules.mk........................... Passed
  etc/check_mk/conf.d/wato/opentelemetrytest/rules.mk......... Passed
Copier les instructions dans le presse-papiers
Instruction(s) copiée(s) avec succès dans le presse-papiers !
L'accès en écriture au presse-papiers a été refusé !

Last modified: Mon, 02 Feb 2026 13:33:08 GMT via commit 6a4536036
Sur cette page