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
-
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).
config_section— Nom de la section du fichier de configuration dans laquelle sont définies les règles de rollup.
GraphiteMergeTree, les mêmes clauses sont requises que lors de la création d’une table MergeTree.
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
patterns :
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 lorsquerule_typeest omis.plain- une règle pour les métriques simples. Le champregexpest 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 formatsomeName?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 champregexpest 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 graphitesomeName;tag1=value1;tag2=value2,someNameoutag1=value1;tag2=value2. Le champregexpest converti en règletagged. 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 exempleenv=(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.