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
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.