O Logstash é um mecanismo de coleta de dados open source capaz de filtrar e transmitir dados em tempo real. Caso não haja requisitos rigorosos de desempenho em tempo real para a migração, o Logstash é uma opção viável. Este tópico descreve como usar o Elastic Compute Service (ECS) da Alibaba Cloud para implantar um cluster Logstash autogerenciado e como utilizar esse cluster para migrar dados de um arquivo de log para um cluster Alibaba Cloud Elasticsearch.
Pré-requisitos
-
Um cluster Alibaba Cloud Elasticsearch foi criado e o recurso Auto Indexing está ativado no cluster.
NotaNeste exemplo, utiliza-se um cluster Elasticsearch V8.5.1 da Standard Edition.
Para mais informações, consulte Crie um cluster Alibaba Cloud Elasticsearch e Acesse e configure um cluster Elasticsearch.
-
Uma instância ECS foi criada. A instância ECS deve conseguir se conectar tanto ao cluster Elasticsearch quanto ao cluster Logstash autogerenciado. Para mais informações, consulte Crie uma instância usando o assistente.
NotaRecomenda-se criar uma instância ECS que resida na mesma região, zona e virtual private cloud (VPC) do cluster Elasticsearch.
-
O JDK está instalado na instância ECS. Para mais informações, consulte Instale o JDK.
NotaO JDK deve ser Temurin 17 ou superior. Para obter detalhes sobre a compatibilidade entre versões do Java JDK e do Logstash, consulte Compatibilidade entre Logstash e JVM.
Os dados a serem migrados estão preparados. Neste exemplo, utilizam-se dados de log do ECS.
Procedimento
Etapa 1: (Opcional) Criar uma função e um usuário
Uma instância Logstash autogerenciada exige uma conta do Elasticsearch para acessar seu cluster Elasticsearch e visualizar dados de monitoramento do Logstash no console Kibana. É possível usar o usuário integrado elastic ou um usuário personalizado.
Em ambientes de produção, recomenda-se o uso de um usuário personalizado. Antes de utilizá-lo, atribua a ele uma função com as permissões necessárias. O uso do usuário elastic em cenários reais compromete a segurança do sistema.
Criar uma função
Esta seção descreve como criar uma função com privilégios de leitura e gravação para índices correspondentes ao padrão logstash-*.
-
Faça login no console Kibana do cluster Elasticsearch.
Para mais informações, consulte Acesse o console Kibana.
Clique em
no canto superior esquerdo da página exibida e escolha Management > Stack Management.No painel de navegação à esquerda, escolha Security > Role.
-
Na página Role, clique em Create role e configure os parâmetros da função.
A tabela a seguir descreve alguns dos parâmetros exibidos.
Parâmetro
Descrição
Role Name
Nome da função. Insira um nome personalizado.
Index
Índices que você deseja gerenciar. Selecione logstash-**.
Permission
Permissões a conceder à função. Selecione read, write, create, delete e create_index.
Clique em Create role.
Criar um usuário
Neste exemplo, cria-se um usuário para monitoramento do Logstash. Utilize um dos métodos abaixo para criar o usuário.
Por padrão, o Alibaba Cloud Elasticsearch desativa o usuário integrado logstash_system. Crie um novo usuário e atribua a ele a função logstash_system. Não nomeie o novo usuário como logstash_system.
-
Método 1: Criar um usuário no console Kibana
-
Faça login no console Kibana do cluster Elasticsearch.
Para mais informações, consulte Acesse o console Kibana.
Clique em
no canto superior esquerdo da página exibida e escolha Management > Stack Management.No painel de navegação à esquerda, escolha Security > Users.
Na página Users, clique em Create user no canto superior direito.
-
Na página Create user, configure os parâmetros.
A tabela a seguir descreve alguns dos parâmetros exibidos.
Parâmetro
Descrição
Username
Nome do usuário. Insira um nome personalizado. Exemplo: logstash_system_monitor.
Roles
Função atribuída ao usuário. Selecione logstash_system.
Clique em Create user.
-
-
Método 2: Criar um usuário via command line interface (CLI)
Conecte-se à instância ECS e execute o comando a seguir para criar um usuário:
curl -u elastic:<es-password> -XPOST http://<instanceId>.elasticsearch.aliyuncs.com:9200/_xpack/security/user/logstash_system_monitor -d '{"password" : "<logstash-monitor-password>","roles" : ["logstash_system"],"full_name" : "<your full name>"}'Parâmetro
Descrição
es-password
Senha do cluster Elasticsearch. Esta senha também é usada para fazer login no console Kibana do cluster.
<instanceId>
ID do cluster Elasticsearch. Consulte o ID do cluster na página Basic Information do cluster Elasticsearch.
<logstash-monitor-password>
Senha do usuário
logstash_system_monitor.<your full name>
Nome completo do usuário.
Execute o comando a seguir para criar o usuário
logstash_system_monitor1. Se o usuário for criado com êxito, o seguinte resultado será retornado:[root@6 /]# curl -H "Content-Type: application/json" -u xxx -XPOST http://es-cn-45xxxu.elasticsearch.aliyuncs.com:9200/_xpack/security/user/logstash_system_monitor1 -d '{"password" : "xxx","roles" : ["logstash_system"],"full_name" : "your full name"}' {"user":{"created":true},"created":true}[root@6 /]#
Etapa 2: Instalar o Logstash na instância ECS
-
Conecte-se à instância ECS.
Para mais informações, consulte Connection methods.
-
Baixe o pacote de instalação do Logstash.
Acesse o site da Elastic e baixe o pacote de instalação do Logstash com a mesma versão do cluster Elasticsearch.
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.5.1-linux-x86_64.tar.gzNotaComando para o Logstash V7.4:
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.4.0.tar.gz -
Descompacte o pacote de instalação do Logstash.
Neste exemplo, utiliza-se o Logstash V8.5.1.
tar -xzvf logstash-8.5.1-linux-x86_64.tar.gz
Etapa 3: Configurar e executar um pipeline do Logstash
-
Acesse o diretório do Logstash.
cd logstash-8.5.1 -
Crie um arquivo .conf.
touch test.conf -
Configure o arquivo test.conf.
O código de amostra a seguir fornece um exemplo de configuração:
input { file { path => "/your/file/path/xxx" } } filter { } output { elasticsearch { hosts => "<http://<instanceId>.elasticsearch.aliyuncs.com:9200>" index => "<index-name>" user => "<user-name>" password => "<logstash-password>" } }Parâmetro
Descrição
pathCaminho do arquivo de log. Neste exemplo, usa-se /var/log/messages.
hostsEndpoint do seu cluster Alibaba Cloud Elasticsearch. Substitua
instanceIdpelo ID da sua instância. Exemplo:http://es-cn-45xxxxxxxxxxxxju.elasticsearch.aliyuncs.com:9200.indexNome do índice onde os dados do arquivo de log serão gravados. Especifique um nome personalizado.
userNome de usuário usado para acessar o cluster Elasticsearch. Neste exemplo, utiliza-se elastic.
Importante-
Para garantir a segurança do sistema, recomenda-se usar um usuário personalizado em vez do usuário elastic em ambientes de produção.
-
O nome de usuário deve estar entre aspas duplas ("). Isso evita possíveis erros causados por caracteres especiais no nome de usuário durante a execução do pipeline do Logstash.
passwordSenha usada para acessar o cluster Elasticsearch.
ImportanteA senha deve estar entre aspas duplas ("). Isso evita possíveis erros causados por caracteres especiais na senha durante a execução do pipeline do Logstash.
O Logstash oferece diversos plug-ins de entrada, filtro e saída. Basta configurar esses plug-ins adequadamente para realizar a transferência de dados. Para mais informações, consulte Estrutura de um arquivo de configuração.
-
-
Execute o pipeline do Logstash.
bin/logstash -f test.confSe o comando for executado com êxito, o Logstash detectará automaticamente alterações no arquivo de log e sincronizará essas alterações com o cluster Elasticsearch. Sempre que novos dados forem adicionados ao arquivo de log monitorado, o Logstash os sincronizará automaticamente com o cluster Elasticsearch.
Etapa 4: Visualizar os dados migrados
-
Faça login no console Kibana do cluster Elasticsearch.
Para mais informações, consulte Acesse o console Kibana.
Clique em
no canto superior esquerdo da página exibida e escolha Management > Dev Tools.-
Na aba Console da página exibida, execute o seguinte comando:
GET /logstash-*/_search
Etapa 5: (Opcional) Monitorar o nó do Logstash
-
Acesse a pasta config no diretório do Logstash.
cd logstash-8.5.1/config -
Configure o arquivo logstash.yml.
-
Abra o arquivo logstash.yml.
vim logstash.yml -
No arquivo logstash.yml, remova as anotações dos parâmetros listados na tabela a seguir. Em seguida, configure os parâmetros.
xpack.monitoring.enabled:true xpack.monitoring.elasticsearch.username:"<user-name>" xpack.monitoring.elasticsearch.password:"<logstash-password>" xpack.monitoring.elasticsearch.hosts:["http://es-cn-nwy3fwjp8xxxxxxx.elasticsearch.aliyuncs.com:9200"]Parâmetro
Descrição
xpack.monitoring.enabledDefina este parâmetro como
true. O valor padrão éfalse.xpack.monitoring.elasticsearch.usernameNome do usuário criado para monitoramento do Logstash. Neste exemplo, utiliza-se o usuário elastic.
ImportantePara garantir a segurança do sistema, recomenda-se usar um usuário personalizado em vez do usuário elastic em ambientes de produção.
xpack.monitoring.elasticsearch.passwordSenha do usuário criado para monitoramento do Logstash.
xpack.monitoring.elasticsearch.hostsEndpoint do seu cluster Alibaba Cloud Elasticsearch. Exemplo:
http://es-cn-45xxxxxxxxxxxxju.elasticsearch.aliyuncs.com:9200.
-
-
Acesse o diretório do Logstash e inicie o service do Logstash.
cd ../ bin/logstash -f test.conf -
Faça login no console Kibana do cluster Elasticsearch.
Para mais informações, consulte Acesse o console Kibana.
Clique em
no canto superior esquerdo da página exibida e escolha Management > Stack Monitoring.(Opcional) Na caixa de diálogo Create rules, clique em OK.
Na página Cluster overview, visualize os dados de monitoramento do Logstash.
Referências
Os plug-ins do Alibaba Cloud Elasticsearch ampliam as capacidades do cluster, incluindo estabilidade, desempenho de consulta e gravação, consultas tokenizadas e recuperação de dados. Para mais informações, consulte Plugin overview.