GraphiteMergeTree。该引擎可减少存储占用,并提高 Graphite 查询的效率。
该引擎继承了 MergeTree 的特性。
创建表
-
指标名称 (Graphite 指标) 。数据类型:
String。 -
指标的测量时间。数据类型:
DateTime。 -
指标的值。数据类型:
Float64。 - 指标的版本。数据类型:任意数值类型 (ClickHouse 会保留版本最高的行;如果版本相同,则保留最后写入的行。其他行会在数据分区片段合并期间被删除) 。
config_section— 配置文件中定义 rollup 规则的节名称。
GraphiteMergeTree 表时,需要使用与创建 MergeTree 表时相同的子句。
rollup 配置
所需列
path_column_name
path_column_name — 用于存储指标名称 (Graphite 指标) 的列名。默认值:Path。
time_column_name
time_column_name — 存储指标采集时间的列名。默认值:Time。
value_column_name
value_column_name — 存储 time_column_name 中所设时间点对应指标值的列名。默认值:Value。
version_column_name
version_column_name — 用于存储指标版本的列名。默认值:Timestamp。
匹配规则
patterns 部分的结构:
pattern 部分中的规则。每个 pattern (包括 default) 部分都可以包含用于 aggregation 的 function 参数、retention 参数,或同时包含两者。如果指标名称匹配 regexp,则应用 pattern 部分中的规则 (或多条规则) ;否则,使用 default 部分中的规则。
pattern 和 default 部分中的字段:
rule_type- 规则类型。它仅应用于特定指标。引擎使用它来区分普通指标和带标签的指标。可选参数。默认值:all。 如果性能不是关键因素,或者只使用一种指标类型 (例如普通指标) ,则不需要它。默认情况下,只会创建一组规则。否则,如果定义了任意特殊类型,则会创建两组不同的规则:一组用于普通指标 (root.branch.leaf) ,另一组用于带标签的指标 (root.branch.leaf;tag1=value1) 。 默认规则最终会同时出现在这两组中。 有效值:all(默认) - 通用规则,在省略rule_type时使用。plain- 普通指标的规则。字段regexp按 regular expression 处理。tagged- 带标签指标的规则 (指标在 DB 中以someName?tag1=value1&tag2=value2&tag3=value3格式存储) 。regular expression 必须按标签名称排序;如果存在,第一个标签必须是__name__。字段regexp按 regular expression 处理。tag_list- 带标签指标的规则,这是一种简单的 DSL,便于用 graphite 格式描述指标,例如someName;tag1=value1;tag2=value2、someName或tag1=value1;tag2=value2。字段regexp会被转换为一条tagged规则。无需按标签名称排序,系统会自动完成。标签的值 (而不是名称) 可以设置为 regular expression,例如env=(dev|staging)。
regexp– 指标名称的 pattern (正则或 DSL) 。age– 数据最小年龄 (秒) 。precision– 定义数据年龄 (秒) 时使用的精度。它应当是 86400 (一天的秒数) 的约数。function– 应用于年龄落在[age, age + precision]范围内的数据的聚合函数名称。可接受的函数:min / max / any / avg。平均值的计算并不精确,类似于对多个平均值再取平均。
不包含 rules 类型的配置示例
含规则类型的配置示例
数据 rollup 会在合并过程中执行。通常旧分区不会启动合并,因此要进行 rollup,需要使用 optimize 触发一次非计划合并。也可以使用其他工具,例如 graphite-ch-optimizer。