Surveillance de bases de données MariaDB et MySQL
L'outil mysqld_exporter permet l'extraction des métriques de performance pour les instances MySQL. Son fonctionnement repose sur une connexion authentifiée à la base de données avec des privilèges restreints.
Déploiement via Docker Stack
Pour un cluster MariaDB Galera, il est recommandé de déployer un exportateur par nœud de base de données. Voici un exemple de configuration docker-compose.yml utilisant un réseau externe nommé monitoring-net :
version: '3.8'
networks:
monitoring-net:
external: true
services:
db-metrics-node1:
image: quintoandar/mysqld_exporter:latest
deploy:
placement:
constraints:
- node.hostname == srv-db-01
networks:
- monitoring-net
environment:
DATA_SOURCE_NAME: "exporter_user:password_secure@(mysql-cluster:3306)/"
db-metrics-node2:
image: quintoandar/mysqld_exporter:latest
deploy:
placement:
constraints:
- node.hostname == srv-db-02
networks:
- monitoring-net
environment:
DATA_SOURCE_NAME: "exporter_user:password_secure@(mysql-cluster:3306)/"
Intégration dans Prometheus
Dans le fichier prometheus.yml, définissez une tâche de collecte pour regrouper vos cibles de base de données :
scrape_configs:
- job_name: 'mysql-nodes'
static_configs:
- targets:
- 'db-metrics-node1:9104'
- 'db-metrics-node2:9104'
Supervision de Microservices Spring Boot
L'intégration de Prometheus dans un écosystème Java Spring Boot nécessite l'utilisation de Micrometer pour exposer les métriques via un point de terminaison HTTP.
Configuration Maven
Ajoutez les dépendances suivantes dans votre fichier pom.xml :
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Paramétrage de l'application (application.yml)
Exposez le point de terminaison Prometheus et activez la collecte détaillée des statistiques de la JVM :
management:
endpoints:
web:
exposure:
include: 'prometheus,health,info'
metrics:
export:
prometheus:
enabled: true
distribution:
percentiles-histogram:
http.server.requests: true
Collecte de métriques système avec Node Exporter
node_exporter est l'agent standard pour collecter les ressources matérielles (CPU, RAM, Disque, Réseau) sur les serveurs Linux.
Configuration Docker pour un cluster de serveurs
services:
system-monitor:
image: prom/node-exporter:latest
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
deploy:
mode: global
networks:
- monitoring-net
Monitoring du cache Redis
Pour Redis, l'exportateur peut être configuré pour surveiller plusieurs instances distantes à partir d'un seul conteneur.
Configuration de la tâche de collecte Prometheus
L'exemple ci-dessous illustre l'utilisation du mécanisme de relabeling pour interroger plusieurs instances Redis :
scrape_configs:
- job_name: 'redis-multi-targets'
static_configs:
- targets:
- redis://10.0.5.10:6379
- redis://10.0.5.11:6379
metrics_path: /scrape
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: redis-exporter:9121
Supervsiion RabbitMQ
Depuis la version 3.8.0, RabbitMQ intègre nativement un plugin pour Prometheus, ce qui évite le déploiement d'un agent tiers.
Activation du plugin interne
Exécutez la commande suivante sur vos nœuds RabbitMQ :
rabbitmq-plugins enable rabbitmq_prometheus
Configuration Prometheus pour RabbitMQ
Le point de terminaison par défaut utilise le port 15692 :
scrape_configs:
- job_name: 'rabbitmq-native'
static_configs:
- targets: ['mq-node-01:15692', 'mq-node-02:15692']
Monitoring Elasticsearch
L'exportateur communautaire permet de récupérer l'état de santé du cluster, les statistiques d'indexation et l'utilisation des shards.
services:
es-exporter:
image: prometheuscommunity/elasticsearch-exporter:latest
command:
- '--es.uri=http://elasticsearch-api:9200'
- '--es.all'
- '--es.indices'
networks:
- monitoring-net
Une fois les données collectées par Prometheus, l'étape finale consiste à importer les tableaux de bord (Dashboards) correspondants dans Grafana en utilisant les identifiants officiels fournis sur le portail Grafana Labs.