Accès illimité 24h/24 à tous nos livres & vidéos ! Découvrez la Bibliothèque Numérique ENI. Cliquez ici.
  1. Livres et vidéos
  2. Prometheus et Grafana - Surveillez vos applications et composants système

Prometheus et Grafana Surveillez vos applications et composants système

Bientôt disponible !
Suivez-nous pour être informé dès la sortie

Présentation

Avec ce livre, illustré par de nombreux exemples de mise en œuvre, les administrateurs système comme les développeurs apprendront à déployer l’outil de surveillance Prometheus, interfacé avec l’outil de visualisation de données Grafana, pour mieux maîtriser la surveillance de leurs applications ou de leurs composants système.

L’auteur commence pour cela par présenter l’intégration de Prometheus à de nombreux systèmes ou applications tels que Linux, Docker Swarm, Kubernetes, Spring Boot, PostgreSQL ou encore MySQL/MariaDB, sans que cela nécessite des connaissances approfondies pour chacun d'eux. Les concepts à connaître a minima pour réaliser ce travail seront toutefois présentés.

Le lecteur découvre ensuite comment interfacer Prometheus à Grafana, ainsi que l'automatisation des différentes tâches nécessaires à l’intégration de ces deux outils dans les applications ou systèmes, à commencer par la mise en place sous Linux.

La suite du livre traite de la surveillance du système ainsi que de la gestion des accès (certificats HTTPS, authentification, autorisation via LDAP ou OAuth). Un chapitre est également consacré à la mise en place d'alertes transmises par e-mail ou à l'aide de notifications Slack. Les mécanismes de découverte automatique des containers avec Docker Swarm ou Kubernetes ainsi que le choix de tableaux de bord suite à la mise en place de cAdvisor sont détaillés. Par ailleurs, un chapitre en fin de livre est dédié à l'installation d'un opérateur pour gérer Prometheus dans Kubernetes.

Tout un ensemble de chapitres présente ensuite la surveillance des briques applicatives classiques (bases de données, applications Spring Boot ou Flask) mais également le suivi de composants externes tels que l’API d'un partenaire ou plus simplement des briques hardware sur lesquelles il n'est pas possible d'installer d'exporteur Prometheus.

Pour finir, l'auteur détaille les mécanismes d'agrégation et d'archivage vers des supports de stockage longue durée comme InfluxDB.

Les exemples et le code source du livre sont téléchargeables sous forme d'archives sur le site www.editions-eni.fr et disponibles également sur GitHub (instructions incluses au début du livre).

Table des matières

  • Avant-propos
    • 1. Présentation de Prometheus et Grafana
      • 1.1 Origine de Prometheus
      • 1.2 Origine de Grafana
    • 2. Contexte
      • 2.1 Une brève histoire de l’univers de la surveillance informatique
      • 2.2 Environnement cloud et containers Docker
      • 2.3 Introduction de Prometheus et Grafana
  • Introduction
    • 1. Cibles et objectifs de l’ouvrage
    • 2. Prérequis techniques et ressources documentaires
      • 2.1 Prérequis techniques
      • 2.2 Ressources documentaires
      • 2.3 Récupération des fichiers d’exemples
    • 3. Présentation générale
      • 3.1 Prérequis
      • 3.2 Mise en place de Prometheus et Grafana
      • 3.3 Surveillance des containers
      • 3.4 Gestion des tableaux de bord et des alertes
      • 3.5 Mise en place d’exporteurs avancés
      • 3.6 Archivage et agrégation d’instance Prometheus
      • 3.7 Conventions utilisées
  • Architecture de Prometheus
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Architecture de Prometheus
      • 2.1 Contexte
      • 2.2 Liste des composants de l’architecture de Prometheus
      • 2.3 Langage PromQL
      • 2.4 Format de communication de Prometheus
        • 2.4.1 Contraintes de communication
        • 2.4.2 Description du format
        • 2.4.3 Exposition de la donnée
        • 2.4.4 Déclaration des points de collecte
      • 2.5 Restitution et alertes dans Prometheus
    • 3. Quelques notions sur le format YAML
      • 3.1 Déclaration de couples clés/valeurs
      • 3.2 Les tableaux en YAML
      • 3.3 Les structures clé/valeur ou table de hachage
      • 3.4 Tableau de table de hachage
  • Découverte de Prometheus
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Lancement de Prometheus sous Linux
      • 2.1 Contexte
      • 2.2 Installation de Prometheus
      • 2.3 Configuration de Prometheus
        • 2.3.1 Présentation de la configuration par défaut
        • 2.3.2 Test de la configuration
        • 2.3.3 Structure globale de la configuration
        • 2.3.4 Définition des points de collecte
      • 2.4 Lancement de Prometheus
      • 2.5 Consultation de la console Prometheus
    • 3. Les métriques dans Prometheus
      • 3.1 Contexte
      • 3.2 Les types de métriques compteurs et jauges
      • 3.3 Métriques résumés et histogrammes
        • 3.3.1 Présentation des métriques résumés et histogrammes
        • 3.3.2 Métrique résumé ou sommaire (summary)
        • 3.3.3 Métriques histogrammes et quantile
        • 3.3.4 Calcul de quantiles et exemple de calculs de disponibilité
        • 3.3.5 Conseils d’utilisation sur les histogrammes
      • 3.4 Quelques bonnes pratiques à suivre
        • 3.4.1 Nom de la métrique
        • 3.4.2 Unités
    • 4. Agent de surveillance système
      • 4.1 Contexte
      • 4.2 Lancement de l’exporteur système
        • 4.2.1 Télécharger l’archive de l’exporteur
        • 4.2.2 Décompression et lancement
        • 4.2.3 Accès à l’interface de l’agent
        • 4.2.4 Intégration de l’exporteur
        • 4.2.5 Prise en compte de la modification
    • 5. Console de Prometheus
      • 5.1 Contexte
      • 5.2 Activation de la console
      • 5.3 Tableau de bord des nœuds système
      • 5.4 Tableau de bord de Prometheus
      • 5.5 Principe de fonctionnement des tableaux de bord
  • Installation de Grafana
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Lancement de Grafana sous Linux
      • 2.1 Contexte
      • 2.2 Installation de Grafana
        • 2.2.1 Installation à l’aide du paquet Debian
        • 2.2.2 Utilisation de la source de paquets de Grafana
      • 2.3 Démarrage de Grafana
        • 2.3.1 Inventaire des éléments créés
        • 2.3.2 Compte et groupe de service
        • 2.3.3 Prise en compte du nouveau service
        • 2.3.4 Activation et désactivation du service
        • 2.3.5 Gestion des services de systemd
        • 2.3.6 Démarrage et arrêt du service
    • 3. Configuration de Grafana
      • 3.1 Connexion en tant qu’administrateur
      • 3.2 Personnalisation de l’interface
      • 3.3 Ajout d’une source de données Prometheus
      • 3.4 Import des tableaux de bord de suivi de Prometheus
        • 3.4.1 Écran d’import des tableaux de bord
        • 3.4.2 Tableau de bord de suivi de Prometheus
        • 3.4.3 Tableau de bord de Grafana
  • Découverte de Grafana
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Découverte de Grafana
      • 2.1 Contexte
      • 2.2 Accès à l’écran d’exploration (Explorer)
      • 2.3 Création d’un tableau de bord sur la charge système
        • 2.3.1 Qu’est-ce que la charge système ?
        • 2.3.2 Compter le nombre de cœurs d’une machine
        • 2.3.3 Combinaison du nombre de cœurs et de la charge système
        • 2.3.4 Jointure des vecteurs de données
        • 2.3.5 Récupération des labels de la partie gauche
      • 2.4 Création d’un tableau de bord
        • 2.4.1 Ajout d’un premier panneau
        • 2.4.2 Sauvegarde du tableau de bord
      • 2.5 Ajout d’un panneau sur l’activité processeur
        • 2.5.1 Métrique de l’activité processeur
        • 2.5.2 Fonction de transformation
        • 2.5.3 Utilisation de la fonction rate
        • 2.5.4 Ajout d’un nouveau panneau
        • 2.5.5 Formatage des légendes
    • 3. Répertoires dans Grafana
      • 3.1 Contexte
      • 3.2 Classement des tableaux de bord à l’aide de répertoires
        • 3.2.1 Création de répertoires (folder)
        • 3.2.2 Déplacement d’un tableau de suivi
    • 4. Listes de tableaux de bord
      • 4.1 Contexte
      • 4.2 Création d’une liste de lecture
      • 4.3 Utilisation d’une liste de lecture
      • 4.4 Lancement automatique dans un navigateur
        • 4.4.1 Choix de la station d’affichage
        • 4.4.2 Option de lancement de la liste de lecture
        • 4.4.3 Lancement de la liste de lecture
        • 4.4.4 Lancement à l’ouverture de la session graphique Linux
    • 5. Historique et création d’instantanés
      • 5.1 Contexte
      • 5.2 Historique des tableaux de bord
      • 5.3 Créer un instantané de tableau de bord
        • 5.3.1 Principe du mécanisme
        • 5.3.2 Création d’un instantané local
        • 5.3.3 Partage d’instantané via Raintank
      • 5.4 Gestion des instantanés
  • Intégration au système
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Intégration de Prometheus
      • 2.1 Contexte
      • 2.2 Prérequis
      • 2.3 Préparation des prérequis système
        • 2.3.1 Arborescence de lancement de Prometheus
        • 2.3.2 Création du compte de service
      • 2.4 Affectation de volumétrie (étape optionnelle)
        • 2.4.1 Principe de fonctionnement des volumes logiques
        • 2.4.2 Choix du groupe de disques
        • 2.4.3 Formatage du volume
        • 2.4.4 Montage du disque
        • 2.4.5 Recopie des données
      • 2.5 Préparation des fichiers de Prometheus
        • 2.5.1 Décompression des binaires
        • 2.5.2 Création du répertoire de configuration de Prometheus
      • 2.6 Définition du service système
        • 2.6.1 Structure du fichier système
        • 2.6.2 Section Unit
        • 2.6.3 Section Service
        • 2.6.4 Section Install
        • 2.6.5 Débogage en cas de problème de démarrage
    • 3. Intégration de l’exporteur système
      • 3.1 Contexte
      • 3.2 Prérequis
      • 3.3 Création du compte de service
      • 3.4 Décompression des binaires de l’exporteur
      • 3.5 Création du service système
      • 3.6 Prise en compte et démarrage du service
      • 3.7 Débogage en cas de problème de démarrage
    • 4. Aller plus loin avec l’exporteur système
      • 4.1 Contexte
      • 4.2 Aide en ligne de l’exporteur
      • 4.3 Indicateurs par défaut
      • 4.4 Indicateurs optionnels disponibles
      • 4.5 Activation de l’état des services de systemd
      • 4.6 Filtrer les modules à interroger
      • 4.7 Création de métriques personnalisées
        • 4.7.1 Origine du besoin
        • 4.7.2 Principe de fonctionnement et activation
        • 4.7.3 Compter le nombre d’appels CRON
        • 4.7.4 Création du script
        • 4.7.5 Mise à disposition du résultat
        • 4.7.6 Lancement automatique du script
        • 4.7.7 Vérification de la fraîcheur des données
    • 5. Exporteur système pour Windows
      • 5.1 Contexte
      • 5.2 Téléchargement
      • 5.3 Installation
      • 5.4 Configuration de l’exporteur à l’installation
      • 5.5 Branchement de Prometheus
  • Protection des accès
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Gestion des accès externes
      • 2.1 Contexte
      • 2.2 Prérequis
      • 2.3 Installation de Nginx
      • 2.4 Configuration de Nginx
        • 2.4.1 Gestion du service associé à Nginx
        • 2.4.2 Configuration de Nginx par défaut
        • 2.4.3 Configuration de l’accès à Prometheus
        • 2.4.4 Activation de l’accès à Prometheus
        • 2.4.5 Configuration et activation de l’accès à Grafana
    • 3. Chiffrement des communications à l’aide de Let’s Encrypt
      • 3.1 Contexte
      • 3.2 Mise en place du chiffrement avec Let’s Encrypt
        • 3.2.1 Principe de génération des certificats avec Let’s Encrypt
        • 3.2.2 Installation de Certbot
        • 3.2.3 Génération des certificats
        • 3.2.4 Configuration de Nginx suite à la migration
      • 3.3 Automatisation du renouvellement des certificats
        • 3.3.1 Commande de renouvellement
        • 3.3.2 Présentation de l’outil Crontab
        • 3.3.3 Définition d’un travail
    • 4. Contrôle des accès sur Grafana
      • 4.1 Contexte
      • 4.2 Définition d’utilisateurs dans Grafana
        • 4.2.1 Origine du besoin
        • 4.2.2 Création de comptes locaux
        • 4.2.3 Modifications à apporter
        • 4.2.4 Test des modifications
      • 4.3 Branchement à un annuaire LDAP
        • 4.3.1 Prérequis
        • 4.3.2 Configuration de l’accès à l’annuaire
        • 4.3.3 Utilisation des groupes LDAP
      • 4.4 Protection par OAuth2
        • 4.4.1 Principe de fonctionnement de OAuth2
        • 4.4.2 Création des accès OAuth2 pour Grafana dans GitHub
        • 4.4.3 Configuration de Grafana
        • 4.4.4 Test des accès
    • 5. Contrôle des accès sur Prometheus
      • 5.1 Contexte
      • 5.2 Contrôle des accès par mot de passe/htpasswd
        • 5.2.1 Principe de fonctionnement
        • 5.2.2 Configuration de l’accès à Prometheus
      • 5.3 Contrôle des accès par OAuth2
        • 5.3.1 Utilisation du proxy oauth2-proxy
        • 5.3.2 Création des accès OAuth2 pour Prometheus dans GitHub
        • 5.3.3 Installation du proxy OAuth2
        • 5.3.4 Configuration et lancement du proxy OAuth2
        • 5.3.5 Branchement de Nginx sur le proxy OAuth2
        • 5.3.6 Connexion à Prometheus et installation de l’application
      • 5.4 Intégration du proxy au système
        • 5.4.1 Corrections à apporter
        • 5.4.2 Recopie du binaire oauth2-proxy
        • 5.4.3 Création du fichier associé au service
        • 5.4.4 Prise en compte du service et démarrage
      • 5.5 Contrôler les accès par annuaire LDAP
        • 5.5.1 Solutions disponibles
        • 5.5.2 Authentification par sous-requête
      • 5.6 Installation du proxy d’authentification LDAP
        • 5.6.1 À propos de nginx-ldap-auth
        • 5.6.2 Lancement du proxy
        • 5.6.3 Configuration de Nginx
  • Déploiement via containers
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Déploiement de Prometheus et Grafana dans Docker
      • 2.1 Contexte
      • 2.2 Installation de Docker
        • 2.2.1 Installation de Docker Community Edition sur Ubuntu
        • 2.2.2 Installation alternative
        • 2.2.3 Configuration des accès à Docker
        • 2.2.4 Vérification installation de Docker
      • 2.3 Initialisation du mode Docker swarm/stack
      • 2.4 Installation de Prometheus et Grafana
        • 2.4.1 Déclaration du service Prometheus dans la stack Docker
        • 2.4.2 Déploiement de la stack
        • 2.4.3 Ajout du service Grafana
      • 2.5 Gestion de la persistance
        • 2.5.1 Présentation du mécanisme
        • 2.5.2 Déclaration de la persistance
        • 2.5.3 Création des répertoires de persistance
        • 2.5.4 Démarrage et vérification des services
        • 2.5.5 Exemples d’erreurs de démarrage
      • 2.6 Configuration de Prometheus
      • 2.7 Configuration de Grafana
        • 2.7.1 Présentation du mécanisme de provisionnement
        • 2.7.2 Définition de la source de données Prometheus
        • 2.7.3 Modification de la définition du service Grafana
  • Supervision de containers
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Supervision de Docker et gestion du cycle de vie
      • 2.1 Contexte
      • 2.2 Configuration de Docker
      • 2.3 Ajout de la supervision de Docker
        • 2.3.1 Modification de la définition de la stack Docker
        • 2.3.2 Modification de la configuration de Prometheus
        • 2.3.3 Prise en charge de la nouvelle configuration
      • 2.4 Rechargement à chaud de la configuration de Prometheus
        • 2.4.1 Activation du point d’entrée
        • 2.4.2 Options par défaut du container
        • 2.4.3 Modification à appliquer à la définition du service
        • 2.4.4 Test de rechargement de la configuration
    • 3. Suivi des métriques système
      • 3.1 Contexte
      • 3.2 Prérequis
      • 3.3 Intégration de l’exporteur système (node-exporter)
        • 3.3.1 Exposition de la problématique
        • 3.3.2 Utilisation de la couche réseau de l’hôte
        • 3.3.3 Déclaration du service
        • 3.3.4 Supervision de l’exporteur système dans Prometheus
    • 4. Suivi des containers à l’aide de cAdvisor
      • 4.1 Contexte
      • 4.2 Définition des services applicatifs
        • 4.2.1 Définition des réseaux applicatifs et de surveillance
        • 4.2.2 Définition des services applicatifs
        • 4.2.3 Modification des services existants
      • 4.3 Intégration de cAdvisor
        • 4.3.1 Définition du service cAdvisor
        • 4.3.2 Consultation de la console cAdvisor
        • 4.3.3 Intégration de cAdvisor dans Prometheus
  • Découverte automatique
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Intégration de Prometheus à Docker Swarm
      • 2.1 Contexte
      • 2.2 Ajout d’un nœud au cluster Docker Swarm
        • 2.2.1 Installation du moteur Docker
        • 2.2.2 Récupération du jeton de connexion
        • 2.2.3 Enregistrement du nœud courant
        • 2.2.4 Vérification de la liste des nœuds
      • 2.3 Déploiement global
        • 2.3.1 Test de bascule de charge
        • 2.3.2 Déploiement global
        • 2.3.3 Module de découverte Docker Swarm de Prometheus
        • 2.3.4 Configuration de l’accès au moteur Docker
        • 2.3.5 Généralisation de la configuration
      • 2.4 Récupération des labels de Docker Swarm
        • 2.4.1 Principe de fonctionnement
        • 2.4.2 Consultation des labels disponibles
        • 2.4.3 Injection des labels dans Prometheus
      • 2.5 Découverte automatique des containers
        • 2.5.1 Généralisation du mécanisme de découverte
        • 2.5.2 Sélection des containers à scruter
        • 2.5.3 Éliminations des containers non accessibles
        • 2.5.4 Alimentation du label job
        • 2.5.5 Configuration complète
  • Ajout de tableaux de bord
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Gestion des tableaux de bord
      • 2.1 Contexte
      • 2.2 Import d’un tableau de bord
        • 2.2.1 Présentation de la page de recherche des tableaux de bord
        • 2.2.2 Recherche et choix d’un tableau de bord pour l’exporteur système
        • 2.2.3 Import du tableau de bord
        • 2.2.4 Utilisation du tableau de bord de l’exporteur système
      • 2.3 Navigation temporelle dans Grafana
        • 2.3.1 Définition d’un intervalle de temps relatif
        • 2.3.2 Intervalle de temps absolu
        • 2.3.3 Les fuseaux horaires
        • 2.3.4 Zoom sur un intervalle de temps
    • 3. Automatisation de l’import par API
      • 3.1 Contexte
      • 3.2 Création de la clé d’API
        • 3.2.1 Génération de la clé depuis l’interface de Grafana
        • 3.2.2 Structure de la clé
        • 3.2.3 Utilisation de la commande jq
      • 3.3 Lancement d’un import de tableau de bord
        • 3.3.1 Principe de fonctionnement du script de mise à jour
        • 3.3.2 Initialisation des variables
        • 3.3.3 Téléchargement du tableau de bord
        • 3.3.4 Préparation de la requête
        • 3.3.5 Lancement de la création du tableau de bord
        • 3.3.6 Consultation du tableau de bord
      • 3.4 Manipulation des tableaux de bord
        • 3.4.1 Exemple d’opérations à disposition
        • 3.4.2 Liste des répertoires (folder)
        • 3.4.3 Recherche de tableaux de bord et de répertoires
    • 4. Utilisation du mécanisme d’approvisionnement
      • 4.1 Présentation du mécanisme
      • 4.2 Déclaration de l’emplacement des tableaux de bord
        • 4.2.1 Structure du fichier d’approvisionnement automatique
        • 4.2.2 Création d’un fichier d’approvisionnement
        • 4.2.3 Préparation du répertoire des tableaux de bord
      • 4.3 Prise en compte des modifications
      • 4.4 Gestion des tableaux de bord
        • 4.4.1 Dépôt des fichiers de tableau de bord
        • 4.4.2 Suppression d’un tableau de bord
  • Intégration de Prometheus avec Kubernetes
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Intégration de Prometheus dans Kubernetes
      • 2.1 Contexte
      • 2.2 Création d’un cluster Kubernetes à l’aide de Kind
        • 2.2.1 Prérequis
        • 2.2.2 Téléchargement de Kind
        • 2.2.3 Initialisation du cluster Kubernetes à l’aide de Kind
        • 2.2.4 Téléchargement de kubectl
        • 2.2.5 Déplacement de la commande kubectl
        • 2.2.6 Vérification de la communication avec le cluster Kind
      • 2.3 Quelques rappels sur Kubernetes
        • 2.3.1 Les objets nécessaires à l’exercice
        • 2.3.2 Les espaces de noms
        • 2.3.3 Les pods
        • 2.3.4 Les nœuds d’un cluster
        • 2.3.5 Les services
      • 2.4 Déploiement de Prometheus dans Kubernetes
        • 2.4.1 Création d’un objet déploiement
        • 2.4.2 Démarrage du pod de Prometheus
        • 2.4.3 Accéder au pod de Prometheus
      • 2.5 Branchement de Prometheus à l’API de Kubernetes
        • 2.5.1 Configuration de Prometheus à l’aide d’annotations Kubernetes
        • 2.5.2 Branchement de Prometheus sur le composant Kubelet
        • 2.5.3 Modèle de sécurité RBAC de Kubernetes
        • 2.5.4 Création du compte de service
        • 2.5.5 Affectation des droits au compte de service
      • 2.6 Configuration des accès de Prometheus
        • 2.6.1 Vérification des cibles de Prometheus
        • 2.6.2 Utilisation du protocole HTTPS
        • 2.6.3 Configuration des accès TLS
        • 2.6.4 Gestion de l’authentification/autorisation
        • 2.6.5 Gestion des labels
      • 2.7 Récupération des informations de cAdvisor
      • 2.8 Les autres sources de données
        • 2.8.1 Liste des sources disponibles
        • 2.8.2 Labels disponibles par défaut pour node
        • 2.8.3 Labels disponibles pour les services
        • 2.8.4 Labels disponibles pour les pods
        • 2.8.5 Labels disponibles pour les endpoints
        • 2.8.6 Labels disponibles pour les objets Ingress
      • 2.9 Découverte automatique de services/pods
        • 2.9.1 Bonnes pratiques sur les labels et annotations
        • 2.9.2 Utilisation d’annotations pour la sélection
        • 2.9.3 Annotation d’un pod pour surveillance
  • Alertes et notifications
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Gestion des alertes avec Grafana
      • 2.1 Contexte
      • 2.2 Alerte sur l’activité CPU
        • 2.2.1 Alerte à définir
        • 2.2.2 Définition du seuil de déclenchement
      • 2.3 Canaux de notifications
        • 2.3.1 Origine du besoin
        • 2.3.2 Création du canal de notifications
        • 2.3.3 Branchement de l’alerte au canal de notification
        • 2.3.4 Autres mécanismes de notifications à disposition
    • 3. Gestionnaire d’alertes de Prometheus
      • 3.1 Contexte
      • 3.2 Mise en place d’une alerte dans Prometheus
        • 3.2.1 Configuration des alertes dans Prometheus
        • 3.2.2 Mise en place d’une alerte
        • 3.2.3 Vérification du fichier de règles
        • 3.2.4 Redémarrage de Prometheus et vérification de l’alerte
        • 3.2.5 Récupération des alertes générées par Prometheus
        • 3.2.6 Utilisation des notifications de Prometheus dans Grafana
        • 3.2.7 Ajout d’annotations manuelles
      • 3.3 Installation du gestionnaire d’alertes (alertmanager)
        • 3.3.1 Présentation
        • 3.3.2 Décompression des fichiers du gestionnaire d’alertes
        • 3.3.3 Préparation de l’arborescence du gestionnaire d’alertes
        • 3.3.4 Configuration du gestionnaire d’alertes
        • 3.3.5 Création et démarrage du service système
        • 3.3.6 Branchement de Prometheus
      • 3.4 Notification par e-mail
        • 3.4.1 Configuration de l’envoi d’e-mails
        • 3.4.2 Configuration de la mise en page
      • 3.5 Exemple d’intégration avec Slack
        • 3.5.1 Origine du besoin
        • 3.5.2 Définition d’un canal de communication vers Slack
        • 3.5.3 Intégration de Slack avec le gestionnaire d’alertes
        • 3.5.4 Personnalisation du message
      • 3.6 Mécanisme d’inhibition
        • 3.6.1 Contexte de mise en place
        • 3.6.2 Alerte sur la collecte des exporteurs
        • 3.6.3 Simplification de l’inclusion de machines (file_sd_configs)
        • 3.6.4 Mise en place du mécanisme d’inhibition
      • 3.7 Inhibition des alertes en fonction des heures
        • 3.7.1 Présentation du mécanisme à mettre en place
        • 3.7.2 Détermination de la période de l’heure d’été/hiver
        • 3.7.3 Calcul de l’heure de Paris et détermination des heures ouvrées
        • 3.7.4 Désactivation des alertes en période creuse
        • 3.7.5 Désactivation des alertes en dehors des heures ouvrées
  • Surveillance de base de données
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Surveillance de base de données PostgreSQL
      • 2.1 Contexte
      • 2.2 Exporteur PostgreSQL
        • 2.2.1 Présentation de l’exporteur
        • 2.2.2 Installation de l’exporteur
        • 2.2.3 Définition de la connexion à la base
        • 2.2.4 Lancement de l’exporteur
        • 2.2.5 Lancement de l’exporteur depuis le compte postgres
        • 2.2.6 Intégration au système
        • 2.2.7 Options de lancement de l’exporteur
        • 2.2.8 Intégration avec Prometheus
      • 2.3 Exemples de règles de surveillance
        • 2.3.1 À propos
        • 2.3.2 Suivi du déroulement de la collecte
        • 2.3.3 Surveillance du décalage de la réplication source maître/réplicats
      • 2.4 Tableau de bord pour Grafana
      • 2.5 Gestion des alertes
        • 2.5.1 Création d’un nouveau récepteur
        • 2.5.2 Sélection du destinataire en fonction des labels
    • 3. Surveillance base de données MySQL/MariaDB
      • 3.1 Contexte
      • 3.2 Exporteur MySQL
        • 3.2.1 Présentation de l’exporteur
        • 3.2.2 Installation de l’exporteur
        • 3.2.3 Définition de la connexion à la base
        • 3.2.4 Création d’un utilisateur spécifique
        • 3.2.5 Intégration au système
        • 3.2.6 Options de lancement de l’exporteur
        • 3.2.7 Intégration avec Prometheus
      • 3.3 Exemples de règles de surveillance
        • 3.3.1 À propos
        • 3.3.2 Suivi du déroulement de la collecte
        • 3.3.3 Surveillance du décalage de la réplication source maître/réplicats
        • 3.3.4 Surveillance des connexions
      • 3.4 Tableau de bord pour Grafana
      • 3.5 Gestion des alertes
  • Surveillance blackbox, SNMP et Push Gateway
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Surveillance par boîte noire (black box)
      • 2.1 Contexte
      • 2.2 Mise en place de l’exporteur Blackbox
        • 2.2.1 Présentation de l’exporteur
        • 2.2.2 Installation de l’exporteur
        • 2.2.3 Configuration de l’exporteur
        • 2.2.4 Lancement de l’exporteur et intégration au système
      • 2.3 Test du fonctionnement de l’exporteur
      • 2.4 Diagnostic en cas d’erreur
        • 2.4.1 Utilisation de l’option debug
        • 2.4.2 Interface de l’exporteur blackbox
        • 2.4.3 Configuration communication IPv6/IPv4
        • 2.4.4 Configuration TLS
      • 2.5 Surveillance de services non-HTTP
        • 2.5.1 Vérification de l’ouverture d’un port TCP
        • 2.5.2 Écriture d’une requête de vérification
        • 2.5.3 Support du protocole TLS implicite
        • 2.5.4 Support du mécanisme startTLS
        • 2.5.5 Autres exemples
      • 2.6 Intégration dans Prometheus
      • 2.7 Exemples d’alertes
        • 2.7.1 Métriques disponibles
        • 2.7.2 Définition d’alerte
    • 3. Support du protocole SNMP
      • 3.1 Contexte
      • 3.2 Mise en place de l’exporteur
        • 3.2.1 Présentation de l’exporteur
        • 3.2.2 Installation de l’exporteur
        • 3.2.3 Modules disponibles et création de nouveaux modules
        • 3.2.4 Lancement de l’exporteur et intégration au système
      • 3.3 Surveillance d’un switch réseau
        • 3.3.1 Test de la communication
        • 3.3.2 Configuration de l’authentification
        • 3.3.3 Intégration à Prometheus
    • 4. Surveillance à l’aide du module Push Gateway
      • 4.1 Contexte
      • 4.2 Limitations
      • 4.3 Mise en place du composant Push Gateway
        • 4.3.1 Présentation du composant Push Gateway
        • 4.3.2 Installation de l’exporteur
        • 4.3.3 Lancement du composant et intégration au système
      • 4.4 Dépôt de métriques
        • 4.4.1 Présentation des métriques à exposer
        • 4.4.2 Dépôt des métriques
        • 4.4.3 Connexion à l’interface de la Push Gateway
      • 4.5 Branchement à Prometheus
      • 4.6 Métriques automatiques et exemples d’alertes
        • 4.6.1 Métriques disponibles
        • 4.6.2 Définition d’alerte
      • 4.7 Suppression des métriques
  • Suivi d’applications modernes
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Instrumentation d’application Java/Spring Boot
      • 2.1 Contexte
      • 2.2 Surveillance Prometheus avec Spring Boot
        • 2.2.1 Création d’une application Spring Boot de démonstration
        • 2.2.2 Installation des prérequis
        • 2.2.3 Lancement de la compilation et exécution du programme
        • 2.2.4 Ajout du point d’entrée actuator
        • 2.2.5 Activation du point d’entrée des métriques Prometheus
      • 2.3 Intégration dans Prometheus
        • 2.3.1 Ajout de la surveillance
        • 2.3.2 Métriques disponibles
        • 2.3.3 Exemples d’alertes
    • 3. Instrumentation d’applications Python/Flask
      • 3.1 Contexte
      • 3.2 Préparation des prérequis de l’application Python Flask
        • 3.2.1 À propos de Flask
        • 3.2.2 Installation des prérequis Python et virtualenv
        • 3.2.3 Création de l’environnement de travail
        • 3.2.4 Installation des dépendances
      • 3.3 Création de l’application
        • 3.3.1 Déclaration des dépendances
        • 3.3.2 Page d’accueil
        • 3.3.3 Initialisation de l’application Flask
        • 3.3.4 Rattachement de l’index à la racine
        • 3.3.5 Lancement du programme
      • 3.4 Intégration dans Prometheus
        • 3.4.1 Ajout de la surveillance
        • 3.4.2 Métriques disponibles
        • 3.4.3 Exemples d’alertes
    • 4. Agent JMX exporter
      • 4.1 Contexte
      • 4.2 À propos des MBeans
      • 4.3 Mise en place de l’exporteur
        • 4.3.1 Téléchargement de l’exporteur JMX
        • 4.3.2 Mise en place et configuration de l’exporteur
        • 4.3.3 Conseils sur la mise au point
      • 4.4 Intégration dans Prometheus
        • 4.4.1 Ajout de la surveillance
        • 4.4.2 Métriques disponibles
    • 5. Création de tableaux de bord as code
      • 5.1 Contexte
      • 5.2 Principe de fonctionnement
      • 5.3 Mise en place des prérequis
        • 5.3.1 Installation du binaire de Jsonnet
        • 5.3.2 Récupération de la librairie Grafonnet
      • 5.4 Création d’un tableau de bord
        • 5.4.1 Génération du tableau de bord
        • 5.4.2 Import du tableau de bord
      • 5.5 Suivi des connexions Prometheus
        • 5.5.1 Définition d’un objet Row
        • 5.5.2 Ajout d’indicateurs
      • 5.6 Mise en page du tableau de bord
        • 5.6.1 Constats
        • 5.6.2 Configuration des caractéristiques du tableau de bord
        • 5.6.3 Taille du graphique
        • 5.6.4 Mise en page des données
      • 5.7 Ajout de sélecteurs
      • 5.8 Indicateurs textuels
      • 5.9 Conseils de mise au point et gestion des extensions
  • Agrégation et archivage
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Fédération d’instances Prometheus
      • 2.1 Contexte
      • 2.2 Mise en place de la fédération
        • 2.2.1 Consultation du point de fédération
        • 2.2.2 Mise en place de la fédération
        • 2.2.3 Exemples de fédération
      • 2.3 Haute disponibilité et montée en charge
        • 2.3.1 Prometheus et la haute disponibilité
        • 2.3.2 Scalabilité horizontale
    • 3. Archivage dans InfluxDB
      • 3.1 Contexte
      • 3.2 Présentation d’InfluxDB
      • 3.3 Mise en place d’InfluxDB
        • 3.3.1 Installation d’InfluxDB
        • 3.3.2 Surveillance d’InfluxDB
        • 3.3.3 Connexion à la base et création du schéma de stockage
      • 3.4 Activation du sous-échantillonnage
        • 3.4.1 Police de rétention
        • 3.4.2 Police de rétention par défaut
        • 3.4.3 Création de polices de rétention et alimentation
      • 3.5 Branchement de Prometheus à InfluxDB
        • 3.5.1 Configuration de Prometheus
        • 3.5.2 Haute disponibilité d’InfluxDB
        • 3.5.3 Inspection du contenu de la base après branchement
      • 3.6 Autres moteurs disponibles
        • 3.6.1 Liste de moteurs disponibles
        • 3.6.2 Un mot sur Thanos
  • Opérateur Prometheus pour Kubernetes
    • 1. Objectifs du chapitre et prérequis
      • 1.1 Contexte et prérequis
      • 1.2 Fichiers téléchargeables
    • 2. Installation de Prometheus Operator à l’aide de Helm
      • 2.1 Contexte
      • 2.2 Présentation de l’opérateur Prometheus
      • 2.3 Recherche du paquet à installer sur Artifact HUB
      • 2.4 Installation du binaire Helm
      • 2.5 Ajout du dépôt prometheus-community
      • 2.6 Recherche du paquet et consultation des options
      • 2.7 Configuration du chart Helm
        • 2.7.1 Champs principaux de configuration
        • 2.7.2 Configuration des champs ingress
        • 2.7.3 Persistance des données
        • 2.7.4 Attribution des ressources
        • 2.7.5 Configuration utilisée pour l’installation
        • 2.7.6 Lancement de l’installation
        • 2.7.7 Gestion des mises à jour
      • 2.8 Nouveaux objets supportés
        • 2.8.1 Consultation de la liste des objets CRD
        • 2.8.2 Définition d’un point de collecte
    • 3. Exporteurs additionnels disponibles
      • 3.1 Contexte
      • 3.2 Utilisation de l’exporteur Blackbox
        • 3.2.1 Installation de l’exporteur Blackbox
        • 3.2.2 Utilisation de l’exporteur Blackbox
      • 3.3 Utilisation du composant Push Gateway
        • 3.3.1 Installation du composant Push Gateway
        • 3.3.2 Test du composant Push Gateway
      • Index

Auteur

Yannig PERRÉEn savoir plus

Administrateur système depuis de nombreuses années, Yannig PERRÉ est aujourd'hui spécialiste de la gestion d'applications embarquées dans des containers. Il associe naturellement à ce savoir-faire différents outils pour gérer les problématiques d'installation, de résilience, de scalabilité ainsi que de publication des applications sur Internet. Associée à sa longue expérience du monde open source, cette expertise lui permet de transmettre aux lecteurs des livres réellement efficaces sur la mise en œuvre de Kubernetes, d'Ansible ou de Prometheus.

Caractéristiques

  • Niveau Expert
  • Nombre de pages 599 pages
  • Parution décembre 2021
    • Livre (broché) - 17 x 21 cm
    • ISBN : 978-2-409-03174-8
    • EAN : 9782409031748
    • Ref. ENI : EPPROGRA

Téléchargements

En complétant ce formulaire, vous acceptez d'être contacté afin de recevoir des informations sur nos produits et services ainsi que nos communications marketing. Vous aurez la possibilité de vous désabonner de nos communications à tout moment. Pour plus d'informations sur notre politique de protection des données, cliquez ici.
  • Des fichiers complémentaires (73 Ko)