Skip to main content
Este motor foi projetado para reduzir e agregar/calcular médias (rollup) de dados do Graphite. Ele pode ser útil para desenvolvedores que queiram usar o ClickHouse como armazenamento de dados para o Graphite. Você pode usar qualquer motor de tabela do ClickHouse para armazenar dados do Graphite se não precisar de rollup, mas, se precisar, use 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

Veja uma descrição detalhada da consulta CREATE TABLE. Uma tabela para os dados do Graphite deve ter as seguintes colunas para os dados a seguir:
  • 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).
Os nomes dessas colunas devem ser definidos na configuração de rollup. Parâmetros do GraphiteMergeTree
  • config_section — Nome da seção no arquivo de configuração em que as regras de rollup são definidas.
Cláusulas da consulta Ao criar uma tabela GraphiteMergeTree, são necessárias as mesmas cláusulas que ao criar uma tabela MergeTree.

Configuração de rollup

As configurações de rollup são definidas pelo parâmetro graphite_rollup na configuração do servidor. O nome do parâmetro pode ser qualquer um. Você pode criar várias configurações e usá-las em tabelas diferentes. Estrutura da 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

Estrutura da seção patterns:
Os padrões devem ser estritamente ordenados:
  1. Padrões sem function nem retention.
  2. Padrões com function e retention.
  3. Padrão default.
Ao processar uma linha, o ClickHouse verifica as regras nas seções 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 quando rule_type é omitido.
    • plain - uma regra para métricas simples. O campo regexp é processado como expressão regular.
    • tagged - uma regra para métricas com tags (as métricas são armazenadas no DB no formato someName?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 campo regexp é 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 graphite someName;tag1=value1;tag2=value2, someName ou tag1=value1;tag2=value2. O campo regexp é convertido em uma regra tagged. 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.
Última modificação em 23 de julho de 2026