Dans le cadre de notre mission d’infogérance pour un client, il nous a été demandé de pouvoir ingérer des données temporelles pouvant rétro-compatible dans Grafana.

Ce cas d’étude présente comment nous avons résolu ce problème, et comment cela peut vous aider dans la conception de votre architecture.

Contexte du problème

Description du problème : Le client utilisait des scénarios régulier et des métriques serveur pour son alerting mais la solution était limitée. Il a été décidé d’ajouter un outil permettant l’analyse sur les transactions réelles réalisées par les utilisateurs finaux.

Ceci permettra de détecter et d’analyser plus finement ce qui se passe sur la plateforme et améliorer la détection de la cause “racine”.

Analyse et Solution

Grafana a été choisi pour cet usage mais ne résolvait pas le problème de rétro-compatibilité et de batching lors de l’ingestion des données.

Problème :

  • Une transaction client pouvant arriver dans le pipeline d’ingestion plusieurs minutes après sa création il est nécessaire de pouvoir ingérer des données de manière rétro-compatible.
  • Mimir et Prometheus ne permette pas d’ingérer des données out-of-order on ne peut donc pas les utiliser.

Solution mise en place

Utilisation d’InfluxDB Cloud comme source des données de Grafana Cloud

Solution :

  • Ingestion de données out-of-order : InfluxDB permet l’ingestion de données temporelles de manière rétro-compatible
  • Intégration avec Grafana : InfluxDB Serverless peut-être utilisé comme datasource Grafana après création d’une dbrp (database rétention policy)
  • Compatibilité avec InfluxQL v3: InfluDB et Grafana en version Cloud permettent l’utilisation d’InfluxQL v3, dont la syntaxe est proche de SQL, facilitant ainsi le requêtage de données.

Résultats obtenus

Après adaptation de la structure des données pour récupération correcte des Tags InfluxDB par Grafana nous avons pu mettre en place les différents niveaux de dashboards.

Nous avons aussi pu valider le principe d’une segmentation client dans Grafana :

  • Une organisation Grafana peut être limitée à une ou plusieurs datasources et chaque dsatasource est créée avec un token donnant des permissions sur un ou plusieurs buckets.
  • Un utilisateur de l’organisation a ainsi accès seulement à ces buckets

Nos conseils

Définir une structure de données claire : La structure des données doit être définie en amont, à la fois pour répondre aux cas d’usages, mais aussi pour faciliter l’affichage dans Grafana via InfluxQL dont les « tags » fonctionnent différement des colonnes en SQL