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. Avant-propos

CEE Il existe déjà un article distinct intitulé « Supervision de Kubernetes » qui décrit la configuration de la supervision de Kubernetes et de ses différentes variantes. Cependant, étant donné qu’OpenShift en général, et sa configuration en particulier, fonctionnent de manière légèrement différente, nous avons décidé de créer un article distinct pour décrire la configuration de la supervision d’OpenShift et, respectivement, des clusters Kubernetes qui y sont exécutés. Dans la suite de cet article, nous désignerons ces mêmes clusters — pour plus de lisibilité et de simplicité — sous le nom de clusters OpenShift. La supervision des clusters OpenShift n’est possible qu’avec l’une des éditions commerciales de Checkmk.

2. Introduction

Checkmk vous aide à effectuer la supervision de vos clusters OpenShift. À partir de la version 2.3.0, vous pouvez utiliser n'importe laquelle de nos éditions commerciales pour effectuer la supervision des objets suivants :

  • Clusters

  • Déploiements

  • Nœuds

  • Pods

  • DaemonSets

  • StatefulSet

  • Tâches cron

Pour obtenir la liste complète de tous les plugins de supervision disponibles pour la supervision de Kubernetes, consultez notre Catalogue de plugins de supervision.

2.1. Configuration de l'environnement de supervision

Étant donné que les clusters OpenShift peuvent également subir très rapidement des changements importants en termes de nombre et d'emplacement des composants individuels, nous vous recommandons de créer une instance Checkmk distincte pour la supervision d'un environnement OpenShift. Elle peut ensuite être connectée à l'instance centrale comme d'habitude via la procédure de supervision distribuée.

2.2. Le processus de supervision d'OpenShift dans Checkmk

Checkmk effectue la supervision de vos clusters OpenShift de deux manières :

  • Checkmk récupère les informations de base directement depuis votre cluster via l'API Kubernetes. Cela permet déjà de récupérer les états des nœuds et des conteneurs. La plupart des métadonnées de vos pods et déploiements sont également obtenues de cette manière. Pour une supervision complète, il manque toutefois encore quelque chose à ce stade. Cette méthode ne permet pas de répondre à des questions telles que la charge générée par un déploiement particulier sur le processeur, ou la quantité de mémoire actuellement occupée par un DaemonSet.

  • Comme Prometheus est déjà installé par défaut dans les clusters OpenShift, Checkmk peut interroger précisément cette instance Prometheus au sein de votre environnement OpenShift et vous présenter les données obtenues selon la méthode habituelle de Checkmk. Pour une supervision complète de votre environnement OpenShift, nous vous recommandons vivement de configurer cette connexion. De plus, l’utilisation des tableaux de bord Kubernetes n’est utile que si les données de charge de travail appropriées sont disponibles.

3. Création des prérequis dans le cluster

Pour pouvoir surveiller l'environnement OpenShift dans Checkmk, vous devez d'abord créer les conditions préalables dans votre cluster.

3.1. Créer un espace de nommage et un compte de service

Vous devez d'abord configurer un espace de nommage et un compte de service pour Checkmk dans votre cluster OpenShift. Le moyen le plus rapide d'y parvenir est d'utiliser l'interface CLI d'OpenShift (oc en abrégé).

Dans l'exemple suivant, nous nommerons cet espace de nommage « checkmk-monitoring ». Si vous souhaitez ou devez choisir un autre nom, vous devrez également effectuer cette modification lors de la création du compte de service.

user@host:~$ oc create namespace checkmk-monitoring
namespace/checkmk-monitoring created
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 compte de service, avec son rôle associé et ce que l'on appelle le RoleBinding, peut être créé en spécifiant notre fichier YAML prêt à l'emploi publié sur GitHub. Checkez son contenu, puis exécutez l'instruction suivante :

user@host:~$ oc apply -f https://raw.githubusercontent.com/Checkmk/checkmk_kube_agent/checkmk_docs/deploy/kubernetes/checkmk-serviceaccount.yaml
serviceaccount/checkmk created
clusterrole.rbac.authorization.k8s.io/checkmk-metrics-reader created
clusterrolebinding.rbac.authorization.k8s.io/checkmk-metrics-reader-binding created
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 également télécharger d'abord ce fichier YAML, le personnaliser selon vos besoins, puis appliquer la commande « oc apply -f » à cette copie locale du fichier.

3.2. Obtenir les ressources API, le jeton et le certificat

Grâce à l'outil en ligne de commande oc, vous pouvez désormais également extraire toutes les informations de votre cluster, que vous devrez généralement spécifier pour configurer l'agent spécial. Si vous avez modifié le nom du compte de service ou l'espace de nommage, vous devez modifier ces informations comme décrit pour les instructions suivantes.

Récupérer la ressource de l'API Kubernetes

La ressource de l'API Kubernetes est affichée par oc à l'aide de l'instruction suivante :

user@host:~$ oc cluster-info
Kubernetes control plane is running at https://api.myopenshift.example.com:6443
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é !

Cette adresse, y compris le port spécifié, sera ensuite incluse dans le champ « API server connection > Endpoint » de la règle Kubernetes.

Récupérer la ressource de l'API Prometheus

Il peut être plus facile d'obtenir l'adresse de la ressource API de l'instance Prometheus de votre cluster via l'interface graphique d'OpenShift. En tant qu'administrateur, vous trouverez une liste plus ou moins longue via Networking > Routes. Vous devriez également y trouver une route dont le nom contient probablement le mot Prometheus. Cela dépend simplement de la configuration de votre cluster OpenShift. Sous « Location », vous trouverez alors l'URL même dont vous aurez besoin ultérieurement pour le champ « Prometheus API endpoint ».

Vous pouvez également obtenir le nom de domaine complet (FQDN) en ligne de commande à l'aide de l'instruction suivante.

user@host:~$ oc get routes --all-namespaces | grep prometheus
openshift-monitoring    prometheus-k8s   prometheus-k8s-openshift-monitoring.apps.myopenshift.example.com   prometheus-k8s  web  reencrypt/Redirect   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é !

Il vous suffira ensuite d'ajouter le protocole en préfixe à la chaîne prometheus-k8s-openshift-monitoring.apps.myopenshift.example.com dans le champ Prometheus API endpoint de la règle Kubernetes.

Récupérer le jeton

L'instruction suivante permet de lire le jeton, qui est généralement celui que vous devrez spécifier ultérieurement pour l'agent spécial dans Checkmk :

user@host:~$ oc get secret $(oc describe sa checkmk -n checkmk-monitoring | grep 'Tokens' | awk '{ print $2 }') -n checkmk-monitoring -o=jsonpath='{.data.token}' | base64 --decode
eyJhbGciOiJSUzI1NiIsImtpZCI6IkxFbDdZb25t...
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é !

Laissez le shell ouvert avec ces informations ou copiez le jeton à un emplacement auquel vous pourrez accéder lors de la configuration suivante dans Checkmk.

Récupérer le certificat

L'instruction suivante permet de récupérer le certificat que vous devrez ensuite indiquer sous «Global settings» dans Checkmk.

user@host:~$ oc get secret $(oc describe sa checkmk -n checkmk-monitoring | grep 'Tokens' | awk '{ print $2 }') -n checkmk-monitoring -o=jsonpath='{.data.ca\.crt}' | base64 --decode
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é !

Laissez le shell ouvert avec ces informations, ou copiez le certificat — y compris les lignes « BEGIN CERTIFICATE » et « END CERTIFICATE » — vers un emplacement auquel vous pourrez accéder lors de la configuration suivante dans Checkmk.

Si la sortie est vide ici, la même recommandation s'applique que dans la section précédente « Récupérer le jeton ».

4. Configuration de la supervision dans Checkmk

Ensuite, dans l'interface graphique de Checkmk, nous passons à la configuration de l'agent spécial et d'une règle permettant de créer automatiquement des ordinateurs hôtes pour vos objets Kubernetes. Toutefois, pour configurer l'agent spécial, il convient tout d'abord de remplir certaines conditions préalables :

4.1. Stockage du mot de passe (jeton) dans Checkmk

Il est préférable de stocker le mot de passe (jeton) du compte de service dans le coffre-fort à mot de passe de Checkmk. C'est l'option la plus sûre, car elle vous permet de séparer de manière organisée le stockage et l'utilisation du mot de passe. Vous pouvez également saisir le mot de passe directement en texte clair lors de la création de la règle (voir ci-dessous).

Pour ajouter le mot de passe au coffre-fort à mot de passe de Checkmk, accédez à Setup > General > Passwords > Add password. Dans notre exemple, nous utilisons My OpenShift Token comme identifiant et titre :

kubernetes password

4.2. Importation du certificat CA d’un compte de service dans Checkmk

Pour que Checkmk fasse confiance à la chaîne de certificats du compte de service, vous devez l’enregistrer dans Checkmk. Copiez tout ce qui se trouve ici — y compris les lignes contenant BEGIN CERTIFICATE et END CERTIFICATE — puis ajoutez le certificat dans le menu de configuration sous « Setup > General > Global settings > Site management > Trusted certificate authorities for SSL » :

kubernetes ca

4.3. Création de l'hôte ferrouté

Créez un nouvel hôte dans Checkmk de la manière habituelle et nommez-le par exemple « myopenshiftclusterhost ». Comme le suggèrent le titre et le nom de l’hôte, celui-ci sert à collecter les données ferroutées ainsi qu’à effectuer l’affectation de tous les services et métriques au niveau du cluster. Étant donné que cet hôte reçoit des données exclusivement via l’agent spécial, veillez à définir l’option « IP address family » sur « No IP » dans les propriétés de l’hôte. Validez l’ensemble de cette configuration en cliquant sur le bouton « Save & view folder ».

Example setup for a cluster host with the important 'No IP' setting.

4.4. Configuration de la gestion dynamique des hôtes

Pour garantir la séparation entre les objets de différents clusters Kubernetes, il est généralement pratique de créer un dossier par cluster via Setup > Hosts > Add folder, dans lequel la gestion dynamique des hôtes peut créer automatiquement tous les hôtes d’un cluster. La création et l’utilisation d’un tel dossier sont toutefois facultatives.

Configurez ensuite une connexion pour les données ferroutées entrantes. Pour ce faire, accédez à Setup > Hosts > Dynamic host management > Add connection. Saisissez d'abord un titre, puis sous « Connection Properties », cliquez sur « show more ».

L'étape suivante, très importante, consiste à saisir l'hôte ferrouté précédemment créé sous « Restrict source hosts ».

Ensuite, sous « Piggyback creation options », cliquez sur « Add new element » et, sous « Create hosts in », sélectionnez le dossier créé précédemment.

Vous pouvez laisser les attributs par défaut sous « Host attributes to set » tels quels. Ceux-ci garantissent que Checkmk n'accepte que les données ferroutées provenant des ordinateurs hôtes créés automatiquement et ne tente pas, par exemple, de les pinguer ou d'y accéder via SNMP.

Dans un environnement OpenShift où les objets surveillables et surveillés apparaissent et disparaissent en permanence, il est généralement recommandé d’activer également l’option Automatically delete hosts without piggyback data. Le fonctionnement exact de cette option et les circonstances dans lesquelles les hôtes sont alors effectivement supprimés sont expliqués dans le chapitre consacré à la suppression automatique des hôtes de l’article sur la gestion dynamique des hôtes.

Enfin, activez l'option « Discover services during creation ».

La section « Connection Properties » de cette nouvelle connexion pourrait se présenter comme suit :

Example settings for a dynamic host management.

4.5. Personnalisation de la reconnaissance périodique du service

Par défaut, Checkmk effectue une reconnaissance du service toutes les deux heures et affiche le résultat de cette reconnaissance dans le service « Check_MK Discovery ». Vous trouverez ce paramètre dans le jeu de règles « Periodic service discovery ». Dans le contexte d’OpenShift, nous vous recommandons de créer une règle avec l’étiquette « cmk/kubernetes:yes » pour tous les ordinateurs hôtes. En effet, chaque hôte représentant des objets Kubernetes reçoit automatiquement cette étiquette de la part de Checkmk. Dans ce cas, vous devriez choisir un intervalle plus court que deux heures pour la reconnaissance du service, et également activer l’option « Automatically update service configuration ». Les paramètres de la capture d’écran ci-dessous ne sont que des exemples. Vous devrez déterminer au cas par cas ce qui convient le mieux à vos clusters.

An example setup for the periodic service discovery for Kubernetes objects.

Pour limiter cette règle à tous les ordinateurs hôtes de votre cluster, sous «Host labels», saisissez simplement «cmk/kubernetes:yes» dans le champ «Conditions». Toutefois, si vous souhaitez également créer des règles différentes pour différents clusters, utilisez simplement ici l'étiquette spécifique au cluster concerné. Ces étiquettes se présentent toujours sous la forme «cmk/kubernetes/cluster:mycluster».

Example a restriction to hosts using a cluster-specific label.

4.6. Configuration de l'agent spécial

Maintenant que toutes les conditions préalables ont été créées dans le cluster et dans Checkmk, vous pouvez vous concentrer sur la configuration de l'agent spécial. Vous y accédez via Setup > Agents > VM, cloud, container > Kubernetes. Créez une nouvelle règle avec Add rule.

Tout d’abord, vous devez attribuer un nom au cluster à superviser. Ce nom peut être défini librement selon vos préférences. Il sert à attribuer un nom unique à tous les objets provenant de ce cluster spécifique. Par exemple, si vous saisissez ici mycluster, les noms des ordinateurs hôtes de tous les pods de ce cluster commenceront par la suite par pod_mycluster. La partie suivante du nom de domaine sera alors toujours l'espace de nommage dans lequel cet objet Kubernetes existe. Par exemple, le nom de domaine d'un pod pourrait alors être pod_mycluster_kube-system_svclb-traefik-8bgw7.

Sous Token, sélectionnez maintenant l'entrée précédemment créée dans le coffre-fort à mot de passe Checkmk.

Sample cluster name and token selection.

Sous API server connection > Endpoint, Checkmk vous demande maintenant de saisir l’URL via laquelle votre serveur API Kubernetes peut être contacté. Le port n’est requis que si le service n’est pas fourni via un hôte virtuel. Saisissez ici l’adresse que vous avez déterminée dans la section Récupérer la ressource de l’API Kubernetes.

Si vous avez suivi ces instructions étape par étape jusqu’à présent et que vous avez, comme décrit ci-dessus, enregistré le certificat CA de votre cluster dans Checkmk, sélectionnez alors Verify the certificate sous « SSL certificate verification ».

Example for specifying the API server connection.

Activez l’option « Enrich with usage data », sélectionnez « Use data from OpenShift » dans le menu suivant, puis saisissez l’adresse Prometheus API endpoint que vous avez déterminée dans la section « Récupérer la ressource de l’API Prometheus ».

Example of specifying the cluster collector connection.

La liste sous « Collect information about…​ » vous permet de sélectionner les objets de votre cluster qui doivent être soumis à la supervision. Cette liste couvre les objets les plus pertinents. Si vous décidez également de soumettre à la supervision l'API Prometheus, veuillez vous reporter à l'aide en ligne de cette option.

Example list of a selection of Kubernetes objects that are to be monitored.

Les deux sélections suivantes vous permettent d’affiner davantage les objets à superviser. Si vous ne vous intéressez qu’aux objets de certains espaces de nommage, configurez ce paramètre en conséquence sous « Monitor namespaces ». Vous pouvez ici soit saisir des espaces de nommage individuels à superviser, soit exclure explicitement certains espaces de nommage de la supervision.

L'option « Cluster resource aggregation » vous permet de désigner les nœuds qui ne fournissent pas de ressources pour la charge de travail de votre cluster. Ces nœuds doivent être exclus du calcul des ressources disponibles. Sinon, il existe un risque que les goulots d'étranglement de capacité ne soient pas détectés. Nous excluons donc par défaut les nœuds control-plane et infra du calcul.

Example configuration for namespaces and resource aggregation.

En dernier recours, vous pouvez importer ce que l'on appelle des annotations depuis Kubernetes. Dans Checkmk, ces annotations deviennent des étiquettes d'hôte et peuvent ainsi être utilisées comme conditions dans des règles. Utilisez des expressions régulières pour spécifier quelles annotations doivent être importées. Consultez à nouveau l'aide en ligne détaillée à ce stade.

Remarque : l'option « Import all valid annotations » (Importer toutes les annotations) est fournie ici uniquement par souci d'exhaustivité. Nous ne recommandons pas d'importer toutes les annotations en une seule fois, car cela peut créer une très grande quantité d'étiquettes inutiles dans Checkmk.

Important : Sous « Conditions > Explicit hosts », vous devez maintenant saisir l'ordinateur hôte créé précédemment :

Rules for special agents must always be explicitly set to specific hosts, as seen here.

Enregistrez ensuite la règle et effectuez une reconnaissance du service pour cet ordinateur hôte. Les premiers services au niveau du cluster apparaîtront immédiatement ici :

Example view of the first service discovery after completing the configuration.

Activez maintenant toutes les modifications que vous avez apportées et laissez la gestion dynamique des hôtes faire le travail à partir de maintenant. Cela générera tous les ordinateurs hôtes pour vos objets Kubernetes en très courte période de temps.

5. Étiquettes pour les objets Kubernetes

Checkmk génère automatiquement des étiquettes pour des objets tels que les clusters, les déploiements ou les espaces de nommage lors de la reconnaissance du service. Toutes les étiquettes de ces objets générées automatiquement par Checkmk commencent par cmk/kubernetes/. Par exemple, un pod recevra toujours une étiquette provenant du nœud (cmk/kubernetes/node:mynode), une étiquette identifiant l’objet comme un pod (cmk/kubernetes/object:pod) et une étiquette pour l’espace de nommage (cmk/kubernetes/namespace:mynamespace). Cela facilite grandement la création de filtres et de règles pour tous les objets du même type ou situés dans le même espace de nommage.

6. Tableaux de bord et vues

6.1. Tableaux de bord Kubernetes

CEE Les éditions commerciales de Checkmk sont fournies avec six tableaux de bord intégrés pour Kubernetes. Pour pouvoir exploiter ces tableaux de bord, il est nécessaire d'avoir installé et configuré notre Cluster Collector. Plus précisément, ces tableaux de bord s'intitulent :

  • Kubernetes (Aperçu)

  • Cluster Kubernetes

  • Kubernetes DaemonSet

  • Déploiement Kubernetes

  • Espace de nommage Kubernetes

  • StatefulSet Kubernetes

Le point d'entrée est toujours le tableau de bord d'Kubernetes, auquel vous pouvez accéder via Monitor > Applications > Kubernetes :

Example of the overview dashboard.

Dans le tableau de bord Kubernetes, tous vos clusters sous supervision sont répertoriés sur le côté gauche. Cette liste de clusters constitue également votre point d'entrée pour explorer plus en détail les tableaux de bord. En cliquant sur le nom d'un cluster, vous accédez au tableau de bord Kubernetes Cluster correspondant au cluster sélectionné. Dans le tableau de bord Kubernetes Cluster, cliquer sur le nom correspondant vous permet d'accéder aux autres tableaux de bord dépendants du contexte :

Detail of the cluster dashboard with paths to the other dashboards.

6.2. L'inventaire matériel/logiciel

La supervision d’OpenShift avec Checkmk prend également en charge l’inventaire matériel/logiciel. Par exemple, dans le tableau de bord des clusters ci-dessus, cliquer sur l’ID du cluster (ici : mycluster) vous mènera à l’inventaire du cluster.

De la même manière, c'est-à-dire dans les autres tableaux de bord via les cases contenant les identifiants des objets, l'inventaire de chaque objet concerné peut être affiché. L'exemple suivant montre l'inventaire matériel/logiciel d'un pod :

kubernetes monitoring hw sw inventory

7. Check de l'installation

Dans l'interface graphique de Checkmk, vous pouvez vérifier que l'installation et la configuration ont été effectuées avec succès.

Les services les plus importants ici sont sans aucun doute Kubernetes API et Cluster collector. Ceux-ci doivent être présents sur l'ordinateur hôte du cluster que vous avez créé et doivent également afficher des informations spécifiques et réelles.

The most important services to check for a correct installation.

Sous Summary, le service Kubernetes API devrait normalement signaler Live, Ready, et si le Cluster Collector est configuré, il affichera idéalement Successfully queried usage data from Prometheus.

Dans le tableau de bord Kubernetes, vous pouvez déterminer très tôt si le Cluster Collector est en cours d'exécution et collecte des données dans un cluster. S'il est correctement configuré, le tableau de bord Kubernetes devrait ressembler à ceci :

Kubernetes dashboard with data for CPU and memory resources.

Si vous cliquez maintenant sur le nom du cluster ici, vous accéderez au tableau de bord « Kubernetes Cluster » (Collecteur de cluster) pour le cluster concerné. Ici, les trois cases « Primary datasource », « Cluster collector » et « API health » doivent être vertes et afficher « OK ».

A correctly-functioning cluster monitoring.

8. Suppression des composants de supervision d'OpenShift

8.1. Suppression du compte de service

Si vous avez utilisé notre fichier YAML par défaut pour créer le compte de service, vous pouvez également le supprimer comme suit :

user@host:~$ oc delete -f https://raw.githubusercontent.com/Checkmk/checkmk_kube_agent/checkmk_docs/deploy/kubernetes/checkmk-serviceaccount.yaml
serviceaccount "checkmk" deleted
clusterrole.rbac.authorization.k8s.io "checkmk-metrics-reader" deleted
clusterrolebinding.rbac.authorization.k8s.io "checkmk-metrics-reader-binding" deleted
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é !

8.2. Suppression de l'espace de nommage, si nécessaire

user@host:~$ oc delete namespace checkmk-monitoring
namespace "checkmk-monitoring" deleted
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, 15 Dec 2025 20:38:15 GMT via commit 3f5d3b342
Sur cette page