Come posso connettermi ad Amazon OpenSearch Service utilizzando Filebeat e Logstash su Amazon Linux?

Ultimo aggiornamento: 17/08/2021

Sto cercando di connettermi a un cluster Amazon OpenSearch Service (successore di Amazon Elasticsearch Service) utilizzando Logstash su Amazon Linux. Tuttavia, continuo a ricevere un errore. Come posso risolvere questo problema?

Breve descrizione

Per connetterti ad Amazon OpenSearch Service utilizzando Logstash, esegui i passaggi di seguito:

1.    Configura le porte di sicurezza (come la porta 443) per inoltrare i registri a OpenSearch Service.

2.    Aggiorna le configurazioni di FileBeat, Logstash e OpenSearch Service.

3.    Installa FileBeat sull'istanza di Amazon Elastic Compute Cloud (Amazon EC2) della fonte. Assicurati di aver installato e configurato correttamente il file di configurazione YAML.

4.    Installa Logstash su un'istanza Amazon EC2 separata da cui verranno inviati i registri.

Se non hai configurato o impostato Logstash correttamente, riceverai uno di questi errori: errore 401 autorizzazione, errore 403 non consentito o errore di installazione di x-pack.

Risoluzione

Configura le porte di sicurezza

Assicurati di configurare le porte di sicurezza in modo che l'istanza Amazon Elastic Compute Cloud (Amazon EC2) possa inoltrare i registri a OpenSearch Service.

Per configurare le porte di sicurezza per l'inoltro dei registri da Logstash, esegui i passaggi di seguito:

1.    Crea un'istanza Amazon EC2 in cui hai installato Apache e Filebeat. L'istanza Amazon EC2 deve essere in grado di inoltrare i registri da Logstash a OpenSearch Service.

2.    Assicurati che le tue istanze EC2 risiedano nello stesso gruppo di sicurezza del tuo virtual private cloud (VPC) per OpenSearch Service.

3.    Assicurati che le seguenti porte siano aperte nel gruppo di sicurezza: 80, 443 e 5044. Queste porte devono essere aperte in modo da poter inviare dati tra Logstash e OpenSearch Service.

Aggiorna le configurazioni di FileBeat, Logstash e OpenSearch Service

Assicurati che venga utilizzato lo stesso numero di versione per quanto segue:

  • FileBeat versione x.x OSS
  • Logstash versione x.x OSS
  • OpenSearch Service versione x.x

Nota: OpenSearch Service funziona meglio quando utilizzi le versioni OSS di Filebeat e Logstash. È inoltre best practice utilizzare lo stesso numero di versione per Filebeat, Logstash e OpenSearch Service.

Per assicurarti che le configurazioni aggiornate siano tutte sincronizzate, scarica i giri al minuto (RPM) in ogni istanza (separata). Per evitare un singolo punto di errore, è importante evitare di eseguire installazioni RPM sulla stessa istanza. Quindi, verifica che i file scaricati siano disponibili.

Installa Filebeat sull'istanza Amazon EC2 della fonte

1.    Scarica l'RPM per la versione desiderata di Filebeats:

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

2.    Installa il file Filebeats RPM:

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

Installa Logstash su un'istanza Amazon EC2 separata da cui verranno inviati i registri

1.    Scarica il file RPM della versione di Logstash desiderata:

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

In questo esempio viene utilizzata la versione 6.7 per corrispondere al numero di versione di Opensearch Service e Filebeat.

2.    Installa il file RPM scaricato per Logstash utilizzando il comando rpm:

rpm -ivh logstash-oss-6.7.0.rpm

3.    Installa Java o OpenJDK sulla tua istanza Amazon EC2:

yum install java-1.8.0-*

Nota: Logstash richiede l'esecuzione di Java. In questo esempio, stiamo utilizzando Java versione 8 (Open JDK 1.8), supportata da tutte le versioni di Logstash. Per ulteriori informazioni sulle versioni supportate di Java e Logstash, vedi la Matrice di supporto sul sito Web Elasticsearch.

4.    Controlla i file di configurazione controllando le directory "/etc/filebeat" e "/etc/logstash".

5.    Per Filebeat, aggiorna l'output a Logstash o OpenSearch Service e specifica che i registri che devono essere inviati. Quindi, avvia il servizio.

Nota: se provi a caricare modelli su OpenSearch Dashboards con Filebeat, il caricamento non riesce. Filebeat presuppone che il cluster abbia il supporto del plug-in x-pack.

6.    Aggiorna il file di configurazione di Filebeat YAML per inviare i registri di accesso di Apache a Logstash.

Ad esempio:

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.    Assicurati che il file di configurazione di Logstash possa accedere a Filebeats sulla porta 5044. Questo accesso alla porta permette a Logstash di inoltrare richieste all'endpoint VPC di OpenSearch Service.

Ad esempio:

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.    Avvia i servizi Filebeat e Logstash con i seguenti comandi su ogni istanza.

Filebeat:

systemctl start filbeat (service filebeat start)

Logstash:

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

9.    Esegui una chiamata API cat indices al tuo dominio OpenSearch Service per confermare che i registri di Filebeat vengano inviati. Se i registri sono stati inviati correttamente, riceverai la seguente risposta:

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

Di default, gli indici Filebeat ruotano quotidianamente. Ecco un esempio di output di un indice 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 configuri correttamente Filebeat Service, Logstash e OpenSearch Dashboards (ELK) con Amazon EC2 Linux, la pipeline è simile alla seguente:

Filbeat > Logstash > Amazon OpenSearch Service/Dashboards

Errore 401 non autorizzato

Un errore 401 non autorizzato di Logstash indica che il dominio OpenSearch Service è protetto da FGAC (Fine-Grain Access Control) o Amazon Cognito. FGAC necessita di richieste firmate da un utente o un ruolo, che devono essere definite nella policy di accesso del dominio. Se ricevi un errore 401 non autorizzato, assicurati di aver abilitato correttamente FGAC nel file di configurazione di Logstash.

Ad esempio:

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"
  }
}

Errore 403 non consentito

Quando utilizzi e configuri Logstash per inviare dati a OpenSearch Service, è possibile che si verifichi un errore 403 non consentito. Questo errore si verifica quando Logstash non dispone delle autorizzazioni necessarie e non è riuscito a verificare l'identità IAM. Per risolvere questo problema, assicurati di firmare le tue richieste a OpenSearch Service utilizzando le tue credenziali AWS Identity Access Management (IAM).

Per firmare le richieste di OpenSearch Service utilizzando Logstash, attieniti ai seguenti passaggi:

1.    Installa il plug-in Logstash per OpenSearch Service:

bin/logstash-plugin install logstash-output-amazon_es

2.     Collega un ruolo IAM all'istanza Amazon EC2, in questo modo:

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

3.    Aggiorna le impostazioni di configurazione di Logstash per utilizzare il plug-in Logstash "amazon_es" come output nella pipeline:

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

Errore di installazione di Logstash x-pack

Se si verificano errori con x-pack all'avvio di Logstash, disabilita manualmente il plug-in x-pack dal file di registro.

Per disabilitare manualmente il plug-in x-pack, attieniti ai seguenti passaggi:

1.    Apri il seguente file:

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

2.    Trova load_xpack e commenta in linea:

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

Nota che i file di configurazione mostrano che le impostazioni ILM (Index Life Management) (ilm.enabled e ilm_enabled) siano entrambe impostate su "false". La disabilitazione di queste impostazioni ILM nei file di configurazione eliminerà gli errori di avvio per il plug-in x-pack.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?