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

Ultimo aggiornamento: 02/02/2022

Sto cercando di connettermi a un cluster Amazon OpenSearch 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 Amazon 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 Amazon 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 Amazon 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

OpenSearch Service funziona meglio quando si utilizzano le stesse versioni del sistema operativo. Pertanto, prova a utilizzare versioni compatibili per i seguenti software:

  • FileBeat versione x.x OSS
  • Logstash versione x.x OSS (v7.16.2 e v6.8.22 per patch di sicurezza Log4j)
  • OpenSearch Service versione x.x

Per assicurarti che il software scaricato rimanga sincronizzato, scarica gli RPM su ciascuna istanza EC2 (separata). Per prevenire un singolo punto di errore nella pipeline, è importante evitare di eseguire il servizio Filebeat e Logstash sulla stessa istanza EC2.

Nota: se utilizzi Amazon OpenSearch Service versione 1.0 o successive, assicurati che la modalità di compatibilità sia abilitata al primo avvio del tuo dominio. Tieni presente che puoi abilitare la modalità di compatibilità solo tramite la Console di gestione AWS.

Installa Filebeat sull'istanza Amazon EC2 della fonte

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

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

2.    Installa il file Filebeat RPM:

rpm -ivh filebeat-oss-7.16.2-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-7.16.2-x86_64.rpm

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

2.    Installa Java o OpenJDK sulla tua istanza Amazon EC2 prima di installare il file RPM Logstash:

yum install java-1.8.0-*

3.    Dopo l'installazione di Java, installa il file RPM scaricato per Logstash utilizzando il comando rpm:

rpm -ivh logstash-oss-7.16.2-x86_64.rpm

Nota: Logstash richiede l'esecuzione di Java per funzionare. 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
  enabled: true
  paths:
    - /var/log/*.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 Filebeat 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 filebeat (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-7.16.2-2022.01.27 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-7.16.2-2022.01.27 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-7.16.2-2022.01.28 4i8W0smlRGGFcQOaDMxonA
1 1      89 0 207.1kb 118.1kb

Se configuri correttamente Filebeat Service, Logstash e OpenSearch Dashboards (ELK) con Amazon EC2 Linux, allora la pipeline è simile alla seguente:

Filebeat > 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 la tua identità di AWS Identity Access Management (IAM). Per risolvere questo problema, assicurati di firmare le tue richieste a OpenSearch Service utilizzando le tue credenziali (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: puoi controllare i file di configurazione per confermare 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\.

Amazon OpenSearch Service è il successore di Amazon Elasticsearch Service.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?