Como faço para me conectar ao Amazon OpenSearch Service usando o Filebeat e o Logstash no Amazon Linux?

Data da última atualização: 17/08/2021

Estou tentando me conectar a um cluster do Amazon OpenSearch Service (sucessor do Amazon Elasticsearch Service) usando o Logstash no Amazon Linux. No entanto, continuo recebendo um erro. Como resolvo isso?

Breve descrição

Para se conectar ao Amazon OpenSearch Service usando o Logstash, execute as seguintes etapas:

1.    Configure suas portas de segurança (como a porta 443) para encaminhar logs para o OpenSearch Service.

2.    Atualize as configurações do FileBeat, Logstash e OpenSearch Service.

3.    Instale o FileBeat na instância de origem do Amazon Elastic Compute Cloud (Amazon EC2). Verifique se você instalou e configurou corretamente o arquivo de configuração YAML.

4.    Instale o Logstash em uma instância separada do Amazon EC2 da qual os logs serão enviados.

Se você não instalou ou configurou corretamente o Logstash, você receberá um destes erros: Erro de autorização 401, erro 403 Proibido ou erro de instalação do x-pack.

Resolução

Configure suas portas de segurança

Certifique-se de configurar suas portas de segurança para que sua instância do Amazon Elastic Compute Cloud (Amazon EC2) possa encaminhar logs para o OpenSearch Service.

Para configurar suas portas de segurança para encaminhar logs do Logstash, execute as seguintes etapas:

1.    Crie uma instância do Amazon EC2 em que você instalou o Apache e o Filebeat. A instância do Amazon EC2 deve ser capaz de encaminhar logs do Logstash para o OpenSearch Service.

2.    Certifique-se de que as instâncias do EC2 residam no mesmo grupo de segurança que o virtual private cloud (VPC) para o OpenSearch Service.

3.    Certifique-se de que as seguintes portas estejam abertas no grupo de segurança: 80, 443 e 5044. Essas portas devem estar abertas para que você possa enviar dados entre o Logstash e o OpenSearch Service.

Atualize as configurações do FileBeat, Logstash e OpenSearch Service

Certifique-se de que o mesmo número de versão esteja sendo usado para o seguinte:

  • FileBeat versão x.x OSS
  • Logstash versão x.x OSS
  • OpenSearch Service versão x.x

Observação: o OpenSearch Service funciona melhor quando você usa as versões OSS do Filebeat e Logstash. Também é uma prática recomendada usar o mesmo número de versão para Filebeat, Logstash e OpenSearch Service.

Para garantir que as configurações atualizadas estejam todas sincronizadas, baixe RPMs para cada instância (separada). Para evitar um único ponto de falha, é importante evitar a execução de instalações de RPM na mesma instância. Em seguida, verifique se os arquivos baixados estão disponíveis.

Instale o Filebeat na instância do Amazon EC2 de origem

1.    Baixe o RPM para a versão desejada do Filebeats:

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-6.7.0-x86_64.rpm

2.    Instale o arquivo RPM do Filebeats:

rpm -ivh filebeat-oss-6.7.0-x86_64.rpm

Instale o Logstash em uma instância separada do Amazon EC2 da qual os logs serão enviados

1.    Baixe o arquivo RPM da versão desejada do Logstash:

wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-6.7.0.rpm

Este exemplo usa a versão 6.7 para corresponder ao número da versão do Opensearch Service e do Filebeat.

2.    Instale o arquivo RPM que você baixou para o Logstash usando o comando rpm:

rpm -ivh logstash-oss-6.7.0.rpm

3.    Instale o Java ou o OpenJDK em sua instância do Amazon EC2:

yum install java-1.8.0-*

Observação: o Logstash requer que o Java seja executado. Neste exemplo, estamos usando o Java versão 8 (Open JDK 1.8), que é suportado por todas as versões do Logstash. Para obter mais informações sobre as versões compatíveis do Java e do Logstash, consulte a matriz de suporte no site do Elasticsearch.

4.    Confira os arquivos de configuração conferindo os diretórios “/etc/filebeat” e “/etc/logstash”.

5.    Para o Filebeat, atualize a saída para Logstash ou OpenSearch Service e especifique que os logs devem ser enviados. Em seguida, inicie seu serviço.

Observação: se você tentar carregar de modelos para o OpenSearch Dashboards com o Filebeat, seu carregamento falhará. O Filebeat pressupõe que o cluster possui suporte a plugins x-pack.

6.    Atualize seu arquivo de configuração YAML do Filebeat para enviar logs de acesso do Apache para o Logstash.

Por exemplo:

filebeat.inputs:
- type: log
   -
/var/log/httpd/access_log
 
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled:
false
 
setup.template.settings:
 
index.number_of_shards: 1
  index.codec:
best_compression
 
#output.elasticsearch:
#hosts:
["vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com:443"]
#protocol: "https"
 
output.logstash:
  # The Logstash hosts
  hosts:
[“Logstash-EC2-InstanceIP:5044"]
 
setup.ilm.enabled: false 
ilm.enabled: false

7.    Certifique-se de que o arquivo de configuração do Logstash possa acessar o Filebeats na Porta 5044. Esse acesso à porta permite que o Logstash encaminhe solicitações para o endpoint da VPC do OpenSearch Service.

Por exemplo:

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["https://domain-endpoint:443"]
    ssl => true
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    user => "my-username"
    password => "my-password"
    ilm_enabled => false
  }
}

8.    Inicie os serviços Filebeat e Logstash com os seguintes comandos em cada instância.

Filebeat:

systemctl start filbeat (service filebeat start)

Logstash:

cp /etc/logstash/logstash.conf /etc/logstash/conf.d/
systemctl start logstash (service logstash start)

9.    Execute uma chamada de API cat indices para o domínio do OpenSearch Service para confirmar se os logs do Filebeat estão sendo enviados. Se seus logs forem enviados com sucesso, você receberá a seguinte resposta:

curl -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com/_cat/indices
green open filebeat-6.7.0-2020.02.12 f97c4WnuQ-CtsAJJaJHUlg
1 1 1511515 0 249.7mb 124.7mb
green open .kibana_1                 Ioco6fUoSCGkaOvHNCL39g 1
1       1 0   7.4kb  
3.7kb

Por padrão, os índices do Filebeat alternam diariamente. Aqui está um exemplo de saída de um índice Filebeat:

curl -XGET https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com/_cat/indices
green open filebeat-6.7.0-2020.02.12 f97c4WnuQ-CtsAJJaJHUlg
1 1 1511515 0 249.7mb 124.7mb
green open .kibana_1                 Ioco6fUoSCGkaOvHNCL39g 1
1       1 0   7.4kb  
3.7kb
green open filebeat-6.7.0-2020.02.13 4i8W0smlRGGFcQOaDMxonA
1 1      89 0 207.1kb 118.1kb

Se você configurar com êxito o Filebeat Service, o Logstash e o OpenSearch Dashboards (ELK) com o Amazon EC2 Linux, seu pipeline terá a seguinte aparência:

Filbeat > Logstash > Amazon OpenSearch Service/Dashboards

Erro 401 - não autorizado

Um erro 401 - não autorizado do Logstash indica que seu domínio do OpenSearch Service está protegido por controle de acesso refinado (FGAC) ou Amazon Cognito. O FGAC exige solicitações assinadas por um usuário ou função, que devem ser definidas na política de acesso do domínio. Se você receber um erro 401 - não autorizado, verifique se você habilitou corretamente o FGAC no arquivo de configuração do Logstash.

Por exemplo:

output {
  elasticsearch {
    hosts => ["https://vpc-examplestack-5crrfyysa2ratcl3ursmung33q.us-east-1.es.amazonaws.com:443"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    ilm_enabled => false
   user => "elastic"
    password => "changeme"
  }
}

Erro 403 - proibido

Quando você usa e configura o Logstash para enviar dados para o OpenSearch Service, você pode receber um Erro 403 - proibido. Esse erro ocorre quando o Logstash não tem as permissões necessárias e não verifica sua identidade do IAM. Para resolver esse problema, assine suas solicitações ao OpenSearch Service usando suas credenciais do AWS Identity Access Management (IAM).

Para assinar solicitações do OpenSearch Service usando o Logstash, siga estas etapas:

1.    Instale o plugin Logstash para o OpenSearch Service:

bin/logstash-plugin install logstash-output-amazon_es

2.     Anexe uma função do IAM à instância do Amazon EC2, da seguinte maneira:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "es:ESHttp*"
            ],
            "Resource": "[Amazon-OpenSearch-Domain-ARN]"
        }
    ]
}

3.    Atualize as definições de configuração do Logstash para usar o plugin Logstash “amazon_es” como saída em seu pipeline:

output {
  amazon_es {
    hosts => ["domain-endpoint"]
    ssl => true
    region => "us-east-1"
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
  }
}

Erro de instalação do Logstash x-pack

Se você encontrar erros com o x-pack ao iniciar o Logstash, desabilite manualmente o plugin x-pack do seu arquivo de registro.

Para desativar manualmente o plugin x-pack, siga estas etapas:

1.    Abra o seguinte arquivo:

/usr/share/logstash/logstash-core/lib/logstash/plugins/registry.rb

2.    Encontre load_xpack e comente em linha:

“load_xpack unless LogStash::OSS”
>> “#load_xpack unless LogStash::OSS”

Observe que seus arquivos de configuração mostram que as configurações do Index Life Management (ILM) (ilm.enabled e ilm_enabled) estão ambas definidas como “false”. Desabilitar essas configurações do ILM nos arquivos de configuração eliminará os erros de startup do plugin x-pack.


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?