Checkmk
to checkmk.com
Tip

The functionality presented here is a technical preview, i.e. a preview of a new feature that will be subject to development and expansion until further notice. During this phase, it is possible that functionality will not only be added, but also modified in such a way that existing configurations will become obsolete and you will have to recreate them. We ask for your understanding in this matter.

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.

Tip

La fonctionnalité présentée ici est une préversion technique, c'est-à-dire un aperçu d'une nouvelle fonctionnalité qui fera l'objet de développements et d'extensions jusqu'à nouvel ordre. Au cours de cette phase, il est possible que des fonctionnalités soient non seulement ajoutées, mais également modifiées de telle sorte que les configurations existantes deviennent obsolètes et que vous deviez les recréer. Nous vous remercions de votre compréhension à cet égard.

1. Introduction

CEE À partir de Checkmk 2.4.0, vous pouvez recevoir des métriques OpenTelemetry dans CSE Checkmk Ultimate et les traiter dans la supervision. À cette fin, Checkmk est fourni avec un collecteur OpenTelemetry. Ce collecteur prend en charge les protocoles de transport gRPC et HTTP(S) en tant que destinataires dans une configuration de type « push ». En tant que scraper, il peut également collecter des données à partir de ressources Prometheus (dans une configuration de type « pull »).

En fonction des services OpenTelemetry identifiés, des hôtes peuvent être créés automatiquement grâce à la gestion dynamique des hôtes. Ces hôtes se voient ensuite attribuer des métriques OpenTelemetry en tant que services Checkmk par un agent spécial.

En résumé : trois composants (collecteur, gestion dynamique des hôtes et agent spécial) doivent interagir avant que les services puissent être détectés et les métriques générées. Vous devez donc configurer ces trois composants en premier lieu et n'activer les modifications en attente qu'à la fin.

Tip

Cet article décrit l'état de l'intégration d'OpenTelemetry au moment de la sortie de Checkmk 2.4.0 p10. Nous continuons à travailler à l'intégration des modifications ultérieures issues des versions de patch. Certaines des limitations décrites ont déjà été corrigées et des fonctionnalités fréquemment demandées ont été ajoutées. Veuillez vous reporter aux Werks relatifs à OpenTelemetry pour connaître l'état actuel de la version de Checkmk que vous utilisez.

2. Configuration

2.1. Activation du collecteur OpenTelemetry

Vous devez d'abord activer le collecteur lorsque l'instance est arrêtée. Pour ce faire, connectez-vous en tant que utilisateur de l'instance via la ligne de commande et utilisez l'instruction « omd config » dans le menu de configuration textuel :

OMD[mysite]:~$ omd config
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é !

Accédez à Addons et activez l'option « OPENTELEMETRY_COLLECTOR » :

 ┌──────────────────────────Addons─────────────────────────────
  ┌─────────────────────────────────────────────────────────  
 MKEVENTD                                      on        
 MKEVENTD_SNMPTRAP                             off       
 MKEVENTD_SYSLOG                               off       
 MKEVENTD_SYSLOG_TCP                           off       
 OPENTELEMETRY_COLLECTOR                       on        
 OPENTELEMETRY_COLLECTOR_SELF_MONITORING_PORT  14317     
 TRACE_RECEIVE                                 off       
 TRACE_SEND                                    off       
                                                            
 ─────────────────────────────────────────────────────────┘  
 ├─────────────────────────────────────────────────────────────  
                < Change  >        <Main menu>                │  
 ─────────────────────────────────────────────────────────────┘  
                                                                  

Vous n'avez pas besoin de modifier le port pour la supervision du collecteur, car il est défini sur le prochain port libre à partir de 14317, même si plusieurs instances sont utilisées.

Après avoir activé le collecteur, redémarrez l’instance avec omd start.

2.2. Configuration du collecteur OpenTelemetry

Accédez à Setup > Hosts > OpenTelemetry collector (experimental) et commencez à configurer un nouveau collecteur en cliquant sur le bouton « Add OpenTelemetry collector configuration » :

“The general properties of the OpenTelemetry collector.”

Dans General properties, attribuez un identifiant et un titre au nouveau collecteur. Pour « Site restriction », vous devez déplacer au moins une entrée de la gauche vers la droite. Dans la capture d'écran ci-dessus, l'instance locale mysite est la seule disponible.

“The specific properties of the OpenTelemetry collector.”

Paramètres de base

Veuillez prêter attention aux points suivants dans les propriétés du collecteur :

  • Vous devez configurer au moins l'une des deux ressources push (via gRPC ou HTTP) ou un scraper Prometheus (pull). La capture d'écran montre une ressource gRPC non chiffrée et non authentifiée sur le port par défaut 4317 pour toutes les adresses IPv4 (0.0.0.0).

  • Créez au moins un champ pour Host name computation. Dans l'exemple, l'option la plus simple a été sélectionnée : le champ « service.name » reçu via OpenTelemetry est utilisé comme nom de domaine dans Checkmk. Dans l'aide en ligne, vous trouverez plus d'informations sur les options permettant de créer des noms de domaine à partir des données OpenTelemetry.

Tip

Si vous souhaitez créer des noms de domaine plus complexes, enregistrez la configuration du collecteur et activez les modifications sans ajouter de règle pour l'Host name computation. Assurez-vous ensuite que les métriques sont envoyées au collecteur. Si vous ajoutez maintenant des règles pour l'Host name computation, des suggestions concernant les champs disponibles s'afficheront.

Envoi de journaux vers l'Event Console

OpenTelemetry offre également des options pour le transfert des messages de journal. Le collecteur peut être configuré pour les transférer au format syslog via TCP vers toute application capable de recevoir des messages syslog. Dans le contexte de Checkmk, le traitement des messages de journal par l'Event Console présente un intérêt particulier. Vous pouvez activer cette fonction à l'aide de la case à cocher « Send log messages to event console ».

Tip

Assurez-vous qu’OpenTelemetry Instrumentation garantit déjà que les messages de journalisation sont envoyés avec parcimonie. Si vous ne savez pas exactement ce qui arrive au serveur Checkmk, activez temporairement une Event Console locale qui écoute sur le port 514/TCP. Cela vous donnera une idée des volumes de données entrants avant de procéder à l’activation de l’Event Console.

Utilisez l'Save pour enregistrer le collecteur.

2.3. Configuration de la gestion dynamique des hôtes

Pour garantir la création automatique des hôtes, configurez une nouvelle connexion OpenTelemetry avec la gestion dynamique des hôtes. À titre de préparation — au moins pour les premiers tests —, nous vous recommandons de créer un dossier distinct dans lequel vous stockerez les hôtes OpenTelemetry générés automatiquement.

Pour configurer la nouvelle connexion pour la gestion dynamique des hôtes, accédez à Setup > Hosts > Dynamic host management > Add connection:

Properties of an OpenTelemetry connection in the dynamic host management.

Effectuez les réglages suivants dans la case de dialogue « Connection properties » :

  • Définissez Connector type sur OpenTelemetry collector data.

  • Le dossier OpenTelemetryTest sert de dossier de destination pour les nouveaux ordinateurs hôtes (Create hosts in) dans l'exemple.

  • Définissez le chemin d'accès à Host attributes en fonction de votre environnement système.
    À moins que vous n'ayez pris la peine de créer des noms d'hôtes existants lors de la configuration du collecteur OpenTelemetry, les hôtes créés automatiquement seront des hôtes virtuels qui ne sont utilisés que dans le contexte d'OpenTelemetry. Vous ne pouvez donc utiliser que des agents spéciaux comme agents de supervision (Configured API integrations, no Checkmk agent) et laisser les paramètres relatifs aux adresses IP sur No IP.

  • En cochant la case à cocher à l'adresse Service discovery, vous indiquez que la reconnaissance du service sera effectuée sur les ordinateurs hôtes générés automatiquement. Cela aboutit au résultat souhaité si l'agent spécial pour OpenTelemetry a été configuré et est actif.

  • Pour les autres paramètres, vous trouverez plus d'informations dans l'article consacré à la gestion dynamique des hôtes.

Terminez la nouvelle connexion avec Save.

2.4. Configuration de l'agent spécial

Pour garantir que les services Checkmk soient également générés, au moins une configuration de l’agent spécial OpenTelemetry doit être créée. La règle requise se trouve sous « Setup > Agents > Other integrations > OpenTelemetry (experimental): »

The rule for configuring the OpenTelemetry special agent.

Dans la case « OpenTelemetry (experimental) », décidez si vous souhaitez effectuer la supervision du collecteur OpenTelemetry lui-même — via le port qui s'est affiché lors de l'activation du collecteur.

Dans la condition de la règle, il est évident d’attribuer l’agent spécial au dossier dans lequel les ordinateurs hôtes seront créés automatiquement — dans l’exemple, il s’agit du dossier « OpenTelemetryTest ».

Enregistrez la règle sous le nom Save.

Maintenant que les trois composants — collecteur, gestion dynamique des hôtes et agent spécial — ont été configurés, vous devez activer les modifications en attente.

2.5. Envoi de données de test au collecteur

Vous souhaiterez probablement configurer le collecteur OpenTelemetry pour Checkmk, car quelque part dans votre environnement informatique, un élément génère déjà des métriques OpenTelemetry.

Si ce n’est pas encore le cas, ou si vous souhaitez tester rapidement la configuration d’exemple décrite dans cet article, vous pouvez le faire à l’aide de l’application d’exemple « Hello metric » fournie dans notre dépôt GitHub, qui s’exécute dans un environnement Python virtuel.

Il faut compter environ deux à trois minutes entre le moment où les premières données sont envoyées, la création de l’ordinateur hôte et la détection du service, avant que celui-ci ne devienne visible dans la supervision. L’image suivante montre les services de l’application d’exemple « Hello metric » :

The OpenTelemetry service created with the 'Hello metric' sample application.

Le nom de domaine hello-metric est généré à partir du nom du service fourni en option dans l’instruction opentelemetry-instrument — exactement comme spécifié dans la configuration du collecteur OpenTelemetry. Le nom du service OTel metric hellolevel dans Checkmk est généré à partir du nom de la métrique, avec le préfixe OTel metric ajouté par l’agent spécial.

Si vous activez l'option Monitor the collector dans la configuration de l'agent spécial, c'est-à-dire la supervision du collecteur, un certain nombre de services supplémentaires seront créés sur l'ordinateur hôte,

L'application d'exemple « Dice Roll » présentée sur le site web d'OpenTelemetry fonctionne de manière très similaire à « Hello métrique ». Cette application d'exemple est à bien des égards plus pratique que « Hello métrique ». Par exemple, « Dice Roll » envoie des métriques OpenTelemetry à chaque fois que le serveur d’application est appelé (et uniquement à ce moment-là !) et utilise le type de données « Compteur ». Vous pouvez utiliser l’environnement Python virtuel créé pour l’exemple « Hello metric » afin d’essayer également l’exemple « Dice Roll ». Cependant, vous devrez également installer le module Python flask (pip install flask) et créer le fichier app.py dans la version étendue avec les métriques, comme décrit dans cette instruction.

Dans l'appel suivant, remplacez le serveur Checkmk en tant que cible (ici 198.51.100.42 avec le port gRPC 4317) :

user@host:~$ opentelemetry-instrument \
    --traces_exporter console \
    --metrics_exporter otlp \
    --exporter_otlp_metrics_endpoint http://198.51.100.42:4317 \
    --logs_exporter console \
    --service_name dice-server \
    flask run -p 8080
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é !
Tip

La restriction à un seul point de données, qui s'appliquait jusqu'à la version Checkmk 2.4.0 p3, a été supprimée. Le ticket #18209 décrit comment les noms de métriques Checkmk sont générés pour les métriques OpenTelemetry comportant plusieurs points de données.

Votre serveur Flask est désormais prêt et accessible sur le port sélectionné (ici : 8080) pour lancer un dé à chaque appel. Vous pouvez consulter les données du dé, par exemple, via la sortie de curl -v http://localhost:8080/rolldice. Chaque lancer de dé que vous déclenchez de cette manière est transmis à Checkmk sous forme de point de données.

Au bout de quelques minutes, l’ordinateur hôte dice-server apparaîtra dans la supervision avec le service OTel metric dice.rolls. Celui-ci comporte six graphiques, de Value_1__Per_Sec à Value_6__Per_Sec, qui correspondent aux fréquences des chiffres de un à six obtenus jusqu’à présent. La raison de cette conversion est que les métriques OpenTelemetry utilisent des compteurs, qui ne peuvent qu’augmenter — un type de données qui n’est pas pris en charge par Checkmk. Pour un affichage plus clair, Checkmk effectue donc la conversion en tenant compte de la composante temporelle.

La capture d’écran montre l’un de ces graphiques, qui repose sur les appels à /rolldice effectués une fois par seconde au cours de la période de supervision.

“Graph showing the rate at which the number 5 is rolled.”
Les métriques OpenTelemetry utilisent des traits de soulignement simples et doubles, et les unités sont ajoutées au nom de la métrique si elles sont fournies (ici : par sec, c'est-à-dire par seconde).

2.6. Personnalisation des services

Vous pouvez définir des valeurs seuils et d’autres paramètres pour les services à l’aide de la règle Setup > Services > Service monitoring rules > OpenTelemetry (experimental). Vous pouvez ici définir des règles pour des métriques individuelles ou pour toutes les métriques d’un service. La capture d’écran d’exemple montre la sélection du compteur pour les exceptions avec le numéro 5, comme indiqué ci-dessus. Les noms des métriques connues sont accessibles via la liste ou sous forme de suggestions lors de la saisie. Vous pouvez saisir des métriques qui ne sont pas encore connues mais dont vous savez qu’elles apparaîtront sous forme de texte libre.

En fonction du type de données fourni par le point de données OpenTelemetry, il peut être utile de calculer des taux. Ceci est utile pour les compteurs, par exemple pour les paquets réseau perdus. Si plusieurs sources de données fournissent des données attribuées au même service Checkmk, vous pouvez également spécifier si une agrégation (par exemple, somme ou moyenne) doit être effectuée ou si la priorité doit simplement être donnée aux points de données les plus récents, les plus élevés ou les plus bas d’un intervalle.

“Setting the service rules.”

3. Fichiers et répertoires

Chemin d'accès au fichier Description

~/var/check_mk/otel_collector/host_monitoring/

C'est ici que les données OpenTelemetry sont créées. Un sous-répertoire est créé pour chaque ordinateur hôte. Les fichiers qui y sont créés sont au format JSON.

~/var/log/otel-collector.log

Fichier journal du collecteur OpenTelemetry

~/tmp/check_mk/otel_collector/self+monitoring/

Répertoire temporaire dans lequel les données agrégées provenant du collecteur sont stockées en vue de leur évaluation par l'agent spécial.

~/tmp/check_mk/otel_collector/autocompleter/

Répertoire temporaire dans lequel sont stockés les fichiers requis par la fonction de suggestion (éléments de la liste et suggestions lors de la saisie).


Last modified: Wed, 07 Jan 2026 17:04:45 GMT via commit 92ab41519
Sur cette page