Todos os produtos
Search
Central de documentação

Elasticsearch:Melhores práticas para resumir tráfego com Rollup

Última atualização: Jun 27, 2026

À medida que os dados de séries temporais se acumulam, os custos de armazenamento crescem linearmente com o volume. O mecanismo de rollup do Elasticsearch permite agregar dados históricos em resumos compactos por uma fração do custo de armazenamento original, mantendo o suporte a consultas de agregação via Kibana.

Este tutorial apresenta um fluxo de trabalho completo de rollup para dados de monitoramento de tráfego do Logstash: criação de um job de rollup, consulta ao índice de rollup e construção de um painel no Kibana para visualizar as métricas networkoutTraffic e networkinTraffic por ID da instância, com granularidade horária.

Os comandos deste tutorial aplicam-se ao Elasticsearch V7.4. Para comandos da versão V6.x, consulte Getting started with rollups .

Pré-requisitos

Antes de começar, verifique se você possui:

Execute todos os comandos de API deste tutorial no console do Kibana.

Contexto

O índice source utilizado neste tutorial segue o padrão monitordata-logstash-sls-*, onde * representa a data no formato YYYY-MM-DD. Um novo índice é criado diariamente.

O mapeamento do índice é:

"monitordata-logstash-sls-2020-04-05" : {
    "mappings" : {
      "properties" : {
        "@timestamp" : {
          "type" : "date"
        },
        "__source__" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "disk_type" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "host" : {
          "type" : "keyword"
        },
        "instanceId" : {
          "type" : "keyword"
        },
        "metricName" : {
          "type" : "keyword"
        },
        "monitor_type" : {
          "type" : "keyword"
        },
        "networkinTraffic" : {
          "type" : "double"
        },
        "networkoutTraffic" : {
          "type" : "double"
        },
        "node_spec" : {
          "type" : "keyword"
        },
        "node_stats_node_master" : {
          "type" : "keyword"
        },
        "resource_uid" : {
          "type" : "keyword"
        }
      }
    }
  }
}

Etapa 1: Crie um job de rollup

Um job de rollup define quais índices source agregar, quais campos usar para agrupamento, quais métricas calcular e a frequência de execução.

O job abaixo lê dados de monitordata-logstash-sls-*, agrupa os dados por hora e ID da instância, calcula a soma de cada campo de tráfego e executa a cada 15 minutos.

PUT _rollup/job/ls-monitordata-sls-1h-job1
{
    "index_pattern": "monitordata-logstash-sls-*",
    "rollup_index": "monitordata-logstash-rollup-1h-1",
    "cron": "0 */15 * * * ?",
    "page_size" :1000,
    "groups" : {
      "date_histogram": {
        "field": "@timestamp",
        "fixed_interval": "1h"
      },
      "terms": {
        "fields": ["instanceId"]
      }
    },
    "metrics": [
        {
            "field": "networkoutTraffic",
            "metrics": ["sum"]
        },
        {
            "field": "networkinTraffic",
            "metrics": ["sum"]
        }
    ]
}

Parâmetros:

Parâmetro

Obrigatório

Tipo

Descrição

index_pattern

Sim

string

Índice source ou padrão de índice. Aceita caracteres curinga (*).

rollup_index

Sim

string

Índice de destino para os resumos de rollup. Deve ser um nome completo; caracteres curinga não são suportados.

cron

Sim

string

Frequência de execução do job de rollup. Controla a periodicidade do job, não a granularidade da agregação.

page_size

Sim

integer

Quantidade de resultados de bucket processados por iteração. Valores maiores aceleram o processamento, mas aumentam o uso de memória.

groups

Sim

object

Defina os campos de agrupamento e os métodos de agregação.

groups.date_histogram

Sim

object

Agrupa o campo de data em buckets baseados em tempo.

groups.date_histogram.field

Sim

string

Campo de data a ser incluído no rollup.

groups.date_histogram.fixed_interval

Sim

time unit

Granularidade da agregação. 1h agrupa os dados em buckets de 1 hora. Este é o intervalo mínimo de consulta suportado no índice de rollup.

groups.terms

Não

object

Agrupa pelos campos de termo especificados.

groups.terms.fields

Sim

string

Campos para agrupamento. Aceita tipos de campo keyword ou numéricos, em qualquer ordem.

metrics

Não

object

Defina quais campos numéricos serão agregados.

metrics[].field

Sim

string

Campo a ser agregado.

metrics[].metrics

Sim

array

Operadores de agregação a serem aplicados: min, max, sum, avg ou value_count.

Para a referência completa de parâmetros, consulte Create rollup jobs API.

Regras de configuração:

  • index_pattern e rollup_index devem ser diferentes. Se index_pattern for um caractere curinga que corresponda a rollup_index, a API retornará um erro.

  • O mapeamento de rollup_index utiliza o tipo object. Definir o mesmo valor de index_pattern causará um erro.

  • Jobs de rollup suportam apenas agregação de histograma de data, agregação de histograma e agregação de termos. Para mais detalhes, consulte Rollup aggregation limitations.

Etapa 2: Execute o job de rollup e verifique seu status

  1. Execute o job de rollup:

    POST _rollup/job/ls-monitordata-sls-1h-job1/_start
  2. Recupere a configuração do job, as estatísticas e o status atual:

    GET _rollup/job/ls-monitordata-sls-1h-job1/

    Para o esquema completo da resposta, consulte Get rollup jobs API. Uma resposta bem-sucedida será semelhante a:

    {
         ........
          "status" : {
            "job_state" : "indexing",
            "current_position" : {
              "@timestamp.date_histogram" : 1586775600000,
              "instanceId.terms" : "ls-cn-ddddez****"
            },
            "upgraded_doc_id" : true
          },
          "stats" : {
            "pages_processed" : 3,
            "documents_processed" : 11472500,
            "rollups_indexed" : 3000,
            "trigger_count" : 1,
            "index_time_in_ms" : 766,
            "index_total" : 3,
            "index_failures" : 0,
            "search_time_in_ms" : 68559,
            "search_total" : 3,
            "search_failures" : 0
          }
    }

Etapa 3: Consultar o índice de rollup

Os documentos de rollup possuem uma estrutura interna diferente dos dados brutos. Ao consultar um índice de rollup, o Elasticsearch reescreve sua Query DSL para corresponder ao formato de rollup e restaura o resultado para a estrutura esperada pelo seu cliente.

  1. Recupere todos os documentos no índice de rollup:

    GET monitordata-logstash-rollup-1h-1/_search
    {
      "query": {
        "match_all": {}
      }
    }
  2. Use _rollup_search para calcular a soma de networkoutTraffic:

    GET /monitordata-logstash-rollup-1h-1/_rollup_search
    {
        "size": 0,
        "aggregations": {
            "sum_temperature": {
                "sum": {
                    "field": "networkoutTraffic"
                }
            }
        }
    }

_rollup_search suporta um subconjunto dos recursos de pesquisa padrão:

Recurso

Suporte

Observações

query

Suportado

Query DSL com restrições. Tipos suportados: term, terms, range, match_all e consultas compostas (Boolean, boosting, constant score).

aggregations

Suportado

Parâmetro de agregação padrão.

size

Deve ser 0 ou omitido

O rollup funciona apenas com agregações; documentos brutos não são retornados.

highlighter, suggestors, post_filter, profile, explain

Não suportado

Para a lista completa de restrições, consulte Rollup search limitations e Rollup aggregation limitations.

Limitações de consulta:

  • Especifique apenas um índice de rollup por consulta. Correspondência aproximada (fuzzy match) no nome do índice de rollup não é suportada. Consultas de dados em tempo real aceitam múltiplos índices.

Etapa 4: Crie um padrão de índice de rollup

Antes de visualizar dados de rollup no Kibana, crie um padrão de índice de rollup para que o Kibana reconheça o índice.

  1. Faça login no console do Kibana. Para obter instruções, consulte Log on to the Kibana console.

  2. No painel de navegação à esquerda, clique em Management.

    Management icon

  3. Na área Kibana, clique em Index Patterns.

  4. Opcional: Feche a página About index patterns. Pule esta etapa caso já tenha criado um padrão de índice anteriormente.

  5. Escolha Create index pattern > Rollup index pattern.

    Rollup index pattern

  6. No campo Index pattern, insira o nome do índice de rollup (por exemplo, monitordata-logstash-rollup-1h-1) e clique em Next step.

    Index pattern field

  7. Na lista suspensa Time Filter field name, selecione @timestamp.

    Time Filter field name drop-down list

  8. Clique em Create index pattern.

Etapa 5: Crie gráficos de monitoramento de tráfego

Crie gráficos de linha para networkinTraffic e networkoutTraffic utilizando o padrão de índice de rollup.

  1. Faça login no console do Kibana. Para obter instruções, consulte Log on to the Kibana console.

  2. Crie um gráfico de linha:

    1. No painel de navegação à esquerda, clique em Visualize. Visualize图标

    2. Clique em Create new visualization.

    3. Na caixa de diálogo New Visualization, clique em Line.

    4. Na lista de padrões de índice, selecione o padrão de índice de rollup criado na Etapa 4.

  3. Configure as definições de Metrics e Buckets:

    1. Na seção Metrics, clique em Y-axi下拉箭头.

    2. Defina os parâmetros do eixo Y:

      Parâmetro

      Valor

      Aggregation

      Sum

      Field

      networkinTraffic ou networkoutTraffic

      Custom label

      Insira um rótulo para o eixo Y

    3. Na seção Buckets, escolha Add > X-axis.

    4. Defina os parâmetros do eixo X:

      Parâmetro

      Valor

      Aggregation

      date_histogram (conforme definido em groups na Etapa 1)

      Field

      @timestamp

      Minimum interval

      Múltiplo inteiro do intervalo de rollup (por exemplo, 2h ou 3h). O padrão é a granularidade de agregação definida no job de rollup.

    5. Clique em Apply Changes Apply Changes图标.

  4. Na barra de navegação superior, clique em Save.

  5. Repita as etapas acima para criar um gráfico de medidor (gauge chart).

Etapa 6: Crie um painel de monitoramento de tráfego

  1. No painel de navegação à esquerda, clique em Dashboard.

    Dashboard icon

  2. Clique em Create new dashboard.

  3. Na barra de navegação superior, clique em Add.

  4. Na página Add panels, clique em Save na barra de navegação superior.

  5. Feche a página Add panels e clique em Save na barra de navegação superior.

  6. Insira um nome para o painel e clique em Confirm Save. O painel será exibido.

  7. Clique em + Add filter, selecione um item de filtro, configure as condições e clique em Save.