Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Prometheus et Grafana
  3. Opérateur Prometheus pour Kubernetes
Extrait - Prometheus et Grafana Surveillez vos applications et composants système
Extraits du livre
Prometheus et Grafana Surveillez vos applications et composants système
2 avis
Revenir à la page d'achat du livre

Opérateur Prometheus pour Kubernetes

Objectifs du chapitre et prérequis

1. Contexte et prérequis

Le chapitre sur l’intégration de Prometheus avec Kubernetes a pour vocation de faire comprendre comment les faire fonctionner ensemble. Toutefois, dans le cadre d’un système de production ce travail préliminaire est loin d’être suffisant et il reste un grand nombre de composants à intégrer :

  • L’interface de Grafana.

  • Les tableaux de bord de suivi de Kubernetes.

  • Les mécanismes d’alertes.

  • Etc.

Cette tâche est particulièrement complexe et peut réclamer une énergie très importante. Afin d’économiser ses efforts, l’utilisateur va découvrir comment s’appuyer sur des travaux d’intégrations existants, notamment via l’utilisation de recettes prêtes à l’emploi : les charts Helm.

2. Fichiers téléchargeables

Vous pouvez récupérer les exemples sur le repository GitHub suivant : https://github.com/EditionsENI/prometheus-grafana

Vous pouvez également récupérer ces fichiers dans l’archive chapitre-18.tar.gz depuis la page Informations générales.

Installation de Prometheus Operator à l’aide de Helm

1. Contexte

Helm est un outil qui permet de simplifier certaines opérations de déploiement dans Kubernetes. Il prend en charge tout le cycle de vie d’un paquet (installation, mise à jour et suppression) ainsi que la partie distribution des paquets (création, maintenance, mise à disposition, recherche, etc.). Dans ce qui va suivre, le lecteur déploiera l’opérateur Prometheus à l’aide de ce mécanisme.

Pour la suite, il est recommandé d’avoir des connaissances sur les objets classiques de Kubernetes (Déploiement, Service, etc.) et également d’avoir quelques notions sur les objets de type CRD (Custom Resource Definition).

De nombreux paquets sont disponibles sous forme de charts Helm. Ces derniers sont un assemblage des composants nécessaires au déploiement de logiciels mais également offrant une personnalisation possible à l’aide du mécanisme de go-template. Une fois ce travail d’intégration réalisé, le résultat peut être publié sous la forme de paquet dans des dépôts (en anglais repositories) de charts Helm.

Pour la suite, l’utilisateur abordera les techniques suivantes :

  • Découverte du portail de référence des charts Helm.

  • Ajout d’un dépôt de Charts.

  • Recherche de Charts.

  • Inspection des options de personnalisation.

  • Déploiement de charts Helm.

Le cluster Kubernetes doit disposer des prérequis suivants :

  • Mécanisme de génération de volumes persistants (PVC) fonctionnel.

  • Gestion automatique des certificats avec Let’s Encrypt.

  • Publication automatique des entrées DNS.

  • Gestion de la publication d’application à l’aide de Ingress.

Ces aspects peuvent représenter certaines difficultés pour leur mise en place. N’hésitez pas à consulter le livre sur le fonctionnement de Kubernetes du même auteur aux Éditions ENI.

2. Présentation de l’opérateur Prometheus

L’opérateur Prometheus dispose d’une meilleure intégration à Kubernetes et offre à l’utilisateur les fonctionnalités suivantes :

  • Définition de surveillance par défaut.

  • Intégration...

Exporteurs additionnels disponibles

1. Contexte

Lors de l’installation de l’opérateur Prometheus, le chart Helm installe les composants suivants :

  • L’opérateur Prometheus et un moteur Prometheus.

  • L’interface Grafana.

  • Le gestionnaire d’alertes.

  • Le gestionnaire de métriques Kubernetes (metrics-server).

  • L’exporteur système (à l’aide d’un objet DaemonSet).

Ceci constitue un très bon point de départ. Toutefois, certaines briques pourraient être intéressantes à ajouter, comme par exemple l’exporteur Blackbox, SNMP ou encore le composant Push Gateway. Tous ces exporteurs disposent de leur propre chart Helm.

2. Utilisation de l’exporteur Blackbox

a. Installation de l’exporteur Blackbox

L’exporteur Blackbox présenté plus tôt dans cet ouvrage est disponible sous forme de chart Helm dans le même dépôt de paquet que l’opérateur Prometheus. 

Avant de lancer la recherche, rechargez le cache de définition des paquets :

$ helm repo update 

Ceci fait, lancez une recherche avec le nom de l’exporteur à rechercher :

$ helm search repo blackbox 

Cette commande renvoie les informations suivantes :

NAME                                              VERSION ... 
prometheus-community/prometheus-blackbox-exporter 5.0.3   ... 

L’installation se fait ensuite de la même manière que pour l’opérateur Prometheus. L’exporteur ne nécessite toutefois aucune personnalisation. Il n’est donc pas nécessaire d’utiliser de fichier de configuration.

Voici la commande permettant de le déployer dans l’espace de noms monitoring :

$ helm upgrade --install blackbox \ 
      prometheus-community/prometheus-blackbox-exporter \ 
      --create-namespace --namespace monitoring 

Et ci-dessous le résultat renvoyé :

Release "blackbox" does not exist. Installing it now. 
W0819 08:36:01.464566 3352100 warnings.go:70] policy/v1beta1 
PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ 
... 
NAME: blackbox 
LAST DEPLOYED: Thu Aug 19 08:36:01 2021 
NAMESPACE: monitoring 
STATUS: deployed 
REVISION: 1 
TEST SUITE: None 
NOTES: 
See https://github.com/prometheus/blackbox_exporter/ for how to 
configure Prometheus and the Blackbox Exporter. 
 
1. Get the application URL by running these commands: 
 export POD_NAME=$(kubectl get pods --namespace monitoring -l 
"app.kubernetes.io/name=prometheus-blackbox 
exporter,app.kubernetes.io/instance=blackbox" -o 
jsonpath="{.items[0].metadata.name}") 
 export CONTAINER_PORT=$(kubectl get pod --namespace monitoring ...