Utilize um pipeline do Alibaba Cloud Logstash para migrar dados de um cluster Elasticsearch autogerenciado para uma instância do Alibaba Cloud Elasticsearch.
Limitações
As instâncias ECS que hospedam seu cluster Elasticsearch autogerenciado devem estar implantadas em uma VPC. Instâncias ECS conectadas via ClassicLink não são suportadas.
As instâncias do Alibaba Cloud Logstash são implantadas em uma VPC. Caso seu cluster Elasticsearch autogerenciado e a instância do Alibaba Cloud Logstash estejam na mesma VPC, a conexão direta é possível. Se estiverem em VPCs diferentes, será necessário usar um NAT Gateway para estabelecer a conexão pela internet pública. Para mais informações, consulte Configure data transmission over the public network by using a NAT Gateway.
O grupo de segurança das instâncias ECS que hospedam o cluster Elasticsearch autogerenciado deve permitir tráfego na porta 9200 proveniente de todos os endereços IP dos nós da instância Logstash. Consulte a página Basic Information para obter esses endereços IP.
Este tópico utiliza como exemplo um cluster Elasticsearch 8.17 autogerenciado, uma instância do Alibaba Cloud Elasticsearch 8.17 e uma instância do Alibaba Cloud Logstash 8.11.4. Os scripts fornecidos aplicam-se exclusivamente a este cenário e podem não ser compatíveis com outras configurações.
Procedimento
Etapa 1: Preparar o ambiente
-
Configure um cluster Elasticsearch autogerenciado.
Implante o cluster Elasticsearch autogerenciado no Alibaba Cloud ECS. Este tópico usa a versão 8.17 como exemplo. Para mais detalhes, consulte Instalar e executar o Elasticsearch.
-
Crie uma instância do Alibaba Cloud Logstash.
Crie a instância Logstash na mesma VPC das instâncias ECS que hospedam seu cluster Elasticsearch autogerenciado. Para mais informações, consulte Create an Alibaba Cloud Logstash instance.
-
Crie a instância de destino do Alibaba Cloud Elasticsearch e ative a indexação automática para ela.
Crie uma instância Elasticsearch na mesma VPC e com a mesma versão da sua instância Logstash. Este tópico utiliza a versão 8.17 como exemplo. Para mais informações, consulte Create an Alibaba Cloud Elasticsearch instance.
-
Para saber como ativar a indexação automática, consulte Configure YML parameters.
NotaO Logstash sincroniza apenas dados, e não estruturas de dados. Ativar a indexação automática pode resultar em inconsistências nas estruturas de dados após a migração. Para garantir a consistência, crie um índice vazio na instância Elasticsearch de destino antes de iniciar. Ao criar o índice, copie os mappings e settings do índice de source e configure um número adequado de shards.
Etapa 2: Configurar e executar o pipeline do Logstash
Acesse a página Logstash Clusters.
-
Acesse o cluster de destino.
Na barra de navegação superior, selecione a região onde o cluster está localizado.
Na página Logstash Clusters, localize o cluster e clique em seu ID.
No painel de navegação à esquerda, clique em Pipelines.
Clique em Create Pipeline.
-
Na página Create, insira um ID de pipeline e configure-o.
Utilize a seguinte configuração de pipeline.
input { elasticsearch { hosts => ["http://<IP address of the self-managed Elasticsearch master node>:9200"] user => "elastic" index => "*,-.monitoring*,-.security*,-.kibana*" password => "your_password" docinfo => true } } filter { } output { elasticsearch { hosts => ["http://es-cn-mp91cbxsm000c****.elasticsearch.aliyuncs.com:9200"] user => "elastic" password => "your_password" index => "%{[@metadata][input][elasticsearch][_index]}" document_id => "%{[@metadata][input][elasticsearch][_id]}" } file_extend { path => "/ssd/1/ls-cn-v0h1kzca****/logstash/logs/debug/test" } }Tabela 1. Parâmetros
Parâmetro
Descrição
hosts
Endpoint do service Elasticsearch autogerenciado ou do Alibaba Cloud. Na seção input, utilize o formato
http://<IP address of the self-managed Elasticsearch master node>:<port>. Na seção output, utilize o formatohttp://<ID of the Alibaba Cloud Elasticsearch instance>.elasticsearch.aliyuncs.com:9200.ImportanteSubstitua <IP address of the self-managed Elasticsearch master node>, <port> e <ID of the Alibaba Cloud Elasticsearch instance> pelos seus valores reais.
user
Nome de usuário para acessar o service Elasticsearch autogerenciado ou do Alibaba Cloud.
Importante-
Os parâmetros user e password são obrigatórios. Caso seu cluster Elasticsearch autogerenciado não tenha o X-Pack instalado, deixe esses parâmetros vazios.
-
O nome de usuário padrão para acessar uma instância do Alibaba Cloud Elasticsearch é elastic, conforme utilizado neste guia. Para utilizar um usuário personalizado, atribua as funções e permissões necessárias a ele. Para mais informações, consulte Use Elasticsearch X-Pack for role-based access control.
password
Senha para acessar o service Elasticsearch autogerenciado ou do Alibaba Cloud.
index
Especifique os nomes dos índices a serem sincronizados. Defina o parâmetro input como ,-.monitoring,-.security,-.kibana para sincronizar todos os índices, exceto os índices de sistema que começam com
.. Defina o parâmetro output como %{[@metadata][input][elasticsearch][_index]} para corresponder ao nome do índice nos metadados. Isso garante que os nomes dos índices no Alibaba Cloud Elasticsearch sejam idênticos aos do seu Elasticsearch autogerenciado.docinfo
Quando definido como true, o plugin de input
elasticsearchextrai metadados do documento, como índice, tipo e ID, dos documentos do Elasticsearch autogerenciado.document_id
Se definido como %{[@metadata][input][elasticsearch][_id]}, o ID do documento é obtido dos metadados. Isso assegura que os IDs dos documentos na instância de destino correspondam aos da source.
file_extend
Opcional. Ativa logs de depuração e utiliza o parâmetro path para definir o caminho de saída desses logs. Recomendamos configurar este parâmetro. Após ativá-lo, é possível visualizar a saída diretamente no console. Sem essa ativação, você precisará verificar a saída no destino e retornar ao console para modificar o pipeline, um processo que consome tempo. Para mais informações, consulte Use pipeline configuration debugging.
ImportanteO parâmetro file_extend requer o plugin logstash-output-file_extend. Install or uninstall plugins. O parâmetro path assume por padrão um caminho especificado pelo sistema. Não o modifique. Também é possível obter o path clicando em Start Configuration Debug.
O plugin de input do Elasticsearch é útil para tarefas como importação em massa de logs de teste mediante a leitura de documentos de um cluster do Alibaba Cloud Elasticsearch. Por padrão, esse processo é interrompido após a leitura de todos os dados. No entanto, as instâncias do Alibaba Cloud Logstash executam continuamente e reiniciam automaticamente processos parados. Em cenários de tarefa única, esse comportamento pode causar gravações duplicadas de dados. Para evitar isso, utilize o parâmetro
schedulecom uma expressão cron para executar a tarefa apenas uma vez. O pipeline será encerrado após essa execução única, impedindo repetições. Para mais informações, consulte a documentação oficial do Logstash sobre Agendamento.Por exemplo, para agendar a execução da tarefa às 13:20 do dia 5 de março:
schedule => "20 13 5 3 *"Para mais detalhes sobre as opções de configuração de pipeline, consulte Logstash configuration files.
-
-
Clique em Next step e configure os parâmetros do pipeline.
Parâmetro
Descrição
Pipeline Workers
Número de threads de trabalho para as etapas de filtro e saída. Aumente este valor se houver acúmulo de eventos ou subutilização da CPU. Padrão: número de núcleos da CPU.
Pipeline Batch Size
Quantidade máxima de eventos que um worker coleta antes de executar filtros e saídas. Lotes maiores aumentam o uso de memória e podem exigir um tamanho maior para o heap da JVM (LS_HEAP_SIZE). Padrão: 125.
Pipeline Batch Delay
Tempo de espera em milissegundos antes de enviar um lote incompleto para uma thread de trabalho. Padrão: 50 ms.
Queue Type
Modelo interno de enfileiramento para buffer de eventos entre etapas. Valores válidos:
-
MEMORY: Padrão. Utiliza uma fila em memória.
-
PERSISTED: Fila persistente baseada em disco.
Queue Max Bytes
Quantidade máxima de dados que a fila pode armazenar, em
MB. O valor deve ser um inteiro entre1e253-1. Valor padrão:1024.NotaCertifique-se de que este valor seja inferior à capacidade total do seu disco.
Queue Checkpoint Writes
Número máximo de eventos gravados antes que um checkpoint seja forçado (apenas para fila persistente). 0 indica sem limite. Padrão: 1024.
AvisoSalvar e implantar a configuração aciona a reinicialização da instância. Prossiga apenas se isso não impactar seus negócios.
-
-
Clique em Save ou Save and Deploy.
Save: Salva a configuração do pipeline sem aplicá-la. Após salvar, você retorna à página Pipelines. Na seção Pipelines, clique em Deploy Now na coluna Actions para reiniciar a instância e aplicar a configuração.
Save and Deploy: Salva e implanta a configuração, reiniciando a instância para aplicar as alterações.
Etapa 3: Visualizar os resultados da migração
-
No Alibaba Cloud Elasticsearch, log on to the Kibana console. No painel de navegação à esquerda, clique no ícone
e selecione .NotaEste tópico utiliza o Alibaba Cloud Elasticsearch 8.17 como exemplo. A interface do usuário pode variar conforme a sua versão.
-
No Console, execute o comando
GET /_cat/indices?vpara visualizar os índices migrados com sucesso.Os resultados retornados mostram que o índice
ordersapresenta health verde, status open e docs.count igual a 1, indicando que a migração dos dados foi concluída com êxito.
Perguntas frequentes
-
P: Como estabelecer conectividade de rede se as instâncias ECS que hospedam o cluster Elasticsearch autogerenciado e a instância do Alibaba Cloud Logstash pertencerem a contas diferentes?
R: Se as instâncias ECS e a instância Logstash pertencerem a contas distintas, elas deverão estar em VPCs diferentes. Conecte as duas VPCs utilizando a Cloud Enterprise Network (CEN). Para mais informações, consulte Step 3: Attach network instances.
-
P: O que fazer se ocorrer um erro durante a gravação de dados pelo Logstash?
R: Consulte Troubleshoot Logstash data write issues para obter etapas de diagnóstico e resolução.
-
P: Posso usar o Alibaba Cloud Logstash 8.11 para migrar dados de uma instância Elasticsearch 7.2 autogerenciada para uma instância do Alibaba Cloud Elasticsearch 7.10?
R: Sim. No entanto, é necessário atender aos seguintes requisitos principais:
-
Rede e autenticação
-
Elasticsearch autogerenciado → Alibaba Cloud Logstash
A instância Elasticsearch autogerenciada deve possuir um IP público e uma lista de permissões configurada.
Configure a autenticação para o plugin de input:
user/password(Basic Auth) ou um certificado SSL.
-
Alibaba Cloud Logstash → Alibaba Cloud Elasticsearch
Utilize uma conexão privada direta dentro da mesma VPC (recomendado). Esse método oferece acesso sem senha, autorizado pela associação de instâncias.
Caso as instâncias estejam em VPCs diferentes, configure um grupo de segurança e uma lista de permissões.
Exemplo de configuração do Logstash
input { elasticsearch { hosts => ["http://<public_IP_of_self-managed_ES>:9200"] user => "self_es_user" password => "self_es_password" index => "source_index" query => '{ "query": { "match_all": {} } }' size => 500 scroll => "5m" docinfo => true # Preserves _source metadata, which is used to specify _id on write. } } filter { # Optional: Add field cleanup, mapping conversion, and more. } output { elasticsearch { hosts => ["https://<internal_endpoint_of_Alibaba_Cloud_ES>:9200"] # Alibaba Cloud Logstash typically injects authentication automatically after you select the destination Elasticsearch instance. index => "target_index" document_id => "%{[@metadata][_id]}" # Ensures consistent document IDs. ssl => true ssl_certificate_verification => false # You can disable this in test environments. We recommend that you use a CA certificate in production. } } -
-