• Aide
  • Eurêkoi Eurêkoi

Livre

Prometheus et Grafana : surveillez vos applications et composants système

Résumé

Destiné aux administrateurs système et aux développeurs, cet ouvrage explique comment déployer l'outil de surveillance Prometheus interfacé avec l'outil de visualisation de données Grafana afin de maîtriser la surveillance des applications et de leurs composants système. L'automatisation des tâches, la gestion des accès, la mise en place d'alertes et les tableaux de bord sont notamment détaillés. ©Electre 2021


  • Éditeur(s)
  • Date
    • C 2021
  • Notes
    • La couv. porte en plus : "En téléchargement : code source, exemples" ; "Informatique technique" ; "Version en ligne offerte ! pendant 1 an" ; "+ quiz"
    • La 4e de couv. indique : "Sur www.editions-eni.fr : les exemples et codes source"
    • Contient un "flashcode" permettant d'accéder à un contenu via Internet
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (599 p.) : ill. ; 22 cm
  • Collections
  • Sujet(s)
  • ISBN
    • 978-2-409-03174-8
  • Indice
    • 681.2 Programmation (généralités)
  • Quatrième de couverture
    • Prometheus et Grafana

      Surveillez vos applications et composants système

      Avec ce livre, illustré par de nombreux exemples de mise en oeuvre, 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, Kubemetes, 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 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 Kubemetes 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 Kubemetes.

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


  • Tables des matières
      • Prometheus et Grafana

      • Surveillez vos applications et composants système

      • Éditions Eni

      • Avant-propos
      • 1. Présentation de Prometheus et Grafana27
      • 1.1 Origine de Prometheus27
      • 1.2 Origine de Grafana28
      • 2. Contexte29
      • 2.1 Une brève histoire de l'univers de la surveillance informatique29
      • 2.2 Environnement cloud et containers Docker31
      • 2.3 Introduction de Prometheus et Grafana32
      • Chapitre 1
      • Introduction
      • 1. Cibles et objectifs de l'ouvrage33
      • 2. Prérequis techniques et ressources documentaires34
      • 2.1 Prérequis techniques34
      • 2.2 Ressources documentaires34
      • 2.3 Récupération des fichiers d'exemples35
      • 3. Présentation générale35
      • 3.1 Prérequis35
      • 3.2 Mise en place de Prometheus et Grafana36
      • 3.3 Surveillance des containers36
      • 3.4 Gestion des tableaux de bord et des alertes37
      • 3.5 Mise en place d'exporteurs avancés37
      • 3.6 Archivage et agrégation d'instance Prometheus38
      • 3.7 Conventions utilisées38
      • Chapitre 2
      • Architecture de Prometheus
      • 1. Objectifs du chapitre et prérequis39
      • 1.1 Contexte et prérequis39
      • 1.2 Fichiers téléchargeables39
      • 2. Architecture de Prometheus40
      • 2.1 Contexte40
      • 2.2 Liste des composants de l'architecture de Prometheus41
      • 2.3 Langage PromQL42
      • 2.4 Format de communication de Prometheus42
      • 2.4.1 Contraintes de communication42
      • 2.4.2 Description du format42
      • 2.4.3 Exposition de la donnée44
      • 2.4.4 Déclaration des points de collecte44
      • 2.5 Restitution et alertes dans Prometheus45
      • 3. Quelques notions sur le format YAML46
      • 3.1 Déclaration de couples clés/valeurs46
      • 3.2 Les tableaux en YAML47
      • 3.3 Les structures clé/valeur ou table de hachage48
      • 3.4 Tableau de table de hachage50
      • Chapitre 3
      • Découverte de Prometheus
      • 1. Objectifs du chapitre et prérequis51
      • 1.1 Contexte et prérequis51
      • 1.2 Fichiers téléchargeables51
      • 2. Lancement de Prometheus sous Linux52
      • 2.1 Contexte52
      • 2.2 Installation de Prometheus52
      • 2.3 Configuration de Prometheus54
      • 2.3.1 Présentation de la configuration par défaut54
      • 2.3.2 Test de la configuration55
      • 2.3.3 Structure globale de la configuration55
      • 2.3.4 Définition des points de collecte56
      • 2.4 Lancement de Prometheus57
      • 2.5 Consultation de la console Prometheus59
      • 3. Les métriques dans Prometheus61
      • 3.1 Contexte61
      • 3.2 Les types de métriques compteurs et jauges61
      • 3.3 Métriques résumés et histogrammes62
      • 3.3.1 Présentation des métriques résumés et histogrammes62
      • 3.3.2 Métrique résumé ou sommaire (summary)62
      • 3.3.3 Métriques histogrammes et quantile63
      • 3.3.4 Calcul de quantiles et exemple de calculs de disponibilité65
      • 3.3.5 Conseils d'utilisation sur les histogrammes67
      • 3.4 Quelques bonnes pratiques à suivre67
      • 3.4.1 Nom de la métrique67
      • 3.4.2 Unités68
      • 4. Agent de surveillance système69
      • 4.1 Contexte69
      • 4.2 Lancement de l'exporteur système69
      • 4.2.1 Télécharger l'archive de l'exporteur69
      • 4.2.2 Décompression et lancement70
      • 4.2.3 Accès à l'interface de l'agent71
      • 4.2.4 Intégration de l'exporteur72
      • 4.2.5 Prise en compte de la modification73
      • 5. Console de Prometheus76
      • 5.1 Contexte76
      • 5.2 Activation de la console76
      • 5.3 Tableau de bord des nouds système78
      • 5.4 Tableau de bord de Prometheus80
      • 5.5 Principe de fonctionnement des tableaux de bord81
      • Chapitre 4
      • Installation de Grafana
      • 1. Objectifs du chapitre et prérequis83
      • 1.1 Contexte et prérequis83
      • 1.2 Fichiers téléchargeables83
      • 2. Lancement de Grafana sous Linux84
      • 2.1 Contexte84
      • 2.2 Installation de Grafana84
      • 2.2.1 Installation à l'aide du paquet Debian84
      • 2.2.2 Utilisation de la source de paquets de Grafana86
      • 2.3 Démarrage de Grafana87
      • 2.3.1 Inventaire des éléments créés87
      • 2.3.2 Compte et groupe de service87
      • 2.3.3 Prise en compte du nouveau service88
      • 2.3.4 Activation et désactivation du service89
      • 2.3.5 Gestion des services de systemd90
      • 2.3.6 Démarrage et arrêt du service92
      • 3. Configuration de Grafana94
      • 3.1 Connexion en tant qu'administrateur94
      • 3.2 Personnalisation de l'interface95
      • 3.3 Ajout d'une source de données Prometheus97
      • 3.4 Import des tableaux de bord de suivi de Prometheus99
      • 3.4.1 Écran d'import des tableaux de bord99
      • 3.4.2 Tableau de bord de suivi de Prometheus100
      • 3.4.3 Tableau de bord de Grafana101
      • Chapitre 5
      • Découverte de Grafana
      • 1. Objectifs du chapitre et prérequis103
      • 1.1 Contexte et prérequis103
      • 1.2 Fichiers téléchargeables103
      • 2. Découverte de Grafana104
      • 2.1 Contexte104
      • 2.2 Accès à l'écran d'exploration (Explorer)104
      • 2.3 Création d'un tableau de bord sur la charge système105
      • 2.3.1 Qu'est-ce que la charge système ?105
      • 2.3.2 Compter le nombre de cours d'une machine105
      • 2.3.3 Combinaison du nombre de cours et de la charge système107
      • 2.3.4 Jointure des vecteurs de données108
      • 2.3.5 Récupération des labels de la partie gauche109
      • 2.4 Création d'un tableau de bord110
      • 2.4.1 Ajout d'un premier panneau110
      • 2.4.2 Sauvegarde du tableau de bord111
      • 2.5 Ajout d'un panneau sur l'activité processeur112
      • 2.5.1 Métrique de l'activité processeur112
      • 2.5.2 Fonction de transformation113
      • 2.5.3 Utilisation de la fonction rate113
      • 2.5.4 Ajout d'un nouveau panneau114
      • 2.5.5 Formatage des légendes117
      • 3. Répertoires dans Grafana121
      • 3.1 Contexte121
      • 3.2 Classement des tableaux de bord à l'aide de répertoires121
      • 3.2.1 Création de répertoires (folder)121
      • 3.2.2 Déplacement d'un tableau de suivi122
      • 4. Listes de tableaux de bord125
      • 4.1 Contexte125
      • 4.2 Création d'une liste de lecture125
      • 4.3 Utilisation d'une liste de lecture127
      • 4.4 Lancement automatique dans un navigateur128
      • 4.4.1 Choix de la station d'affichage128
      • 4.4.2 Option de lancement de la liste de lecture128
      • 4.4.3 Lancement de la liste de lecture129
      • 4.4.4 Lancement à l'ouverture de la session graphique Linux.130
      • 5. Historique et création d'instantanés131
      • 5.1 Contexte131
      • 5.2 Historique des tableaux de bord132
      • 5.3 Créer un instantané de tableau de bord133
      • 5.3.1 Principe du mécanisme133
      • 5.3.2 Création d'un instantané local133
      • 5.3.3 Partage d'instantané via Raintank136
      • 5.4 Gestion des instantanés137
      • Chapitre 6
      • Intégration au système
      • 1. Objectifs du chapitre et prérequis139
      • 1.1 Contexte et prérequis139
      • 1.2 Fichiers téléchargeables139
      • 2. Intégration de Prometheus140
      • 2.1 Contexte140
      • 2.2 Prérequis140
      • 2.3 Préparation des prérequis système141
      • 2.3.1 Arborescence de lancement de Prometheus141
      • 2.3.2 Création du compte de service141
      • 2.4 Affectation de volumétrie (étape optionnelle)142
      • 2.4.1 Principe de fonctionnement des volumes logiques142
      • 2.4.2 Choix du groupe de disques143
      • 2.4.3 Formatage du volume144
      • 2.4.4 Montage du disque145
      • 2.4.5 Recopie des données146
      • 2.5 Préparation des fichiers de Prometheus147
      • 2.5.1 Décompression des binaires147
      • 2.5.2 Création du répertoire de configuration de Prometheus148
      • 2.6 Définition du service système149
      • 2.6.1 Structure du fichier système149
      • 2.6.2 Section Unit150
      • 2.6.3 Section Service150
      • 2.6.4 Section Install151
      • 2.6.5 Débogage en cas de problème de démarrage153
      • 3. Intégration de l'exporteur système155
      • 3.1 Contexte155
      • 3.2 Prérequis155
      • 3.3 Création du compte de service155
      • 3.4 Décompression des binaires de l'exporteur156
      • 3.5 Création du service système157
      • 3.6 Prise en compte et démarrage du service158
      • 3.7 Débogage en cas de problème de démarrage159
      • 4. Aller plus loin avec l'exporteur système159
      • 4.1 Contexte159
      • 4.2 Aide en ligne de l'exporteur160
      • 4.3 Indicateurs par défaut161
      • 4.4 Indicateurs optionnels disponibles162
      • 4.5 Activation de l'état des services de systemd163
      • 4.6 Filtrer les modules à interroger165
      • 4.7 Création de métriques personnalisées166
      • 4.7.1 Origine du besoin166
      • 4.7.2 Principe de fonctionnement et activation166
      • 4.7.3 Compter le nombre d'appels CRON167
      • 4.7.4 Création du script169
      • 4.7.5 Mise à disposition du résultat171
      • 4.7.6 Lancement automatique du script172
      • 4.7.7 Vérification de la fraîcheur des données173
      • 5. Exporteur système pour Windows173
      • 5.1 Contexte173
      • 5.2 Téléchargement174
      • 5.3 Installation174
      • 5.4 Configuration de l'exporteur à l'installation174
      • 5.5 Branchement de Prometheus175
      • Chapitre 7
      • Protection des accès
      • 1. Objectifs du chapitre et prérequis177
      • 1.1 Contexte et prérequis177
      • 1.2 Fichiers téléchargeables177
      • 2. Gestion des accès externes178
      • 2.1 Contexte178
      • 2.2 Prérequis178
      • 2.3 Installation de Nginx179
      • 2.4 Configuration de Nginx180
      • 2.4.1 Gestion du service associé à Nginx180
      • 2.4.2 Configuration de Nginx par défaut181
      • 2.4.3 Configuration de l'accès à Prometheus182
      • 2.4.4 Activation de l'accès à Prometheus183
      • 2.4.5 Configuration et activation de l'accès à Grafana184
      • 3. Chiffrement des communications à l'aide de Let's Encrypt186
      • 3.1 Contexte186
      • 3.2 Mise en place du chiffrement avec Let's Encrypt187
      • 3.2.1 Principe de génération des certificats avec Let's Encrypt187
      • 3.2.2 Installation de Certbot188
      • 3.2.3 Génération des certificats188
      • 3.2.4 Configuration de Nginx suite à la migration191
      • 3.3 Automatisation du renouvellement des certificats192
      • 3.3.1 Commande de renouvellement192
      • 3.3.2 Présentation de l'outil Crontab192
      • 3.3.3 Définition d'un travail193
      • 4. Contrôle des accès sur Grafana195
      • 4.1 Contexte195
      • 4.2 Définition d'utilisateurs dans Grafana195
      • 4.2.1 Origine du besoin195
      • 4.2.2 Création de comptes locaux195
      • 4.2.3 Modifications à apporter198
      • 4.2.4 Test des modifications200
      • 4.3 Branchement à un annuaire LDAP202
      • 4.3.1 Prérequis202
      • 4.3.2 Configuration de l'accès à l'annuaire202
      • 4.3.3 Utilisation des groupes LDAP204
      • 4.4 Protection par OAuth2205
      • 4.4.1 Principe de fonctionnement de OAuth2205
      • 4.4.2 Création des accès OAuth2 pour Grafana dans GitHub206
      • 4.4.3 Configuration de Grafana209
      • 4.4.4 Test des accès210
      • 5. Contrôle des accès sur Prometheus212
      • 5.1 Contexte212
      • 5.2 Contrôle des accès par mot de passe/htpasswd212
      • 5.2.1 Principe de fonctionnement212
      • 5.2.2 Configuration de l'accès à Prometheus213
      • 5.3 Contrôle des accès par OAuth2214
      • 5.3.1 Utilisation du proxy oauth2-proxy214
      • 5.3.2 Création des accès OAuth2 pour Prometheus dans GitHub215
      • 5.3.3 Installation du proxy OAuth2217
      • 5.3.4 Configuration et lancement du proxy OAuth2217
      • 5.3.5 Branchement de Nginx sur le proxy OAuth2218
      • 5.3.6 Connexion à Prometheus et installation de l'application219
      • 5.4 Intégration du proxy au système221
      • 5.4.1 Corrections à apporter221
      • 5.4.2 Recopie du binaire oauth2-proxy221
      • 5.4.3 Création du fichier associé au service222
      • 5.4.4 Prise en compte du service et démarrage223
      • 5.5 Contrôler les accès par annuaire LDAP224
      • 5.5.1 Solutions disponibles224
      • 5.5.2 Authentification par sous-requête224
      • 5.6 Installation du proxy d'authentification LDAP225
      • 5.6.1 A propos de nginx-ldap-auth225
      • 5.6.2 Lancement du proxy225
      • 5.6.3 Configuration de Nginx226
      • Chapitre 8
      • Déploiement via containers
      • 1. Objectifs du chapitre et prérequis231
      • 1.1 Contexte et prérequis231
      • 1.2 Fichiers téléchargeables232
      • 2. Déploiement de Prometheus et Grafana dans Docker232
      • 2.1 Contexte232
      • 2.2 Installation de Docker232
      • 2.2.1 Installation de Docker Community Edition sur Ubuntu232
      • 2.2.2 Installation alternative233
      • 2.2.3 Configuration des accès à Docker233
      • 2.2.4 Vérification installation de Docker234
      • 2.3 Initialisation du mode Docker swarm/stack235
      • 2.4 Installation de Prometheus et Grafana236
      • 2.4.1 Déclaration du service Prometheus dans la stack Docker236
      • 2.4.2 Déploiement de la stack237
      • 2.4.3 Ajout du service Grafana238
      • 2.5 Gestion de la persistance239
      • 2.5.1 Présentation du mécanisme239
      • 2.5.2 Déclaration de la persistance240
      • 2.5.3 Création des répertoires de persistance241
      • 2.5.4 Démarrage et vérification des services241
      • 2.5.5 Exemples d'erreurs de démarrage242
      • 2.6 Configuration de Prometheus242
      • 2.7 Configuration de Grafana244
      • 2.7.1 Présentation du mécanisme de provisionnement244
      • 2.7.2 Définition de la source de données Prometheus244
      • 2.7.3 Modification de la définition du service Grafana246
      • Chapitre 9
      • Supervision de containers
      • 1. Objectifs du chapitre et prérequis249
      • 1.1 Contexte et prérequis249
      • 1.2 Fichiers téléchargeables250
      • 2. Supervision de Docker et gestion du cycle de vie250
      • 2.1 Contexte250
      • 2.2 Configuration de Docker250
      • 2.3 Ajout de la supervision de Docker252
      • 2.3.1 Modification de la définition de la stack Docker252
      • 2.3.2 Modification de la configuration de Prometheus253
      • 2.3.3 Prise en charge de la nouvelle configuration254
      • 2.4 Rechargement à chaud de la configuration de Prometheus255
      • 2.4.1 Activation du point d'entrée255
      • 2.4.2 Options par défaut du container256
      • 2.4.3 Modification à appliquer à la définition du service258
      • 2.4.4 Test de rechargement de la configuration258
      • 3. Suivi des métriques système259
      • 3.1 Contexte259
      • 3.2 Prérequis259
      • 3.3 Intégration de l'exporteur système (node-exporter)260
      • 3.3.1 Exposition de la problématique260
      • 3.3.2 Utilisation de la couche réseau de l'hôte261
      • 3.3.3 Déclaration du service261
      • 3.3.4 Supervision de l'exporteur système dans Prometheus263
      • 4. Suivi des containers à l'aide de cAdvisor265
      • 4.1 Contexte265
      • 4.2 Définition des services applicatifs265
      • 4.2.1 Définition des réseaux applicatifs et de surveillance265
      • 4.2.2 Définition des services applicatifs266
      • 4.2.3 Modification des services existants267
      • 4.3 Intégration de cAdvisor268
      • 4.3.1 Définition du service cAdvisor268
      • 4.3.2 Consultation de la console cAdvisor271
      • 4.3.3 Intégration de cAdvisor dans Prometheus273
      • Chapitre 10
      • Découverte automatique
      • 1. Objectifs du chapitre et prérequis275
      • 1.1 Contexte et prérequis275
      • 1.2 Fichiers téléchargeables276
      • 2. Intégration de Prometheus à Docker Swarm276
      • 2.1 Contexte276
      • 2.2 Ajout d'un noud au cluster Docker Swarm277
      • 2.2.1 Installation du moteur Docker277
      • 2.2.2 Récupération du jeton de connexion277
      • 2.2.3 Enregistrement du noud courant278
      • 2.2.4 Vérification de la liste des nouds278
      • 2.3 Déploiement global279
      • 2.3.1 Test de bascule de charge279
      • 2.3.2 Déploiement global280
      • 2.3.3 Module de découverte Docker Swarm de Prometheus282
      • 2.3.4 Configuration de l'accès au moteur Docker283
      • 2.3.5 Généralisation de la configuration284
      • 2.4 Récupération des labels de Docker Swarm286
      • 2.4.1 Principe de fonctionnement286
      • 2.4.2 Consultation des labels disponibles287
      • 2.4.3 Injection des labels dans Prometheus289
      • 2.5 Découverte automatique des containers291
      • 2.5.1 Généralisation du mécanisme de découverte291
      • 2.5.2 Sélection des containers à scruter291
      • 2.5.3 Éliminations des containers non accessibles292
      • 2.5.4 Alimentation du label job293
      • 2.5.5 Configuration complète294
      • Chapitre 11
      • Ajout de tableaux de bord
      • 1. Objectifs du chapitre et prérequis297
      • 1.1 Contexte et prérequis297
      • 1.2 Fichiers téléchargeables297
      • 2. Gestion des tableaux de bord298
      • 2.1 Contexte298
      • 2.2 Import d'un tableau de bord298
      • 2.2.1 Présentation de la page de recherche des tableaux de bord298
      • 2.2.2 Recherche et choix d'un tableau de bord pour l'exporteur système300
      • 2.2.3 Import du tableau de bord301
      • 2.2.4 Utilisation du tableau de bord de l'exporteur système .303
      • 2.3 Navigation temporelle dans Grafana305
      • 2.3.1 Définition d'un intervalle de temps relatif305
      • 2.3.2 Intervalle de temps absolu306
      • 2.3.3 Les fuseaux horaires307
      • 2.3.4 Zoom sur un intervalle de temps307
      • 3. Automatisation de l'import par API308
      • 3.1 Contexte308
      • 3.2 Création de la clé d'API308
      • 3.2.1 Génération de la clé depuis l'interface de Grafana308
      • 3.2.2 Structure de la clé310
      • 3.2.3 Utilisation de la commande jq310
      • 3.3 Lancement d'un import de tableau de bord311
      • 3.3.1 Principe de fonctionnement du script de mise à jour311
      • 3.3.2 Initialisation des variables311
      • 3.3.3 Téléchargement du tableau de bord312
      • 3.3.4 Préparation de la requête313
      • 3.3.5 Lancement de la création du tableau de bord314
      • 3.3.6 Consultation du tableau de bord315
      • 3.4 Manipulation des tableaux de bord316
      • 3.4.1 Exemple d'opérations à disposition316
      • 3.4.2 Liste des répertoires (folder)316
      • 3.4.3 Recherche de tableaux de bord et de répertoires319
      • 4. Utilisation du mécanisme d'approvisionnement321
      • 4.1 Présentation du mécanisme321
      • 4.2 Déclaration de l'emplacement des tableaux de bord322
      • 4.2.1 Structure du fichier d'approvisionnement automatique322
      • 4.2.2 Création d'un fichier d'approvisionnement322
      • 4.2.3 Préparation du répertoire des tableaux de bord323
      • 4.3 Prise en compte des modifications323
      • 4.4 Gestion des tableaux de bord324
      • 4.4.1 Dépôt des fichiers de tableau de bord324
      • 4.4.2 Suppression d'un tableau de bord324
      • Chapitre 12
      • Intégration de Prometheus avec Kubernetes
      • 1. Objectifs du chapitre et prérequis325
      • 1.1 Contexte et prérequis325
      • 1.2 Fichiers téléchargeables326
      • 2. Intégration de Prometheus dans Kubernetes326
      • 2.1 Contexte326
      • 2.2 Création d'un cluster Kubernetes à l'aide de Kind327
      • 2.2.1 Prérequis327
      • 2.2.2 Téléchargement de Kind327
      • 2.2.3 Initialisation du cluster Kubernetes à l'aide de Kind328
      • 2.2.4 Téléchargement de kubectl329
      • 2.2.5 Déplacement de la commande kubectl330
      • 2.2.6 Vérification de la communication avec le cluster Kind330
      • 2.3 Quelques rappels sur Kubernetes331
      • 2.3.1 Les objets nécessaires à l'exercice331
      • 2.3.2 Les espaces de noms331
      • 2.3.3 Les pods332
      • 2.3.4 Les nouds d'un cluster334
      • 2.3.5 Les services334
      • 2.4 Déploiement de Prometheus dans Kubernetes335
      • 2.4.1 Création d'un objet déploiement335
      • 2.4.2 Démarrage du pod de Prometheus337
      • 2.4.3 Accéder au pod de Prometheus339
      • 2.5 Branchement de Prometheus à l'API de Kubernetes340
      • 2.5.1 Configuration de Prometheus à l'aide d'annotations Kubernetes340
      • 2.5.2 Branchement de Prometheus sur le composant Kubelet343
      • 2.5.3 Modèle de sécurité RBAC de Kubernetes345
      • 2.5.4 Création du compte de service346
      • 2.5.5 Affectation des droits au compte de service347
      • 2.6 Configuration des accès de Prometheus350
      • 2.6.1 Vérification des cibles de Prometheus350
      • 2.6.2 Utilisation du protocole HTTPS351
      • 2.6.3 Configuration des accès TLS351
      • 2.6.4 Gestion de l'authentification/autorisation353
      • 2.6.5 Gestion des labels354
      • 2.7 Récupération des informations de cAdvisor356
      • 2.8 Les autres sources de données357
      • 2.8.1 Liste des sources disponibles357
      • 2.8.2 Labels disponibles par défaut pour node358
      • 2.8.3 Labels disponibles pour les services359
      • 2.8.4 Labels disponibles pour les pods360
      • 2.8.5 Labels disponibles pour les endpoints362
      • 2.8.6 Labels disponibles pour les objets Ingress363
      • 2.9 Découverte automatique de services/pods363
      • 2.9.1 Bonnes pratiques sur les labels et annotations363
      • 2.9.2 Utilisation d'annotations pour la sélection364
      • 2.9.3 Annotation d'un pod pour surveillance367
      • Chapitre 13
      • Alertes et notifications
      • 1. Objectifs du chapitre et prérequis369
      • 1.1 Contexte et prérequis369
      • 1.2 Fichiers téléchargeables370
      • 2. Gestion des alertes avec Grafana370
      • 2.1 Contexte370
      • 2.2 Alerte sur l'activité CPU370
      • 2.2.1 Alerte à définir370
      • 2.2.2 Définition du seuil de déclenchement370
      • 2.3 Canaux de notifications372
      • 2.3.1 Origine du besoin372
      • 2.3.2 Création du canal de notifications372
      • 2.3.3 Branchement de l'alerte au canal de notification374
      • 2.3.4 Autres mécanismes de notifications à disposition375
      • 3. Gestionnaire d'alertes de Prometheus375
      • 3.1 Contexte375
      • 3.2 Mise en place d'une alerte dans Prometheus376
      • 3.2.1 Configuration des alertes dans Prometheus376
      • 3.2.2 Mise en place d'une alerte377
      • 3.2.3 Vérification du fichier de règles379
      • 3.2.4 Redémarrage de Prometheus et vérification de l'alerte380
      • 3.2.5 Récupération des alertes générées par Prometheus381
      • 3.2.6 Utilisation des notifications de Prometheus dans Grafana381
      • 3.2.7 Ajout d'annotations manuelles383
      • 3.3 Installation du gestionnaire d'alertes (alertmanager)384
      • 3.3.1 Présentation384
      • 3.3.2 Décompression des fichiers du gestionnaire d'alertes385
      • 3.3.3 Préparation de l'arborescence du gestionnaire d'alertes386
      • 3.3.4 Configuration du gestionnaire d'alertes387
      • 3.3.5 Création et démarrage du service système388
      • 3.3.6 Branchement de Prometheus390
      • 3.4 Notification par e-mail391
      • 3.4.1 Configuration de l'envoi d'e-mails391
      • 3.4.2 Configuration de la mise en page394
      • 3.5 Exemple d'intégration avec Slack396
      • 3.5.1 Origine du besoin396
      • 3.5.2 Définition d'un canal de communication vers Slack396
      • 3.5.3 Intégration de Slack avec le gestionnaire d'alertes399
      • 3.5.4 Personnalisation du message401
      • 3.6 Mécanisme d'inhibition403
      • 3.6.1 Contexte de mise en place403
      • 3.6.2 Alerte sur la collecte des exporteurs403
      • 3.6.3 Simplification de l'inclusion de machines (file_sd_configs)404
      • 3.6.4 Mise en place du mécanisme d'inhibition406
      • 3.7 Inhibition des alertes en fonction des heures406
      • 3.7.1 Présentation du mécanisme à mettre en place406
      • 3.7.2 Détermination de la période de l'heure d'été/hiver407
      • 3.7.3 Calcul de l'heure de Paris et détermination des heures ouvrées409
      • 3.7.4 Désactivation des alertes en période creuse409
      • 3.7.5 Désactivation des alertes en dehors des heures ouvrées410
      • Chapitre 14
      • Surveillance de base de données
      • 1. Objectifs du chapitre et prérequis413
      • 1.1 Contexte et prérequis413
      • 1.2 Fichiers téléchargeables413
      • 2. Surveillance de base de données PostgreSQL414
      • 2.1 Contexte414
      • 2.2 Exporteur PostgreSQL414
      • 2.2.1 Présentation de l'exporteur414
      • 2.2.2 Installation de l'exporteur415
      • 2.2.3 Définition de la connexion à la base415
      • 2.2.4 Lancement de l'exporteur416
      • 2.2.5 Lancement de l'exporteur depuis le compte postgres417
      • 2.2.6 Intégration au système417
      • 2.2.7 Options de lancement de l'exporteur419
      • 2.2.8 Intégration avec Prometheus421
      • 2.3 Exemples de règles de surveillance421
      • 2.3.1 À propos421
      • 2.3.2 Suivi du déroulement de la collecte422
      • 2.3.3 Surveillance du décalage de la réplication source maître/réplicats423
      • 2.4 Tableau de bord pour Grafana424
      • 2.5 Gestion des alertes425
      • 2.5.1 Création d'un nouveau récepteur425
      • 2.5.2 Sélection du destinataire en fonction des labels427
      • 3. Surveillance base de données MySQL/MariaDB428
      • 3.1 Contexte428
      • 3.2 Exporteur MySQL428
      • 3.2.1 Présentation de l'exporteur428
      • 3.2.2 Installation de l'exporteur429
      • 3.2.3 Définition de la connexion à la base429
      • 3.2.4 Création d'un utilisateur spécifique431
      • 3.2.5 Intégration au système432
      • 3.2.6 Options de lancement de l'exporteur434
      • 3.2.7 Intégration avec Prometheus440
      • 3.3 Exemples de règles de surveillance441
      • 3.3.1 À propos441
      • 3.3.2 Suivi du déroulement de la collecte441
      • 3.3.3 Surveillance du décalage de la réplication source maître/réplicats442
      • 3.3.4 Surveillance des connexions443
      • 3.4 Tableau de bord pour Grafana443
      • 3.5 Gestion des alertes445
      • Chapitre 15
      • Surveillance blackbox, SNMP et Push Gateway
      • 1. Objectifs du chapitre et prérequis447
      • 1.1 Contexte et prérequis447
      • 1.2 Fichiers téléchargeables448
      • 2. Surveillance par boîte noire (black box)448
      • 2.1 Contexte448
      • 2.2 Mise en place de l'exporteur Blackbox448
      • 2.2.1 Présentation de l'exporteur448
      • 2.2.2 Installation de l'exporteur449
      • 2.2.3 Configuration de l'exporteur450
      • 2.2.4 Lancement de l'exporteur et intégration au système451
      • 2.3 Test du fonctionnement de l'exporteur453
      • 2.4 Diagnostic en cas d'erreur455
      • 2.4.1 Utilisation de l'option debug455
      • 2.4.2 Interface de l'exporteur blackbox455
      • 2.4.3 Configuration communication IPv6/IPv4457
      • 2.4.4 Configuration TLS457
      • 2.5 Surveillance de services non-HTTP458
      • 2.5.1 Vérification de l'ouverture d'un port TCP458
      • 2.5.2 Écriture d'une requête de vérification459
      • 2.5.3 Support du protocole TLS implicite461
      • 2.5.4 Support du mécanisme startTLS461
      • 2.5.5 Autres exemples462
      • 2.6 Intégration dans Prometheus463
      • 2.7 Exemples d'alertes465
      • 2.7.1 Métriques disponibles465
      • 2.7.2 Définition d'alerte465
      • 3. Support du protocole SNMP466
      • 3.1 Contexte466
      • 3.2 Mise en place de l'exporteur467
      • 3.2.1 Présentation de l'exporteur467
      • 3.2.2 Installation de l'exporteur467
      • 3.2.3 Modules disponibles et création de nouveaux modules468
      • 3.2.4 Lancement de l'exporteur et intégration au système470
      • 3.3 Surveillance d'un switch réseau471
      • 3.3.1 Test de la communication471
      • 3.3.2 Configuration de l'authentification472
      • 3.3.3 Intégration à Prometheus473
      • 4. Surveillance à l'aide du module Push Gateway474
      • 4.1 Contexte474
      • 4.2 Limitations475
      • 4.3 Mise en place du composant Push Gateway476
      • 4.3.1 Présentation du composant Push Gateway476
      • 4.3.2 Installation de l'exporteur476
      • 4.3.3 Lancement du composant et intégration au système477
      • 4.4 Dépôt de métriques479
      • 4.4.1 Présentation des métriques à exposer479
      • 4.4.2 Dépôt des métriques479
      • 4.4.3 Connexion à l'interface de la Push Gateway480
      • 4.5 Branchement à Prometheus481
      • 4.6 Métriques automatiques et exemples d'alertes482
      • 4.6.1 Métriques disponibles482
      • 4.6.2 Définition d'alerte483
      • 4.7 Suppression des métriques484
      • Chapitre 16
      • Suivi d'applications modernes
      • 1. Objectifs du chapitre et prérequis485
      • 1.1 Contexte et prérequis485
      • 1.2 Fichiers téléchargeables486
      • 2. Instrumentation d'application Java/Spring Boot486
      • 2.1 Contexte486
      • 2.2 Surveillance Prometheus avec Spring Boot486
      • 2.2.1 Création d'une application Spring Boot de démonstration486
      • 2.2.2 Installation des prérequis488
      • 2.2.3 Lancement de la compilation et exécution du programme488
      • 2.2.4 Ajout du point d'entrée actuator491
      • 2.2.5 Activation du point d'entrée des métriques Prometheus492
      • 2.3 Intégration dans Prometheus494
      • 2.3.1 Ajout de la surveillance494
      • 2.3.2 Métriques disponibles494
      • 2.3.3 Exemples d'alertes495
      • 3. Instrumentation d'applications Python/Flask496
      • 3.1 Contexte496
      • 3.2 Préparation des prérequis de l'application Python Flask496
      • 3.2.1 À propos de Flask496
      • 3.2.2 Installation des prérequis Python et virtualenv497
      • 3.2.3 Création de l'environnement de travail497
      • 3.2.4 Installation des dépendances498
      • 3.3 Création de l'application499
      • 3.3.1 Déclaration des dépendances499
      • 3.3.2 Page d'accueil500
      • 3.3.3 Initialisation de l'application Flask500
      • 3.3.4 Rattachement de l'index à la racine501
      • 3.3.5 Lancement du programme501
      • 3.4 Intégration dans Prometheus503
      • 3.4.1 Ajout de la surveillance503
      • 3.4.2 Métriques disponibles503
      • 3.4.3 Exemples d'alertes504
      • 4. Agent JMX exporter505
      • 4.1 Contexte505
      • 4.2 À propos des MBeans505
      • 4.3 Mise en place de l'exporteur505
      • 4.3.1 Téléchargement de l'exporteur JMX505
      • 4.3.2 Mise en place et configuration de l'exporteur506
      • 4.3.3 Conseils sur la mise au point509
      • 4.4 Intégration dans Prometheus510
      • 4.4.1 Ajout de la surveillance510
      • 4.4.2 Métriques disponibles510
      • 5. Création de tableaux de bord as code511
      • 5.1 Contexte511
      • 5.2 Principe de fonctionnement511
      • 5.3 Mise en place des prérequis512
      • 5.3.1 Installation du binaire de Jsonnet512
      • 5.3.2 Récupération de la librairie Grafonnet512
      • 5.4 Création d'un tableau de bord513
      • 5.4.1 Génération du tableau de bord513
      • 5.4.2 Import du tableau de bord514
      • 5.5 Suivi des connexions Prometheus514
      • 5.5.1 Définition d'un objet Row514
      • 5.5.2 Ajout d'indicateurs515
      • 5.6 Mise en page du tableau de bord517
      • 5.6.1 Constats517
      • 5.6.2 Configuration des caractéristiques du tableau de bord517
      • 5.6.3 Taille du graphique518
      • 5.6.4 Mise en page des données519
      • 5.7 Ajout de sélecteurs521
      • 5.8 Indicateurs textuels525
      • 5.9 Conseils de mise au point et gestion des extensions527
      • Chapitre 17
      • Agrégation et archivage
      • 1. Objectifs du chapitre et prérequis529
      • 1.1 Contexte et prérequis529
      • 1.2 Fichiers téléchargeables529
      • 2. Fédération d'instances Prometheus530
      • 2.1 Contexte530
      • 2.2 Mise en place de la fédération530
      • 2.2.1 Consultation du point de fédération530
      • 2.2.2 Mise en place de la fédération531
      • 2.2.3 Exemples de fédération532
      • 2.3 Haute disponibilité et montée en charge533
      • 2.3.1 Prometheus et la haute disponibilité533
      • 2.3.2 Scalabilité horizontale534
      • 3. Archivage dans InfluxDB537
      • 3.1 Contexte537
      • 3.2 Présentation d'InfluxDB538
      • 3.3 Mise en place d'InfluxDB538
      • 3.3.1 Installation d'InfluxDB538
      • 3.3.2 Surveillance d'InfluxDB540
      • 3.3.3 Connexion à la base et création du schéma de stockage541
      • 3.4 Activation du sous-échantillonnage542
      • 3.4.1 Police de rétention542
      • 3.4.2 Police de rétention par défaut542
      • 3.4.3 Création de polices de rétention et alimentation544
      • 3.5 Branchement de Prometheus à InfluxDB546
      • 3.5.1 Configuration de Prometheus546
      • 3.5.2 Haute disponibilité d'InfluxDB546
      • 3.5.3 Inspection du contenu de la base après branchement547
      • 3.6 Autres moteurs disponibles548
      • 3.6.1 Liste de moteurs disponibles548
      • 3.6.2 Un mot sur Thanos549
      • Chapitre 18
      • Opérateur Prometheus pour Kubernetes
      • 1. Objectifs du chapitre et prérequis551
      • 1.1 Contexte et prérequis551
      • 1.2 Fichiers téléchargeables552
      • 2. Installation de Prometheus Operator à l'aide de Helm552
      • 2.1 Contexte552
      • 2.2 Présentation de l'opérateur Prometheus553
      • 2.3 Recherche du paquet à installer sur Artifact HUB554
      • 2.4 Installation du binaire Helm555
      • 2.5 Ajout du dépôt prometheus-community556
      • 2.6 Recherche du paquet et consultation des options557
      • 2.7 Configuration du chart Helm558
      • 2.7.1 Champs principaux de configuration558
      • 2.7.2 Configuration des champs ingress559
      • 2.7.3 Persistance des données560
      • 2.7.4 Attribution des ressources561
      • 2.7.5 Configuration utilisée pour l'installation562
      • 2.7.6 Lancement de l'installation563
      • 2.7.7 Gestion des mises à jour565
      • 2.8 Nouveaux objets supportés565
      • 2.8.1 Consultation de la liste des objets CRD565
      • 2.8.2 Définition d'un point de collecte566
      • 3. Exporteurs additionnels disponibles570
      • 3.1 Contexte570
      • 3.2 Utilisation de l'exporteur Blackbox570
      • 3.2.1 Installation de l'exporteur Blackbox570
      • 3.2.2 Utilisation de l'exporteur Blackbox572
      • 3.3 Utilisation du composant Push Gateway574
      • 3.3.1 Installation du composant Push Gateway574
      • 3.3.2 Test du composant Push Gateway576
      • Index579

  • Origine de la notice:
    • Electre
  • Disponible - 681.2 PER

    Niveau 3 - Informatique