Wie stelle ich mit Filebeat und Logstash in Amazon Linux eine Verbindung zu Amazon OpenSearch Service her?

Letzte Aktualisierung: 02.02.2022

Ich versuche mit Logstash auf Amazon Linux eine Verbindung zu einem Amazon-OpenSearch-Service-Cluster herzustellen. Ich erhalte jedoch immer wieder einen Fehler. Wie kann ich dies beheben?

Kurzbeschreibung

Führen Sie die folgenden Schritte aus, um über Logstash eine Verbindung mit Amazon OpenSearch Service herzustellen:

1.    Richten Sie Ihre Sicherheits-Ports (wie Port 443) ein, um Protokolle an Amazon OpenSearch Service weiterzuleiten.

2.    Aktualisieren Sie Ihre Filebeat-, Logstash- und OpenSearch-Service-Konfigurationen

3.    Installieren Sie Filebeat auf Ihrer Quell-Instance von Amazon Elastic Compute Cloud (Amazon EC2). Stellen Sie sicher, dass Sie Ihre YAML-Konfigurationsdatei korrekt installiert und konfiguriert haben.

4.    Installieren von Logstash auf einer separaten Amazon-EC2-Instance, von der die Protokolle gesendet werden.

Wenn Sie Logstash nicht richtig eingerichtet oder konfiguriert haben, dann erhalten Sie einen dieser Fehler: 401 Authorization, 403 Forbidden oder X-Pack-Installationsfehler.

Auflösung

Einrichten Ihrer Sicherheits-Ports

Stellen Sie sicher, dass Sie Ihre Sicherheits-Ports so einrichten, dass Ihre Amazon-Elastic-Compute-Cloud-Instance (Amazon EC2) Protokolle an Amazon OpenSearch Service weiterleiten kann.

Führen Sie die folgenden Schritte aus, um Ihre Sicherheits-Ports für die Weiterleitung von Protokollen von Logstash einzurichten:

1.    Erstellen Sie eine Amazon-EC2-Instance, in der Sie Apache und Filebeat installiert haben. Die Amazon-EC2-Instance muss in der Lage sein, Protokolle von Logstash an Amazon OpenSearch Service weiterzuleiten.

2.    Stellen Sie sicher, dass sich Ihre EC2-Instances in derselben Sicherheitsgruppe befinden wie Ihre Virtual Private Cloud (VPC) für OpenSearch Service.

3.    Stellen Sie sicher, dass die folgenden Ports in Ihrer Sicherheitsgruppe geöffnet sind: 80, 443 und 5044. Diese Ports müssen geöffnet sein, damit Sie Daten zwischen Logstash und OpenSearch Service senden können.

Aktualisieren Sie Ihre FileBeat-, Logstash- und OpenSearch-Service-Konfigurationen

Der OpenSearch Service läuft am besten, wenn Sie dieselben OSS-Versionen verwenden. Versuchen Sie daher, kompatible Versionen für Folgendes zu verwenden:

  • FileBeat-Version x.x OSS
  • Logstash-Version x.x OSS (v7.16.2 & v6.8.22 für Log4j-Sicherheitspatch)
  • OpenSearch Service-Version x.x

Um sicherzustellen, dass die heruntergeladene Software synchron bleibt, laden Sie RPMs auf jede (separate) EC2-Instance herunter. Um einen einzelnen Ausfallpunkt in Ihrer Pipeline zu verhindern, ist es wichtig, dass Sie den Filebeat- und den Logstash-Service nicht auf derselben EC2-Instance ausführen.

Hinweis: Wenn Sie Amazon OpenSearch Service Version 1.0 oder höher verwenden, stellen Sie sicher, dass der Kompatibilitätsmodus aktiviert ist, wenn Sie Ihre Domain zum ersten Mal starten. Beachten Sie, dass Sie den Kompatibilitätsmodus nur über die AWS Management Console aktivieren können.

Installieren von Filebeat auf der Amazon-EC2-Quell-Instance

1.    Laden Sie das RPM für die gewünschte Version von Filebeats herunter:

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

2.    Installieren Sie die Filebeat-RPM-Datei:

rpm -ivh filebeat-oss-7.16.2-x86_64.rpm

Installieren von Logstash auf einer separaten Amazon-EC2-Instance, von der die Protokolle gesendet werden

1.    Laden Sie die RPM-Datei der gewünschten Logstash-Version herunter:

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

In diesem Beispiel wird Version 6.7 verwendet, um die Versionsnummer von Amazon OpenSearch Service und Filebeat abzugleichen.

2.    Installieren Sie Java oder OpenJDK auf Ihrer Amazon-EC2-Instance, bevor Sie die Logstash-RPM-Datei installieren:

yum install java-1.8.0-*

3.    Nach der Installation von Java installieren Sie die RPM-Datei, die Sie für Logstash heruntergeladen haben, mit dem Befehl rpm:

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

Hinweis: Logstash benötigt Java zum Ausführen. Dieses Beispiel verwendet Java Version 8 (Open JDK 1.8), die von allen Versionen von Logstash unterstützt wird. Weitere Informationen zu den unterstützten Versionen von Java und Logstash finden Sie in der Support-Matrix auf der Elasticsearch-Website.

4.    Überprüfen Sie die Konfigurationsdateien, indem Sie die Verzeichnisse „/etc/filebeat“ und „/etc/logstash“ überprüfen.

5.    Aktualisieren Sie für Filebeat die Ausgabe entweder auf Logstash oder OpenSearch Service und geben Sie an, dass Protokolle gesendet werden müssen. Starten Sie dann Ihren Service.

Hinweis: Wenn Sie versuchen, Vorlagen mit Filebeat auf OpenSearch Dashboards hochzuladen, schlägt Ihr Upload fehl. Filebeat geht davon aus, dass Ihr Cluster x-pack-Plugin-Unterstützung hat.

6.    Aktualisieren Sie Ihre Filebeat-YAML-Konfigurationsdatei, um Apache-Zugriffsprotokolle an Logstash zu senden.

Beispiel:

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.    Stellen Sie sicher, dass Ihre Logstash-Konfigurationsdatei auf Filebeat auf Port 5044 zugreifen kann. Dieser Port-Zugriff ermöglicht es Logstash, Anfragen an Ihren OpenSearch-Service-VPC-Endpunkt weiterzuleiten.

Beispiel:

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.    Starten Sie die Services Filebeat und Logstash mit den folgenden Befehlen für jede Instance.

Filebeat:

systemctl start filebeat (service filebeat start)

Logstash:

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

9.    Führen Sie einen cat-Indices-API-Aufruf an Ihre OpenSearch-Service-Domäne aus, um zu bestätigen, dass die Filebeat-Protokolle gesendet werden. Wenn Ihre Protokolle erfolgreich gesendet wurden, erhalten Sie die folgende Antwort:

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

Standardmäßig rotieren die Filebeat-Indizes täglich. Hier ist eine Beispielausgabe eines Filebeat-Index:

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

Wenn Sie Filebeat Service, Logstash und OpenSearch Dashboards (ELK) erfolgreich mit Amazon EC2 Linux konfigurieren, dann sieht Ihre Pipeline wie folgt aus:

Filebeat > Logstash > Amazon OpenSearch Service/Dashboards

401 Unberechtigter Fehler

Ein 401 Unberechtigter Fehler von Logstash zeigt an, dass Ihre OpenSearch Service-Domäne durch eine feinkörnige Zugriffssteuerung (FGAC) oder Amazon Cognito geschützt ist. FGAC erfordert signierte Anfragen eines Benutzers oder einer Rolle, die in der Zugriffsrichtlinie der Domäne definiert sein müssen. Wenn Sie einen 401 Unberechtigten Fehler erhalten, stellen Sie sicher, dass Sie FGAC ordnungsgemäß in Ihrer Logstash-Konfigurationsdatei aktivieren.

Beispiel:

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

403 Forbidden-Fehler

Wenn Sie Logstash verwenden und konfigurieren, um Daten an OpenSearch Service zu senden, wird möglicherweise ein 403 verbotener Fehler angezeigt. Dieser Fehler tritt auf, wenn Logstash nicht über die erforderlichen Berechtigungen verfügt und Ihre AWS-Identity-Access-Management-Identität (IAM) nicht überprüft hat. Um dieses Problem zu beheben, signieren Sie Ihre Anfragen mit Ihren IAM-Anmeldeinformationen an OpenSearch Service.

Gehen Sie folgendermaßen vor, um OpenSearch-Service-Anfragen mit Logstash zu signieren:

1.    Installieren Sie das Logstash-Plugin für OpenSearch Service:

bin/logstash-plugin install logstash-output-amazon_es

2.     Hängen Sie eine IAM-Rolle wie folgt an die Amazon-EC2-Instance an:

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

3.    Aktualisieren Sie Ihre Logstash-Konfigurationseinstellungen, um das Logstash-Plugin „amazon_es“ als Ausgabe in Ihrer Pipeline zu verwenden:

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

Logstash-x-pack-Installationsfehler

Wenn Sie beim Starten von Logstash auf Fehler mit x-pack stoßen, dann deaktivieren Sie das x-pack-Plugin manuell in Ihrer Registry-Datei.

Gehen Sie folgendermaßen vor, um das x-pack-Plugin manuell zu deaktivieren:

1.    Öffnen Sie die folgende Datei:

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

2.    Suchen Sie nach load_xpack und kommentieren Sie inline:

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

Hinweis: Sie können Ihre Konfigurationsdateien überprüfen, um zu bestätigen, ob die Einstellungen für Index Life Management (ilm.enabled und ilm_enabled) beide auf „false“ gesetzt sind. Die Deaktivierung dieser ILM-Einstellungen in Ihren Konfigurationsdateien beseitigt Startfehler für das x-pack-Plugin.

Amazon OpenSearch Service ist der Nachfolger von Amazon Elasticsearch Service.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?