Os dados de monitoramento de séries temporais gerados pelo Heartbeat aumentam continuamente, o que eleva o número de shards e a carga do cluster. Use o Index Lifecycle Management (ILM) para definir uma política de rollover para os índices heartbeat-*. Essa política permite executar o rollover dos índices na fase hot, reduzir shards e forçar a mesclagem de segmentos na fase warm, migrar dados para nós warm na fase cold e excluir periodicamente os dados expirados na fase delete.
Procedimento
-
Etapa 1: Criar e configurar um cluster hot-warm
Crie um cluster com nós hot e warm, ative a criação automática de índices e configure uma lista de permissões de IP para acesso público.
-
Etapa 2: Configurar o ILM no Heartbeat
Ative o recurso ILM e configure seus parâmetros no arquivo heartbeat.yml. Após iniciar o Heartbeat, o Elasticsearch gera automaticamente um modelo de índice do Heartbeat.
-
Etapa 3: Criar uma política de ILM
Use a API de política de ILM para criar uma política que defina as condições de rollover e arquivamento de í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: Associar um índice à política de ILM
Vincule a política de ILM ao primeiro índice do Heartbeat para aplicá-la a todos os índices abrangidos pelo modelo.
-
Etapa 6: Visualizar índices em cada fase
Visualize os índices arquivados em cada fase: hot, warm, cold e delete.
Etapa 1: Criar e configurar um cluster hot-warm
-
Crie um cluster hot-warm com nós hot e warm e visualize seus atributos. A tabela a seguir descreve as diferenças.
Tipo de nó
Requisitos de dados
Desempenho de leitura/gravação
Especificações
Armazenamento
Nó hot
Dados recentes, como logs dos últimos dois dias.
Alto
Elevado, por exemplo, 32 núcleos e 64 GB.
Recomenda-se o uso de discos cloud SSD.
Nó warm
Dados históricos, como logs com mais de dois dias.
Baixo
Reduzido, por exemplo, 8 núcleos e 32 GB.
Recomenda-se o uso de ultra disks. Também é possível usar o OpenStore para implementar armazenamento serverless para grandes volumes de dados cold.
No Alibaba Cloud Elasticsearch, o valor
box_typede um nó warm éwarm, e nãocold. Isso ocorre porque os nós warm no Alibaba Cloud Elasticsearch correspondem à camada warm na arquitetura nativa do Elasticsearch.-
Ao criar uma instância do Alibaba Cloud Elasticsearch, ative os Warm nodes para criar um cluster hot-warm.
Após ativar e adquirir nós warm, o sistema adiciona o parâmetro
-Enode.attr.box_typeaos parâmetros de inicialização do nó:Nó hot:
-Enode.attr.box_type=hotNó warm:
-Enode.attr.box_type=warm
A ativação de nós warm designa seus nós de dados existentes como nós hot.
Faça login no console Kibana do cluster. Para mais informações, consulte Conectar-se a um cluster usando o Kibana.
No painel de navegação à esquerda, clique em Dev Tools.
-
No Console, execute o comando a seguir para visualizar os atributos dos nós hot e warm no cluster.
GET _cat/nodeattrs?v&h=host,attr,valueSe a saída contiver nós hot e warm, o cluster suporta a arquitetura hot-warm.
-
Ative a criação automática de índices para o cluster. Para mais informações, consulte Ativar a criação automática de índices configurando parâmetros YML.
Configure uma lista de permissões de IP para acesso público ao cluster e adicione o endereço IP do servidor onde o Heartbeat está instalado à lista. Para mais informações, consulte Configurar uma lista de permissões de IP.
Etapa 2: Configurar o ILM no Heartbeat
Para mais detalhes sobre como configurar o ILM, consulte Set up index lifecycle management.
Baixe e descompacte o pacote de instalação do Heartbeat.
-
Edite o arquivo heartbeat.yml para definir as seções heartbeat.monitors, setup.template.settings, setup.kibana e output.elasticsearch.
O exemplo a seguir mostra uma configuração de amostra.
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>"A tabela a seguir descreve alguns dos parâmetros. Para mais informações, consulte a documentação de configuração do Heartbeat.
Parâmetro
Descrição
index.number_of_shards
Quantidade de shards primários. O padrão é 1.
index.routing.allocation.require.box_type
Especifica que os dados do índice devem ser gravados em nós hot.
setup.template.overwrite
Define se o modelo de índice original deve ser substituído. Caso já tenha carregado esta versão do modelo no Elasticsearch, defina este parâmetro como
truepara sobrescrever o modelo existente. Trata-se de um item de configuração de nível superior, no mesmo nível desetup.template.settings.host
Substitua o valor pelo endpoint público do seu service Kibana. Obtenha o endpoint na página de configuração do Kibana.
hosts
Substitua o valor pelo endpoint público ou privado do seu cluster Elasticsearch. Obtenha o endpoint na página Basic Information do cluster. Para mais informações, consulte Visualizar as informações básicas de uma instância. Se definir este parâmetro com o endpoint público, configure uma lista de permissões de IP para acesso público ao cluster. Para mais informações, consulte Configurar uma lista de permissões de IP. Se utilizar o endpoint privado, garanta que o cluster e o servidor que hospeda o Heartbeat estejam na mesma VPC.
ilm.enabled
Defina este parâmetro como
truepara ativar o ILM.ilm.rollover_alias
Alias para o índice gerado durante um rollover. O valor padrão é
heartbeat-{beat.version}.ilm.pattern
Padrão para o índice gerado durante um rollover. Este parâmetro suporta date math. O valor padrão é
{now/d}-000001. Quando um rollover é acionado, o contador numérico no nome do índice incrementa em 1. Por exemplo, se o primeiro rollover gerar um índice chamadoheartbeat-2020.04.29-000001, o próximo rollover gerará um novo índice chamadoheartbeat-2020.04.29-000002.username
O nome de usuário padrão é
elastic.password
Senha do usuário
elastic. A senha é definida durante a criação da instância. Caso tenha esquecido a senha, redefina-a. Para mais informações, consulte Redefinir a senha de acesso de uma instância.ImportanteSe você modificar
ilm.rollover_aliasouilm.patternapós carregar o modelo de índice, definasetup.template.overwritecomotruepara substituir o modelo. -
Inicie o service Heartbeat.
sudo ./heartbeat -e
Etapa 3: Criar uma política de ILM
É possível criar uma política de ILM no Elasticsearch usando a API ou o console Kibana. O exemplo a seguir demonstra como criar a política heartbeat-policy por meio da API.
O Heartbeat pode carregar e gravar uma política padrão no Elasticsearch com o comando ./heartbeat setup --ilm-policy. Para criar uma política personalizada, exporte a política padrão com ./heartbeat export ilm-policy e modifique-a conforme necessário.
No console Kibana, execute o comando a seguir para criar uma 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 |
Um rollover é acionado quando o tamanho do índice atinge 5 MB, a idade do índice chega a 1 dia ou a contagem de documentos alcança 100. A ação |
|
warm |
O índice é reduzido para um shard e depois mesclado à força em um único segmento. Em seguida, o índice entra na fase cold três minutos após o rollover. |
|
cold |
O índice migra de um nó hot para um nó warm e entra na fase delete uma hora depois. |
|
delete |
O índice é excluído. |
Não é possível alterar o nome da política após sua criação. Você também pode criar uma política no console Kibana. No entanto, a unidade mínima para max_age no Kibana é horas. Ao usar a API, especifique a unidade mínima em segundos.
Etapa 4: Associar a política de ILM a um modelo de índice
Após iniciar o Heartbeat, um modelo de índice do Heartbeat é criado automaticamente no Elasticsearch. Associe a política heartbeat-policy criada na Etapa 3: Criar uma política de ILM a este modelo de índice.
Faça login no console Kibana da sua instância Alibaba Cloud Elasticsearch. Para mais informações, consulte Conectar-se a um cluster usando o Kibana.
No painel de navegação à esquerda, clique em Management.
Na área Elasticsearch, clique em Index Lifecycle Policies.
Na lista Index lifecycle policies, localize a política heartbeat-policy e escolha Actions > Add policy to index template na linha da política.
Na caixa de diálogo exibida, selecione o modelo de índice na lista Index template e insira um alias de índice na caixa de texto Alias for rollover index.
Clique em Add policy.
Etapa 5: Associar um índice à política de ILM
Depois de iniciar o Heartbeat, o Elasticsearch cria automaticamente um índice. Associe manualmente a política de ILM a este primeiro índice para substituir sua política padrão. Essa etapa é necessária mesmo que a política já esteja associada ao modelo de índice, conforme descrito na Etapa 4: Associar a política de ILM a um modelo de índice.
Na página Management, dentro da área Elasticsearch, clique em Index Management.
Na lista Index management, localize o índice desejado e clique no nome do índice.
Na página Summary, escolha Manage > Remove lifecycle policy para remover a política padrão fornecida com o Heartbeat.
Na caixa de diálogo exibida, clique em Remove policy.
Em seguida, escolha Manage > Add lifecycle policy.
Na caixa de diálogo exibida, selecione a política heartbeat-policy criada na Etapa 3: Criar uma política de ILM na lista Lifecycle policy. Na caixa de texto Index rollover alias, insira o alias de índice definido na Etapa 4: Associar a política de ILM a um modelo de índice. Depois, clique em Add policy.
Etapa 6: Visualizar índices em cada fase
Na página Index management, clique na lista suspensa Lifecycle phase e selecione uma fase do ciclo de vida, como Hot, Warm ou Cold, para filtrar e visualizar os índices nessa fase.
Perguntas frequentes
Como ajustar a frequência de verificação da política de ILM?
Por padrão, o ILM verifica índices correspondentes a uma política a cada 10 minutos. Durante esse intervalo, o volume de dados pode exceder o limiar especificado. Por exemplo, na Etapa 3: Criar uma política de ILM, max_docs está definido como 100, mas o rollover pode não ser acionado até que o número de documentos já tenha ultrapassado 100.
Controle a frequência de verificação modificando o parâmetro indices.lifecycle.poll_interval:
Uma frequência alta de verificação aumenta a carga do nó. Configure este parâmetro com cautela, de acordo com os requisitos do seu negócio.
PUT _cluster/settings
{
"transient": {
"indices.lifecycle.poll_interval":"1m"
}
}