Graphite est un système de graphiques en temps réel hautement évolutif et un outil de surveillance au niveau de l'entreprise. Utilisé pour collecter des informations sur le site Web en temps réel et effectuer des statistiques, et peut collecter diverses informations sur l'état de fonctionnement des services de site Web.
Qui devrait utiliser Graphite ?
Toute personne souhaitant suivre une valeur numérique sur le long terme. Si vous avez un nombre qui peut changer au fil du temps et que vous souhaitez peut-être représenter graphiquement cette valeur au fil du temps, alors Graphite peut répondre à vos besoins.
Plus précisément, Graphite est conçu pour gérer des données de séries chronologiques numériques. Par exemple, Graphite est idéal pour représenter graphiquement les cours boursiers, car ce sont des chiffres qui changent avec le temps. Qu'il s'agisse de quelques points de données ou de dizaines de mesures de performances provenant de milliers de serveurs, Graphite est fait pour vous. En prime, vous n'avez pas besoin de connaître les noms de ces éléments à l'avance (qui veut maintenir une configuration aussi énorme ?) ; il vous suffit d'envoyer un nom de métrique, un horodatage et une valeur, et Graphite s'occupe du reste.
Dans quelle mesure Graphite est-il évolutif ?
Du point de vue du processeur, Graphite évolue horizontalement sur le front-end et le back-end, ce qui signifie que vous pouvez simplement ajouter plus de machines pour obtenir plus de débit. Il est également tolérant aux pannes, c'est-à-dire que la perte d'une machine principale entraînera une perte de données minimale (indépendamment de ce que cette machine a mis en cache en mémoire) et ne cassera pas le système si vous disposez de suffisamment de capacité restante pour gérer la charge.
Du point de vue des E/S, sous charge, Graphite effectuera très rapidement de nombreuses petites opérations d’E/S sur de nombreux fichiers différents. En effet, chaque métrique différente envoyée à Graphite est stockée dans son propre fichier de base de données, de la même manière que de nombreux outils construits sur RRD (drraw, Cacti, Centreon, etc.) fonctionnent. En fait, Graphite a initialement utilisé RRD pour le stockage jusqu'à ce que des limitations fondamentales apparaissent nécessitant un nouveau moteur de stockage.
Une capacité élevée (des milliers de métriques différentes mises à jour par minute) nécessite presque une bonne matrice RAID et/ou SSD. Si le disque ne peut pas suivre le grand nombre de petites écritures (seulement quelques octets par point de données, mais la plupart des disques standard ne peuvent pas gérer plus de quelques milliers d'opérations d'E/S par seconde, même si elles sont petit), les données entrantes du backend de Graphite seront mises en cache. Lorsque cela se produit, le moteur de base de données de Graphite murmure en permettant à Carbon d'écrire plusieurs points de données à la fois, augmentant ainsi le débit global au détriment de la mise en cache des données excédentaires en mémoire jusqu'à ce qu'elles puissent être écrites.
Graphite prend également en charge des backends de stockage alternatifs qui peuvent modifier considérablement ces fonctionnalités.
Dans quelle mesure le graphique est-il en temps réel ?
En temps très réel. Même sous une charge importante, lorsque le nombre de métriques entrantes par intervalle de temps est bien supérieur à la vitesse à laquelle le système de stockage peut effectuer des opérations d'E/S et qu'un grand nombre de points de données sont mis en cache dans le pipeline de stockage (voir l'explication de la question précédente ), Graphite peut toujours dessiner des graphiques en temps réel. L'astuce est que lorsque l'application Web Graphite reçoit une demande pour dessiner le graphique, elle récupère les données du disque ainsi que du cache de pré-stockage (le cache peut être distribué si vous avez plusieurs serveurs backend) et combine les deux sources de données. Combiné pour créer un graphique en temps réel.
Qui utilise déjà Graphite ?
Graphite a été développé en interne par Orbitz, où il est utilisé pour visualiser une variété de données opérationnelles clés, notamment les métriques des applications, les métriques des bases de données, les ventes, etc. Au moment d'écrire ces lignes, le système de production d'Orbitz peut traiter environ 160 000 métriques différentes par minute, fonctionnant sur deux serveurs Sun niagra-2 sur un SAN haut débit.
Dans quoi est écrit le graphite ?
L'application Web Graphite est construite sur le framework Web Django et utilise la boîte à outils GUI javascript ExtJS. Le rendu graphique est réalisé à l'aide de la bibliothèque graphique Cairo. Le backend et la base de données sont écrits en Python pur.
Qui écrira et maintiendra Graphite ?
Le graphite a été développé à l'origine par Chris Davis d'Orbitz. Orbitz fait depuis longtemps partie de la communauté open source et a publié un certain nombre d'autres produits développés en interne.
Graphite est actuellement développé par une équipe de bénévoles au sein de l'organisation Graphite-Project GitHub.