GraphiteMergeTree. O motor reduz o volume de armazenamento e aumenta a eficiência das consultas do Graphite.
O motor herda propriedades de MergeTree.
Criando uma tabela
-
Nome da métrica (sensor Graphite). Tipo de dado:
String. -
Hora da medição da métrica. Tipo de dado:
DateTime. -
Valor da métrica. Tipo de dado:
Float64. - Versão da métrica. Tipo de dado: qualquer tipo numérico (o ClickHouse salva as linhas com a versão mais alta ou a última gravada se as versões forem iguais. As outras linhas são excluídas durante a mesclagem das partes de dados).
config_section— Nome da seção no arquivo de configuração em que as regras de rollup são definidas.
GraphiteMergeTree, são necessárias as mesmas cláusulas que ao criar uma tabela MergeTree.
Configuração de rollup
- colunas-obrigatórias
- padrões
Colunas obrigatórias
path_column_name
path_column_name — O nome da coluna que armazena o nome da métrica (sensor Graphite). Valor padrão: Path.
time_column_name
time_column_name — O nome da coluna que armazena o instante da medição da métrica. Valor padrão: Time.
value_column_name
value_column_name — O nome da coluna que armazena o valor da métrica no momento definido em time_column_name. Valor padrão: Value.
version_column_name
version_column_name — Nome da coluna que armazena a versão da métrica. Valor padrão: Timestamp.
Padrões
patterns:
pattern. Cada uma das seções pattern (incluindo default) pode conter o parâmetro function para aggregation, os parâmetros retention ou ambos. Se o nome da métrica corresponder a regexp, as regras da seção pattern (ou das seções) serão aplicadas; caso contrário, serão usadas as regras da seção default.
Campos das seções pattern e default:
rule_type- o tipo da regra. Ele é aplicado apenas a determinadas métricas. O engine o utiliza para separar métricas simples de métricas com tags. Parâmetro opcional. Valor padrão:all. Ele é desnecessário quando o desempenho não é crítico ou quando apenas um tipo de métricas é usado, por exemplo, métricas simples. Por padrão, apenas um conjunto de regras é criado. Caso contrário, se qualquer um dos tipos especiais for definido, dois conjuntos diferentes serão criados. Um para métricas simples (root.branch.leaf) e outro para métricas com tags (root.branch.leaf;tag1=value1). As regras padrão acabam sendo incluídas em ambos os conjuntos. Valores válidos:all(padrão) - uma regra universal, usada quandorule_typeé omitido.plain- uma regra para métricas simples. O camporegexpé processado como expressão regular.tagged- uma regra para métricas com tags (as métricas são armazenadas no DB no formatosomeName?tag1=value1&tag2=value2&tag3=value3). A expressão regular deve ser ordenada pelos nomes das tags; a primeira tag deve ser__name__, se existir. O camporegexpé processado como expressão regular.tag_list- uma regra para métricas com tags, uma DSL simples para facilitar a descrição de métricas no formato graphitesomeName;tag1=value1;tag2=value2,someNameoutag1=value1;tag2=value2. O camporegexpé convertido em uma regratagged. A ordenação pelos nomes das tags é desnecessária; isso será feito automaticamente. O valor de uma tag (mas não o nome) pode ser definido como uma expressão regular, por exemplo,env=(dev|staging).
regexp– Um padrão para o nome da métrica (expressão regular ou DSL).age– A idade mínima dos dados, em segundos.precision– Com que precisão definir a idade dos dados em segundos. Deve ser um divisor de 86400 (segundos em um dia).function– O nome da função de aggregation a ser aplicada aos dados cuja idade esteja no intervalo[age, age + precision]. Funções aceitas: min / max / any / avg. A média é calculada de forma imprecisa, como a média das médias.
Exemplo de configuração sem tipos de regra
Exemplo de configuração com tipos de regras
O rollup de dados é realizado durante as mesclagens. Normalmente, as mesclagens não são iniciadas para partições antigas, portanto, para fazer o rollup, é necessário acionar uma mesclagem não programada usando optimize. Outra opção é usar ferramentas adicionais, por exemplo, graphite-ch-optimizer.