Os dados de monitoramento do Heartbeat crescem continuamente, aumentando a quantidade de shards e a carga do cluster. O gerenciamento de ciclo de vida de índice (ILM) automatiza as operações de rollover, shrink, migração e exclusão nas fases hot, warm, cold e delete para os índices heartbeat-*.
Procedimento
-
Etapa 1: Criar e configurar um cluster hot-warm
Crie um cluster hot-warm, ative a criação automática de índices e configure uma lista de permissões de IP de acesso público.
-
Etapa 2: Configurar o ILM no Heartbeat
Ative o ILM e defina seus parâmetros no arquivo heartbeat.yml. Durante a inicialização, o Heartbeat gera automaticamente um modelo de índice no Elasticsearch.
-
Etapa 3: Criar uma política de ILM
Crie uma política de ciclo de vida que defina as condições de rollover e arquivamento dos índices.
-
Etapa 4: Associar a política de ILM a um modelo de índice
Associe a política de ILM ao modelo de índice do Heartbeat.
-
Etapa 5: Aplicar a política de ILM a um índice
Aplique a política de ILM ao índice inicial do Heartbeat para que todos os índices subsequentes a herdem.
-
Etapa 6: Visualizar índices em cada fase
Visualize os índices em cada fase do ciclo de vida: hot, warm, cold e delete.
Etapa 1: Criar e configurar um cluster hot-warm
-
Crie um cluster hot-warm e verifique os atributos dos nós. A tabela a seguir compara os tipos de nó.
Tipo de nó
Requisitos de armazenamento de dados
Desempenho de leitura/gravação
Especificações
Requisitos de armazenamento
Nó hot
Dados recentes, como logs dos últimos dois dias.
Alto
Altas (por exemplo, 32 núcleos e 64 GB).
Discos em nuvem SSD recomendados.
Nó warm
Dados históricos, como logs com mais de dois dias.
Baixo
Baixas (por exemplo, 8 núcleos e 32 GB).
Ultra disks recomendados. O OpenStore também está disponível para armazenamento serverless de dados cold.
No Alibaba Cloud Elasticsearch, o valor de
box_typepara nós warm éwarm(não cold), correspondendo à camada warm do Elasticsearch nativo.-
Ao criar uma instância do Alibaba Cloud Elasticsearch, ative os nós warm para criar um cluster hot-warm.
Após ativar e adquirir os nós warm, o sistema adiciona o parâmetro
-Enode.attr.box_typeaos parâmetros de inicialização do nó:Nós de dados hot:
-Enode.attr.box_type=hotNós de dados warm:
-Enode.attr.box_type=warm
Os nós de dados funcionam como nós hot somente após a ativação dos nós warm.
Faça login no console Kibana do cluster. Consulte Conectar-se a um cluster usando o Kibana.
No painel de navegação à esquerda, clique em Dev Tools.
-
No Console, execute o comando abaixo para visualizar os atributos dos nós do cluster.
GET _cat/nodeattrs?v&h=host,attr,valueSe a resposta incluir nós hot e warm, o cluster suporta a arquitetura hot-warm.
-
Ative a criação automática de índices para o cluster desejado. Siga as instruções em Ativar a criação automática de índices configurando parâmetros YML.
Adicione o endereço IP do servidor Heartbeat à lista de permissões de IP do endpoint público do cluster. Consulte Configurar uma lista de permissões de IP.
Etapa 2: Configurar o ILM no Heartbeat
O guia da Elastic Set up index lifecycle management aborda a configuração detalhada do ILM.
Baixe e descompacte o pacote de instalação do Heartbeat.
-
Edite o arquivo heartbeat.yml para definir heartbeat.monitors, setup.template.settings, setup.kibana e output.elasticsearch.
Exemplo de configuração:
heartbeat.monitors: - type: icmp schedule: '*/5 * * * * * *' hosts: ["47.111.xx.xx"] setup.template.settings: index.number_of_shards: 3 index.codec: best_compression index.routing.allocation.require.box_type: "hot" setup.template.overwrite: true setup.kibana: host: "https://es-cn-4591jumei00xxxxxx.kibana.elasticsearch.aliyuncs.com:5601" output.elasticsearch: hosts: ["es-cn-4591jumei00xxxxxx.elasticsearch.aliyuncs.com:9200"] ilm.enabled: true ilm.rollover_alias: "heartbeat" ilm.pattern: "{now/d}-000001" username: "elastic" password: "<your_password>"Os principais parâmetros estão listados abaixo. A documentação de configuração do Heartbeat detalha todos os parâmetros disponíveis.
Parâmetro
Descrição
index.number_of_shards
Quantidade de shards primários. Padrão: 1.
index.routing.allocation.require.box_type
Direciona os dados do índice para nós hot.
setup.template.overwrite
Define se o modelo de índice existente deve ser sobrescrito. Defina como true se esta versão do modelo já estiver carregada. Este é um parâmetro de nível superior, no mesmo nível de
setup.template.settings.host
Endpoint público do seu serviço Kibana, disponível na página de configuração do Kibana.
hosts
Endpoint público ou interno do seu cluster Elasticsearch, disponível na página Basic Information. Consulte Visualizar informações básicas da instância. Endpoints públicos exigem que o IP do cliente esteja na lista de permissões de IP do cluster. Siga as instruções em Configurar uma lista de permissões de IP. Endpoints internos exigem que o cluster e o servidor Heartbeat estejam na mesma VPC.
ilm.enabled
Defina como
truepara ativar o ILM.ilm.rollover_alias
Alias para o índice após rollover. Padrão:
heartbeat-{beat.version}.ilm.pattern
Padrão para o nome do índice após rollover. Suporta date math. Padrão: {now/d}-000001. No rollover, o número final é incrementado (por exemplo,
heartbeat-2020.04.29-000001torna-seheartbeat-2020.04.29-000002).username
Padrão:
elastic.password
Senha do usuário
elastic, definida durante a criação da instância. Consulte Redefinir a senha de acesso de uma instância.ImportanteSe você modificar
ilm.rollover_aliasouilm.patternapós o carregamento do modelo de índice, será necessário definirsetup.template.overwritecomotruepara regravar o modelo de índice. -
Inicie o serviço Heartbeat.
sudo ./heartbeat -e
Etapa 3: Criar uma política de ILM
É possível criar políticas de ILM por meio da API ou do console Kibana. Este exemplo utiliza a API para criar uma política chamada heartbeat-policy.
O Heartbeat carrega uma política padrão quando você executa ./heartbeat setup --ilm-policy. Exporte-a com ./heartbeat export ilm-policy para usar como base para políticas personalizadas.
Execute o seguinte comando no console Kibana para criar a política de ILM:
PUT /_ilm/policy/heartbeat-policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_size": "5mb",
"max_age": "1d",
"max_docs": 100
}
}
},
"warm": {
"min_age": "60s",
"actions": {
"forcemerge": {
"max_num_segments":1
},
"shrink": {
"number_of_shards":1
}
}
},
"cold": {
"min_age": "3m",
"actions": {
"allocate": {
"require": {
"box_type": "warm"
}
}
}
},
"delete": {
"min_age": "1h",
"actions": {
"delete": {}
}
}
}
}
}
|
Fase |
Descrição |
|
hot |
Aciona um rollover quando o índice atinge 5 MB, 1 dia ou 100 documentos. O índice resultante entra na fase warm após 60 segundos. |
|
warm |
Reduz o índice para um shard e força o merge em um único segmento. O índice entra na fase cold 3 minutos após o rollover. |
|
cold |
Migra o índice de nós hot para nós warm. Entra na fase delete 1 hora após o rollover. |
|
delete |
O índice é excluído. |
Os nomes das políticas são imutáveis. O console Kibana também permite a criação de políticas, mas sua unidade mínima para max_age é horas. A API aceita unidades menores, como segundos.
Etapa 4: Associar a política de ILM a um modelo de índice
O Heartbeat cria automaticamente um modelo de índice no Elasticsearch durante a inicialização. Associe a política heartbeat-policy da Etapa 3: Criar uma política de ILM a esse modelo.
Faça login no console Kibana da sua instância Elasticsearch. Consulte Conectar-se a um cluster usando o Kibana.
No painel de navegação à esquerda, clique em Management.
Na seção Elasticsearch, clique em Index Lifecycle Policies.
Na lista Index lifecycle policies, localize
heartbeat-policye clique em Actions > Add policy to index template .Na caixa de diálogo, selecione o modelo de índice na lista Index template e insira o alias de rollover no campo Alias for rollover index.
Clique em Add policy.
Etapa 5: Aplicar a política de ILM a um índice
O Heartbeat cria um índice inicial na primeira execução. Aplique a política de ILM a esse índice. Os índices subsequentes herdarão a política do modelo configurado na Etapa 4: Associar a política de ILM a um modelo de índice.
Na página Management, acesse a seção Elasticsearch e clique em Index Management.
Na lista Index management, localize o índice desejado e clique no nome dele.
Na página Summary, clique em Manage > Remove lifecycle policy para remover a política padrão incluída no Heartbeat.
Na caixa de diálogo de confirmação, clique em Remove policy.
Em seguida, clique em Manage > Add lifecycle policy.
Na caixa de diálogo, selecione
heartbeat-policyda Etapa 3: Criar uma política de ILM na lista Lifecycle policy. Insira o mesmo alias de rollover definido na Etapa 4: Associar a política de ILM a um modelo de índice no campo Index rollover alias e clique em Add policy.
Etapa 6: Visualizar índices em cada fase
Na página Index management, selecione uma fase na lista suspensa Lifecycle phase para filtrar os índices.
Perguntas frequentes
Como ajustar a frequência de verificação da política de ILM?
Por padrão, o ILM verifica índices elegíveis a cada 10 minutos. Nesse intervalo, o volume de dados pode ultrapassar o limiar definido. Por exemplo, na Etapa 3: Criar uma política de ILM, max_docs está definido como 100, mas a contagem real pode exceder esse valor antes que o rollover seja acionado.
Ajuste a frequência de verificação com o parâmetro indices.lifecycle.poll_interval:
Um intervalo curto aumenta a carga nos nós. Equilibre a responsividade da política com o desempenho do cluster.
PUT _cluster/settings
{
"transient": {
"indices.lifecycle.poll_interval":"1m"
}
}