Skip to main content
Ce moteur est conçu pour la réduction et l’agrégation/la mise en moyenne (rollup) des données Graphite. Il peut être utile aux développeurs qui souhaitent utiliser ClickHouse comme système de stockage pour Graphite. Vous pouvez utiliser n’importe quel moteur de table ClickHouse pour stocker les données Graphite si vous n’avez pas besoin de rollup, mais si vous en avez besoin, utilisez GraphiteMergeTree. Le moteur réduit le volume de stockage et améliore l’efficacité des requêtes Graphite. Le moteur hérite des propriétés de MergeTree.

Créer une table

Voir une description détaillée de la requête CREATE TABLE. Une table destinée aux données Graphite doit comporter les colonnes suivantes :
  • Nom de la métrique (capteur Graphite). Type de données : String.
  • Date et heure de mesure de la métrique. Type de données : DateTime.
  • Valeur de la métrique. Type de données : Float64.
  • Version de la métrique. Type de données : tout type numérique (ClickHouse conserve les lignes ayant la version la plus élevée ou la dernière écrite si les versions sont identiques. Les autres lignes sont supprimées lors de la fusion des parties de données).
Les noms de ces colonnes doivent être définis dans la configuration de rollup. Paramètres de GraphiteMergeTree
  • config_section — Nom de la section du fichier de configuration dans laquelle sont définies les règles de rollup.
Clauses de requête Lors de la création d’une table GraphiteMergeTree, les mêmes clauses sont requises que lors de la création d’une table MergeTree.

Configuration du rollup

Les paramètres du rollup sont définis par le paramètre graphite_rollup dans la configuration du serveur. Le nom du paramètre peut être choisi librement. Vous pouvez créer plusieurs configurations et les utiliser pour différentes tables. Structure de la configuration du rollup :
  • required-columns
  • patterns

Colonnes requises

path_column_name

path_column_name — Nom de la colonne qui stocke le nom de la métrique (capteur Graphite). Valeur par défaut : Path.

time_column_name

time_column_name — Le nom de la colonne qui stocke l’heure de mesure de la métrique. Valeur par défaut : Time.

value_column_name

value_column_name — Le nom de la colonne qui stocke la valeur de la métrique à l’instant défini dans time_column_name. Valeur par défaut : Value.

version_column_name

version_column_name — Le nom de la colonne stockant la version de la métrique. Valeur par défaut : Timestamp.

Patterns

Structure de la section patterns :
Les sections pattern doivent être strictement ordonnées :
  1. Les sections pattern sans function ni retention.
  2. Les sections pattern avec function et retention.
  3. La section default.
Lors du traitement d’une ligne, ClickHouse vérifie les règles dans les sections pattern. Chacune des sections pattern (y compris default) peut contenir le paramètre function pour l’agrégation, les paramètres retention, ou les deux. Si le nom de la métrique correspond à regexp, les règles de la section pattern (ou des sections pattern) sont appliquées ; sinon, les règles de la section default sont utilisées. Champs des sections pattern et default :
  • rule_type - le type d’une règle. Il s’applique uniquement à certaines métriques. Le moteur l’utilise pour séparer les métriques simples et les métriques avec tags. Paramètre facultatif. Valeur par défaut : all. Il n’est pas nécessaire lorsque les performances ne sont pas critiques, ou lorsqu’un seul type de métriques est utilisé, par exemple des métriques simples. Par défaut, un seul ensemble de règles est créé. Sinon, si l’un des types spéciaux est défini, deux ensembles différents sont créés. Un pour les métriques simples (root.branch.leaf) et un pour les métriques avec tags (root.branch.leaf;tag1=value1). Les règles par défaut se retrouvent dans les deux ensembles. Valeurs valides :
    • all (par défaut) - une règle universelle, utilisée lorsque rule_type est omis.
    • plain - une règle pour les métriques simples. Le champ regexp est traité comme une expression régulière.
    • tagged - une règle pour les métriques avec tags (les métriques sont stockées dans la DB au format someName?tag1=value1&tag2=value2&tag3=value3). L’expression régulière doit être triée par nom de tag, le premier tag devant être __name__ s’il existe. Le champ regexp est traité comme une expression régulière.
    • tag_list - une règle pour les métriques avec tags, avec une DSL simple pour faciliter la description des métriques au format graphite someName;tag1=value1;tag2=value2, someName ou tag1=value1;tag2=value2. Le champ regexp est converti en règle tagged. Le tri par nom de tag n’est pas nécessaire, il sera effectué automatiquement. La valeur d’un tag (mais pas son nom) peut être définie comme une expression régulière, par exemple env=(dev|staging).
  • regexp – Un motif pour le nom de la métrique (expression régulière ou DSL).
  • age – L’âge minimal des données, en secondes.
  • precision– Le niveau de précision utilisé pour définir l’âge des données en secondes. Doit être un diviseur de 86400 (secondes dans une journée).
  • function – Le nom de la fonction d’agrégation à appliquer aux données dont l’âge se situe dans l’intervalle [age, age + precision]. Fonctions acceptées : min / max / any / avg. La moyenne est calculée de manière imprécise, comme la moyenne des moyennes.

Exemple de configuration sans types de règles

Exemple de configuration avec type de règle

Le rollup des données est effectué pendant les fusions. En général, pour les anciennes partitions, les fusions ne démarrent pas ; pour effectuer le rollup, il faut donc déclencher une fusion non planifiée à l’aide de optimize. Vous pouvez également utiliser des outils supplémentaires, par exemple graphite-ch-optimizer.
Dernière modification le 23 juillet 2026