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. |
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. |
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
À partir de Checkmk 2.4.0, vous pouvez recevoir des métriques OpenTelemetry dans
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.
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 :
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 » :

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.

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.
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 ».
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:

Effectuez les réglages suivants dans la case de dialogue « Connection properties » :
Définissez Connector type sur OpenTelemetry collector data.
Le dossier
OpenTelemetryTestsert 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): »

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 » :

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) :
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.

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.

3. Fichiers et répertoires
| Chemin d'accès au fichier | Description |
|---|---|
|
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. |
|
Fichier journal du collecteur OpenTelemetry |
|
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. |
|
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). |
