Introduction
Pour surveiller les métriques de bases de données telles que le TPS (transactions par seconde) et le QPS (requêtes par seconde), ainsi que les informations système comme l'utilisation du CPU et de la mémoire, un système de surveillance basé sur une base de données temporelle est essentiel. Cet article décrit comment configurer Grafana et InfluxDB sur Windows pour créer un tableau de bord de surveillance, en utilisant des scripts Python pour collecter et envoyer des données.
- Installation de Grafana
Pour installer Grafana sur Windows, téléchargez-le depuis le site officiel et suivez les instructions. Grafana utilise Sqlite3 en backend et nécessite GCC pour la compilation ; installez donc TDM-GCC au préalable. Copiez le fichier conf/sample.ini vers conf/custom.ini et modifiez le port du serveur web à 8080 ou une autre valeur (par exemple 8082 dans cette configuration) car le port par défaut 3000 peut requérir des privilèges élevés.
Pour exécuter Grafana en tant que service Windows, utilisez l'outil NSSM. Exécutez grafana-server.exe depuis la ligne de commande pour démarrer, ou configurez-le comme service via NSSM pour une gestion automatique.
- Installation et configuration d'InfluxDB
InfluxDB est une base de données temporelle open source écrite en Go, idéale pour stocker des séries chronologiques comme les métriques système. Elle offre des fonctionnalités d'agrégation temporelle, de calcul en temps réel et de gestion d'événements.
Téléchargez InfluxDB depuis la page officielle des téléchargements : https://portal.influxdata.com/downloads#influxddb. Choisissez la version Windows binaries, par exemple influxdb-1.3.5_windows_amd64.zip. Décompressez l'archive dans un répertoire dédié ; aucune installation formelle n'est requise.
Si le fichier de configuration est absent, générez-le avec la commande :
influxd config > influxdb.confPour activer l'interface web d'administration (accessible sur le port 8083), modifiez le fichier influxdb.conf en ajustant la section [admin] :
[admin]
enabled = true
bind-address = ":8083"
Adaptez les chemins de fichiers si nécessaire. Démarrez InfluxDB en exécutant :
influxd -config influxdb.confVérifiez le démarrage via la console et accédez à l'interface web à http://localhost:8083/ pour configurer les connexions.
- Création de données et configuration de Grafana
Une fois InfluxDB opérationnel, créez une base de données et des mesures via l'interface web ou l'interface en ligne de commande InfluxQL. Pour plus de détails, consultez la documentation officielle : https://docs.influxdata.com/influxdb/v1.1/introduction/getting_started/.
Dans Grafana, connectez-vous à l'interface (par exemple, sur le port 8082), ajoutez une nouvelle source de données en sélectionnant InfluxDB, et saisissez les informations de connexion (URL, base de données, identifiants). Ensuite, créez un tableau de bord pour visualiser les métriques en ajoutant des panneaux et en définissant des requêtes InfluxQL.
- Utilisation de Python pour interagir avec InfluxDB
Python peut être utilisé pour envoyer des données à InfluxDB via la bibliothèque influxdb-python. Installez-la depuis le dépôt GitHub : https://github.com/influxdb/influxdb-python.git en exécutant python setup.py install. Vérifiez l'instalation en important le module dans Python sans erreur.
Exemple de code pour manipuler des mesures dans InfluxDB :
#! /usr/bin/env python
# -*- coding: utf-8 -*-
from influxdb import InfluxDBClient
# Définition d'un jeu de données exemple
donnees_exemple = [
{
"measurement": "personnel",
"tags": {
"identifiant": "emp789"
},
"fields": {
"age": 28,
"role": "developpeur"
}
}
]
def lister_mesures(client):
requete = 'show measurements;'
resultat = client.query(requete)
print("Mesures disponibles : {}".format(resultat))
# Initialisation du client pour la base 'db_surveillance'
client_influx = InfluxDBClient('localhost', 8086, 'admin', 'secret', 'db_surveillance')
lister_mesures(client_influx)
client_influx.write_points(donnees_exemple) # Insertion des données
lister_mesures(client_influx)
client_influx.query("drop measurement personnel") # Suppression de la mesure
lister_mesures(client_influx)
Ce code illustre la connexion à InfluxDB, l'insertion de points de données et la gestion des mesures. Il peut être adapté pour collecter des métriques système ou de bases de données en temps réel.
- Clients supplémentaires pour InfluxDB
Pour les environnements .NET, utilisez la bibliothèque InfluxDB.Client.Net disponible via NuGet. Exécutez la commande suivante dans la console du gestionnaire de packages de Visual Studio :
Install-Package AdysTech.InfluxDB.Client.Net -Version 0.6.7Consultez le dépôt GitHub pour plus d'informations : https://github.com/AdysTech/InfluxDB.Client.Net.