Direkt zum Inhalt

Wie verwende ich Filebeat und Logstash auf Amazon Linux, um mich mit OpenSearch Service zu verbinden?

Lesedauer: 6 Minute
0

Ich möchte Filebeat und Logstash auf Amazon Linux verwenden, um eine Verbindung zu einem Amazon OpenSearch Service-Cluster herzustellen, erhalte aber eine Fehlermeldung.

Lösung

Sicherheits-Ports einrichten

Um Logstash für die Verbindung zum OpenSearch Service zu verwenden, richte deine Sicherheits-Ports so ein, dass Protokolle von Logstash weitergeleitet werden.

Führe die folgenden Schritte aus:

  1. Starte eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance für Filebeat und starte dann eine weitere Instance, von der Logstash Protokolle senden kann.
  2. Vergewissere dich, dass sich deine EC2-Instances in derselben Sicherheitsgruppe wie deine Virtual Private Cloud (VPC) für OpenSearch Service befinden.
  3. Stelle sicher, dass die Ports 80, 443 und 5044 in deiner Sicherheitsgruppe geöffnet sind, damit du Daten zwischen Logstash und OpenSearch Service senden kannst.

Filebeat-, Logstash- und OpenSearch Service-Konfigurationen aktualisieren

Es hat sich bewährt, Filebeat- und Logstash-Versionen zu verwenden, die deinen OpenSearch Service mit einer älteren Elasticsearch-Version abgleichen. Verwende Filebeat- und Logstash-Versionen, die deiner Domain-Version entsprechen.

Wenn du beispielsweise OpenSearch Service 1.x mit Kompatibilitätsmodus verwendest, meldet OpenSearch Service die Version als 7.10. Überprüfe die Kompatibilitätsmatrix, um die richtige Version von Filebeat und Logstash auszuwählen. Weitere Informationen findest du unter Support-Matrix auf der Elastic-Website oder Kompatibilitätsmatrizen auf der OpenSearch-Website.

Wenn du OpenSearch Service Version 1.0 oder höher verwendest, aktiviere den Kompatibilitätsmodus, wenn du deine Domain startest.

Um sicherzustellen, dass die heruntergeladene Software synchronisiert bleibt, lade Red Hat Package Managers (RPMs) auf jede Instance herunter. Führe Filebeat und Logstash nicht auf derselben Instance aus, um einen einzelnen Fehlerpunkt in deiner Pipeline zu vermeiden.

Filebeat auf der Quell-EC2-Instance installieren

Gehe wie folgt vor, um Filebeat auf der Quell-Instance zu installieren:

  1. Verwende SSH, um eine Verbindung zu der Instance herzustellen, die du für Filebeat gestartet hast.

  2. Führe den folgenden Befehl aus, um das RPM für die kompatible Filebeat-Version herunterzuladen:

    wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-oss-8.15.2-x86_64.rpm
  3. Führe den folgenden Befehl aus, um die Filebeat-RPM-Datei zu installieren:

    rpm -ivh filebeat-oss-8.15.2-x86_64.rpm

Logstash auf einer separaten EC2-Instance installieren und konfigurieren

Führe die folgenden Schritte aus:

  1. Verwende SSH, um eine Verbindung zu deiner Instance herzustellen, die du für Logstash gestartet hast.

  2. Führe den folgenden Befehl aus, um die kompatible Logstash-RPM-Datei herunterzuladen:

    wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-8.15.2-x86_64.rpm
  3. Führe den folgenden Befehl aus, um Java oder OpenJDK auf deiner EC2-Instance zu installieren:

    yum install java-1.8.0-*

    Hinweis: Der vorhergehende Befehl verwendet Java Version 8 (OpenJDK 1.8). Alle Logstash-Versionen unterstützen Java Version 8.

  4. Führe den folgenden Befehl aus, um die Logstash-RPM-Datei zu installieren:

    rpm -ivh logstash-oss-8.15.2-x86_64.rpm
  5. Führe den folgenden Befehl aus, um das Logstash-Datenverzeichnis zu öffnen:

    cd /usr/share/logstash/
  6. Führe den folgenden Befehl aus, um das OpenSearch Service-Plugin für Logstash zu installieren:

    bin/logstash-plugin install logstash-output-opensearch
  7. Führe den folgenden Befehl aus, um die Installation des Logstash-Plugins zu überprüfen:

    bin/logstash-plugin list

    Hinweis: Verwende für Logstash OSS 7.13 und höher nur das logstash-output-opensearch-Plugin. Version 7.12.1 unterstützt sowohl das Plugin logstash-output-elasticsearch als auch logstash-output-opensearch.

  8. Um zu überprüfen, ob die Konfigurationsverzeichnisse existieren, überprüfe die Verzeichnisse /etc/filebeat und /etc/logstash.

  9. Um Protokolle über Logstash zu senden, erstelle eine Filebeat-Konfigurationsdatei unter /etc/filebeat/filebeat.yml.
    Beispiel für eine Filebeat-Konfigurationsdatei:

    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: ["your-domain-endpoint"]
    #protocol: "https"
    
    output.logstash:
      # The Logstash hosts
      hosts: ["Logstash-EC2-InstanceIP:5044"]
    
    setup.ilm.enabled: false
    ilm.enabled: false

    Hinweis: Ersetze Logstash-EC2-InstanceIP:5044 durch die IP-Adresse deiner Logstash-Instance und your-domain-endpoint durch deinen Domain-Endpunkt. Du kannst Protokolle auch direkt an OpenSearch Service senden. Weitere Informationen findest du unter logstash-output-opensearch auf der GitHub-Website.

  10. Erstelle eine Logstash-Konfigurationsdatei unter /etc/logstash/conf.d/logstash.conf.
    Beispiel für eine Logstash-Konfigurationsdatei:

input {
  beats {
    port => 5044
  }
}

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

Hinweis: Ersetze domain-endpoint, my-username und my-password durch deine Werte. Führe den folgenden Befehl aus, um die Konnektivität zu deinem OpenSearch Service-Endpunkt zu testen:

curl -XGET https://your-domain-endpoint

Hinweis: Ersetze your-domain-endpoint durch deinen Domain-Endpunkt. (Optional) Wenn du Fine-Grained Access Control (FGAC) aktiviert hast, führe den folgenden Befehl aus:

curl -u my-username:my-password -XGET https://your-domain-endpoint

Hinweis: Ersetze your-domain-endpoint durch deinen Domain-Endpunkt. Führe die folgenden Befehle aus, um die Filebeat- und Logstash-Dienste zu starten:

systemctl start filebeat
systemctl start logstash
  1. Um zu bestätigen, dass die Filebeat-Logs gesendet werden, führe den folgenden curl-Befehl für deine OpenSearch Service-Domain aus:
curl -XGET https://your-domain-endpoint/_cat/indices

Hinweis: Ersetze your-domain-endpoint durch deinen Domain-Endpunkt.
Beispielausgaben eines Filebeat-Indexes:

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.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 du Filebeat-, Logstash- und OpenSearch-Dashboards erfolgreich mit Amazon EC2 Linux konfiguriert hast, ähnelt deine Pipeline dem folgenden Beispiel:

Filebeat > Logstash > Amazon OpenSearch Service/Dashboards

401-, 403- und Logstash x-pack-Installationsfehler

Fehler „401 Unauthorized“

Wenn Logstash den Fehler „401 Unauthorized“ zurückgibt, verwendet deine OpenSearch Service-Domain eine der folgenden Sicherheitsfunktionen:

  • FGAC
  • Amazon Cognito-Authentifizierung

Um dieses Problem zu beheben, füge deiner Logstash-Konfigurationsdatei unter /etc/logstash/conf.d/logstash.conf Anmeldeinformationen hinzu.

Beispielkonfiguration:

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

Hinweis: Ersetze your-domain-endpoint, my-username und my-password durch die Werte deiner OpenSearch Service-Domain.

Fehler „403 Forbidden“

Wenn Logstash nicht über die erforderlichen AWS Identity and Access Management (IAM)-Berechtigungen für den Zugriff auf OpenSearch Service verfügt, tritt der Fehler „403 Forbidden“ auf.

Gehe wie folgt vor, um dieses Problem zu beheben:

  1. Führe den folgenden Befehl aus, um das OpenSearch Service-Plugin für Logstash zu installieren:

    bin/logstash-plugin install logstash-output-opensearch
  2. Erstelle eine IAM-Rolle.

  3. Erstelle die folgende Richtlinie und füge sie dann der IAM-Rolle hinzu:

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

    Hinweis: Ersetze Amazon-OpenSearch-Domain-ARN durch den Amazon-Ressourcennamen (ARN) deiner OpenSearch Service-Domain.

  4. Aktualisiere deine Logstash-Konfigurationsdatei unter /etc/logstash/conf.d/logstash.conf.
    Beispiel für eine Logstash-Konfigurationsdatei:

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

    Hinweis: Ersetze domain-endpoint und example-region durch die Werte deiner OpenSearch Service-Domain.

Logstash x-pack-Installationsfehler

Wenn Logstash aufgrund eines „x-pack plugin“-Fehlers nicht gestartet werden kann, führe die folgenden Schritte aus:

  1. Öffne die folgende Registrierungsdatei:

    /usr/share/logstash/logstash-core/lib/logstash/plugins/registry.rb
  2. Suche nach der folgenden Code-Zeile:

    load_xpack unless LogStash::OSS
  3. Aktualisiere den Code auf das folgende Beispiel:

    #load_xpack unless LogStash::OSS
  4. Um x-pack-Plugin-Startup-Fehler zu vermeiden, deaktiviere die Index Life Management (ILM)-Einstellungen in deinen Konfigurationsdateien:
    Konfiguriere in Filebeat ilm.enabled: false.
    Konfiguriere in Logstash ilm_enabled => false.

Ähnliche Informationen

Daten mit Logstash in Amazon OpenSearch Service laden

AWS OFFICIALAktualisiert vor einem Jahr