Comment surveiller les performances d’un site Web avec Blackbox Exporter et Grafana ?

Photo of author

By pierre



Vous appréciez la puissance de Grafana pour le suivi des performances de vos serveurs ? Alors, préparez-vous à être conquis par Blackbox Exporter, l’outil idéal pour la surveillance de vos sites web !

Ce tutoriel vous guidera pas à pas dans l’installation de Blackbox Exporter sur des systèmes CentOS/RHEL. Vous découvrirez comment l’intégrer avec Prometheus et Grafana pour observer avec précision les performances et la disponibilité de vos sites web.

Qu’est-ce que Blackbox Exporter ?

Développé par Prometheus, Blackbox Exporter est un outil qui permet de tester la disponibilité de différents types de points de terminaison : HTTPS, HTTP, TCP, DNS et ICMP. Après avoir configuré ces points, l’exportateur génère une multitude de métriques qui peuvent être visualisées de manière intuitive grâce à Grafana. La mesure du temps de réponse constitue l’une des principales fonctionnalités de Blackbox Exporter.

Blackbox Exporter est une solution que vous hébergez vous-même. Si vous préférez une alternative en mode SaaS ou basée sur le cloud, n’hésitez pas à explorer Grafana worldPing.

Prérequis

Avant de commencer, assurez-vous que Prometheus et Grafana sont déjà installés sur votre système. Consultez cet article pour une aide à l’installation de Prometheus et Grafana.

Installation de Blackbox Exporter

Voici les étapes détaillées pour installer Blackbox Exporter.

Étape 1 : Télécharger Blackbox Exporter

Rendez-vous sur la page officielle de Prometheus pour récupérer le dernier package Linux AMD de Blackbox Exporter. Pour cet exemple, nous utiliserons le fichier `blackbox_exporter-0.16.0.linux-amd64.tar.gz`.

  • Transférez ce fichier sur votre serveur.
  • Décompressez ensuite l’archive.
tar -xzf blackbox_exporter-0.16.0.linux-amd64.tar.gz

Vérifiez le contenu du répertoire extrait.

cd blackbox_exporter-0.16.0.linux-amd64/
ls -l
total 16672
-rwxr-xr-x. 1 centos centos 17050332 Nov 11 2019 blackbox_exporter
-rw-r--r--. 1 centos centos 629 Nov 11 2019 blackbox.yml
-rw-r--r--. 1 centos centos 11357 Nov 11 2019 LICENSE
-rw-r--r--. 1 centos centos 94 Nov 11 2019 NOTICE

Les fichiers importants ici sont `blackbox_exporter` et `blackbox.yml`.

  • `blackbox_exporter` : le fichier exécutable pour démarrer le service.
  • `blackbox.yml` : le fichier de configuration YAML où vous définirez les points de terminaison à surveiller et les modules à utiliser.

La commande ci-dessous affichera toutes les options que vous pouvez utiliser avec Blackbox Exporter.

./blackbox_exporter -h
usage: blackbox_exporter [<flags>]

Flags:
-h, --help Show context-sensitive help (also try --help-long and --help-man).

--config.file="blackbox.yml"
Blackbox exporter configuration file.
--web.listen-address=":9115"
The address to listen on for HTTP requests.

--timeout-offset=0.5 Offset to subtract from timeout in seconds.

--config.check If true validate the config file and then exit.

--history.limit=100 The maximum amount of items to keep in the history.

--web.external-url=<url>
The URL under which Blackbox exporter is externally reachable (for example, if Blackbox exporter is served via a
reverse proxy). Used for generating relative and absolute links back to Blackbox exporter itself. If the URL has a
path portion, it will be used to prefix all HTTP endpoints served by Blackbox exporter. If omitted, relevant URL
components will be derived automatically.

--web.route-prefix=<path>
Prefix for the internal routes of web endpoints. Defaults to path of --web.external-url.

--log.level=info Only log messages with the given severity or above. One of: [debug, info, warn, error]

--log.format=logfmt Output format of log messages. One of: [logfmt, json]
--version Show application version.

Étape 2 : Créer un utilisateur pour Blackbox

Cette étape est optionnelle.

Vous pouvez soit créer un nouvel utilisateur dédié pour exécuter Blackbox, soit utiliser un utilisateur existant comme celui de Prometheus.

N’oubliez pas d’accorder les permissions nécessaires et d’attribuer la propriété des fichiers à l’utilisateur choisi.

sudo useradd -rs /bin/false blackbox
sudo chmod -R 777 /home/centos/blackbox_exporter-0.16.0.linux-amd64
sudo chown -R blackbox:blackbox /home/centos/blackbox_exporter-0.16.0.linux-amd64

Étape 3 : Configurer le service Blackbox

Il est temps de configurer Blackbox Exporter en tant que service systemd. Créez un fichier `blackbox.service`, ajoutez-y les informations ci-dessous et sauvegardez-le.

sudo gedit /etc/systemd/system/blackbox.service

[Unit]
Description=Blackbox Exporter Service
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=blackbox
Group=blackbox
ExecStart=/home/centos/blackbox_exporter-0.16.0.linux-amd64/blackbox_exporter --config.file==/home/centos/blackbox_exporter-0.16.0.linux-amd64/blackbox.yml

[Install]
WantedBy=multi-user.target

Assurez-vous de modifier le chemin vers l’emplacement réel où vous avez décompressé les fichiers.

Étape 4 : Démarrer Blackbox Exporter

Exécutez les commandes ci-dessous pour démarrer Blackbox Exporter en tant que service.

sudo systemctl daemon-reload
sudo systemctl start blackbox.service
sudo systemctl status blackbox.service
● blackbox.service - Blackbox Exporter Service
Loaded: loaded (/etc/systemd/system/blackbox.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2020-06-13 17:28:40 EDT; 1s ago
Main PID: 30427 (blackbox_export)
Tasks: 5
CGroup: /system.slice/blackbox.service
└─30427 /usr/local/bin/blackbox_exporter --config.file=/etc/blackbox.yml

Jun 13 17:28:40 toptips.fr.linuxvmimages.com systemd[1]: Started Blackbox Exporter Service.
Jun 13 17:28:40 toptips.fr.linuxvmimages.com blackbox_exporter[30427]: level=info ts=2020-06-13T21:28:40.283Z caller=main.go:212 msg="Starting b...b9a9)"
Jun 13 17:28:40 toptips.fr.linuxvmimages.com blackbox_exporter[30427]: level=info ts=2020-06-13T21:28:40.283Z caller=main.go:213 msg="Build cont...SSING)
Jun 13 17:28:40 toptips.fr.linuxvmimages.com blackbox_exporter[30427]: level=info ts=2020-06-13T21:28:40.283Z caller=main.go:225 msg="Loaded config file"
Jun 13 17:28:40 toptips.fr.linuxvmimages.com blackbox_exporter[30

Excellent !

Blackbox Exporter est maintenant démarré avec succès. Vous pouvez y accéder via l’adresse http://localhost:9115/.

Intégration de Blackbox avec Prometheus

Passons à l’intégration de Blackbox Exporter avec Prometheus pour commencer à collecter les métriques.

  • Ajoutez un job de type `blackbox` avec la configuration ci-dessous dans le fichier `prometheus.yml`. Dans cet exemple, nous allons surveiller les performances de `https://www.telegraph.co.uk`.
sudo gedit /etc/prometheus/prometheus.yml

- job_name: 'blackbox'
  metrics_path: /probe
  params:
    module: [http_2xx] # Vérifie que le code de réponse HTTP est 200.
  static_configs:
    - targets:
      - https://www.telegraph.co.uk
  relabel_configs:
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
    - target_label: __address__
      replacement: 127.0.0.1:9115 # L'adresse et le port de Blackbox Exporter.
sudo systemctl restart prometheus.service
  • Vérifiez les cibles sur http://localhost:9090/targets. Vous devriez voir un job `blackbox` en fonctionnement avec le point de terminaison défini.
  • Cliquez sur « Graph » et entrez la requête : `probe_http_duration_seconds`.

  • Un graphique montrant les données collectées par Prometheus sera généré.

Passons maintenant à la visualisation des données de Blackbox dans Grafana.

Une méthode rapide pour commencer consiste à utiliser un tableau de bord préconçu, comme le tableau de bord Prometheus Blackbox Exporter.

  • Dans Grafana, cliquez sur le signe `+` puis sur « Importer ».
  • Dans la section « Importer via grafana.com », entrez l’identifiant 7587 et cliquez sur « Charger ».
  • Choisissez ensuite votre source de données Prometheus et cliquez sur « Importer ».

  • Le tableau de bord Prometheus Blackbox Exporter est maintenant importé.
  • Vous pouvez observer des métriques comme la durée globale de la sonde, le statut, la durée HTTP, la durée moyenne de la sonde, la recherche DNS moyenne, la date d’expiration SSL, et bien d’autres.

  • Chaque métrique est affichée sur un panneau séparé. Examinons le panneau « Durée HTTP » plus en détail. Il affiche les temps nécessaires à la connexion, au traitement de la requête, à la résolution DNS, à la négociation TLS et au transfert des données.

Le tableau de bord offre de nombreuses options d’exploration. Vous pouvez modifier la plage temporelle affichée ou l’intervalle de rafraîchissement des données. Ici, par exemple, les nouvelles données sont mises à jour toutes les 5 secondes.

  • Cliquez sur la flèche vers le bas du panneau « Durée HTTP » puis sur « Modifier ».

  • L’éditeur de requête apparaît. La requête actuelle pour ce graphique est `probe_http_duration_seconds`.

  • Il existe des centaines de requêtes disponibles que vous pouvez visualiser et ajouter à votre tableau de bord.

  • Vous pouvez aussi changer le type de visualisation. Par exemple, la durée moyenne de la sonde est affichée sous forme de texte. Changez le type de visualisation pour un graphique de type « Jauge ».

  • Et voici le résultat.

Conclusion

Ce guide vous donne une idée de la simplicité avec laquelle vous pouvez suivre les performances de votre site web en utilisant Prometheus Blackbox Exporter et Grafana. Les possibilités sont vastes, n’hésitez pas à expérimenter pour en découvrir toutes les facettes. Si vous êtes intéressé par l’apprentissage de Grafana, consultez ce cours en ligne.

Avez-vous apprécié cet article ? Pourquoi ne pas le partager avec votre entourage ?