Häufige Probleme mit Linux-Forwardern beheben

Auf dieser Seite können Sie häufige Probleme erkennen und beheben, die bei der Verwendung des Chronicle Linux-Forwarders auftreten können.

Forwarder wird nicht gestartet

Forwarder startet nicht und befindet sich in einer kontinuierlichen Neustartschleife mit folgendem Fehler in den Logs:

F0510 06:17:39.013603 202 main_linux.go:153] open /opt/chronicle/external/*.conf: no such file or directory

Mögliche Ursache 1: Falsche Zuordnung in der Konfigurationsdatei

Sie können dieses Problem beheben, indem Sie den richtigen Pfad zur Konfigurationsdatei übergeben und sie einem externen Ordner zuordnen.

Mögliche Ursache 2: SELinux ist aktiviert

  1. Prüfen Sie die Konfigurationsdatei. Rufen Sie dazu den Container auf, ohne den Forwarder zu starten, und führen Sie den folgenden Befehl aus:

    docker run --name cfps --log-opt max-size=100m --log-opt   max-file=10 --net=host -v ~/configuration:/opt/chronicle/external --entrypoint=/bin/bash \
    -it gcr.io/chronicle-container/cf_production_
    

    Mit diesem Befehl gelangen Sie innerhalb des Containers in eine Shell.

  2. Führen Sie dazu diesen Befehl aus:

    ls -lrt /opt.chronicle/external/
    

    Wenn Sie die Fehlermeldung „Berechtigung verweigert“ erhalten, bedeutet dies, dass der Forwarder die Konfigurationsdatei nicht öffnen und daher nicht starten kann.

So beheben Sie das Problem:

  1. Prüfen Sie den SELinux-Status mit dem folgenden Befehl:

      sestatus
    
  2. Wenn der SELinux-Status in der Ausgabe aktiviert ist, führen Sie den folgenden Befehl aus, um ihn zu deaktivieren:

      setenforce 0
    

Logs erreichen den Chronicle-Mandanten nicht

Mögliche Ursache 1: DNS-Auflösung

Prüfen Sie mit dem folgenden Befehl, ob der Host keine Adressen auflösen oder Chronicle erreichen kann:

  nslookup malachiteingestion-pa.googleapis.com

Wenn der Befehl fehlschlägt, wenden Sie sich an Ihr Netzwerkteam, um eine Lösung zu finden.

Mögliche Ursache 2: Firewall

Prüfen Sie mit dem folgenden Befehl, ob die lokale Firewall die Kommunikation zwischen Chronicle und dem Forwarder blockiert:

  firewall-cmd --state

Wenn die Firewall aktiviert ist, deaktivieren Sie sie mit dem folgenden Befehl:

  systemctl stop firewalld

Mögliche Ursache 3: Puffergröße

Prüfen Sie, ob es sich um ein Problem mit der Puffergröße handelt. Suchen Sie dazu in den Logs nach dem folgenden Fehler:

Memory ceiling (1073741824) reached, freeing a batch from the backlog

So beheben Sie das Problem:

  1. Aktivieren Sie die Komprimierung in der Konfigurationsdatei für den Forwarder.

  2. Erhöhen Sie die Zwischenspeichergröße, indem Sie die Parameter max_memory_buffer_bytes und max_file_buffer_bytes in der Konfigurationsdatei aktualisieren. Diese Parameter geben den Zwischenspeicher von Backlog-Batches an, die im Arbeitsspeicher oder auf dem Laufwerk gespeichert sind.

Forwarder und Host empfangen keine Logs

Wenn der Host und der Forwarder keine Logs erhalten, prüfen Sie den Portstatus. Führen Sie dazu für jeden Port den folgenden Befehl aus:

  netstat -a | grep PORT

Ersetzen Sie PORT durch die Port-ID, die Sie prüfen möchten.

Wenn der Befehl keine Ausgabe zurückgibt, bedeutet dies, dass der Host diesen Port nicht überwacht. Wenden Sie sich in diesem Fall an Ihren Netzwerkadministrator.

Wenn die Ausgabe des Befehls anzeigt, dass der Host einen Port überwacht und der Forwarder immer noch keine Logs empfängt, gehen Sie so vor:

  1. Beenden Sie Docker mit dem folgenden Befehl:

    ​​docker stop cfps
    
    
  2. Führen Sie je nach Netzwerkeinrichtung einen der folgenden Befehle aus.

    Für TCP:

    nc -l PORT
    

    Für UDP:

    nc -l -u PORT
    

    Ersetzen Sie PORT durch die Port-ID, für die Sie Probleme beheben möchten.

  3. Starten Sie den externen Dienst neu und prüfen Sie, ob das Problem behoben ist. Wenn das Problem weiterhin besteht, [wenden Sie sich an den Chronicle-Support.

Forwarder empfängt keine Logs, aber der Host empfängt Logs

Wenn der Host Logs empfängt, der Forwarder jedoch nicht, zeigt dies an, dass der Forwarder den in der Konfigurationsdatei angegebenen Port nicht überwacht.

So beheben Sie das Problem:

  1. Öffnen Sie zwei Terminalfenster auf Ihrem System, eines zum Konfigurieren des Forwarders und eines zum Senden einer Testnachricht an den Host.

    1. Starten Sie Docker auf dem ersten Terminal (Forwarder), ohne den Forwarder zu starten, indem Sie den folgenden Befehl ausführen:

      docker run \
      --name cfps \
      --log-opt max-size=100m \
      --log-opt max-file=10 \
      --net=host \
      -v ~/config:/opt/chronicle/external \
      --entrypoint=/bin/bash \
      -it gcr.io/chronicle-container/cf_production_stable
      
    2. Geben Sie den Port an, den der Forwarder überwachen soll:

      nc -l PORT
      

      Ersetzen Sie PORT durch die Port-ID, für die Sie Probleme beheben möchten.

  2. Senden Sie auf dem zweiten Terminal (Host) die Testnachricht an den Port. Führen Sie dazu den folgenden Befehl aus:

    echo "test message" | nc localhost PORT
    

    Ersetzen Sie PORT durch die Port-ID, für die Sie Probleme beheben möchten.

  3. Führen Sie den Befehl docker noch einmal aus. Geben Sie das Flag -p mit den Ports an, die der Forwarder überwachen soll. Führen Sie dazu den folgenden Befehl aus:

    docker run \
    --detach \
    –name cfps \
    --restart=always \
    --log-opt max-size=100m \
    --log-opt max-file=10 --net=host \
    —v /root/config:/opt/chronicle/external \
    -p 11500:11800 \
    gcr.io/chronicle-container/cf_production_stable
    

Häufige Fehler in der Forwarder-Logdatei

Sie können die Forwarder-Logs mit dem folgenden Befehl aufrufen:

  sudo docker logs cfps

Anfrage enthält ungültiges Argument

Die Forwarder-Protokolldatei zeigt die folgende Fehlermeldung:

  I0912 18:04:15.187321 333 uploader.go:181] Sent batch error: rpc error: code = InvalidArgument desc = Request contains an invalid argument.
  E0912 18:04:15.410572 333 batcher.go:345] [2_syslog_CISCO_FIREWALL-tid-0] Error exporting batch: rpc error: code = InvalidArgument desc = Request contains an invalid argument.
  I0912 18:04:15.964923 333 uploader.go:181] Sent batch error: rpc error: code = InvalidArgument desc = Request contains an invalid argument.

Lösung:

Dieser Fehler kann auftreten, wenn ein ungültiger Logtyp hinzugefügt wird. Achten Sie darauf, dass nur gültige Logtypen hinzugefügt werden. In der Beispielfehlermeldung ist CISCO\_FIREWALL kein gültiger Logtyp. Eine Liste der gültigen Logtypen finden Sie unter Unterstützte Logtypen und Standardparser.

Der Server kann nicht gefunden werden.

Die Forwarder-Protokolldatei zeigt die folgende Fehlermeldung:

{"log":"Failure: Unable to find the server at accounts.google.com.\n","stream":"stderr","time":"2019-06-12T18:26:53.858804303Z"}`

{"log":"+ [[ 1 -ne 0 ]]\n","stream":"stderr","time":"2019-06-12T18:26:53.919837669Z"}

{"log":"+ err 'ERROR: Problem accessing the Chronicle bundle.'\n","stream":"stderr","time":"2019-06-12T18:26:53.919877852Z"}

Lösung:

Wenden Sie sich an Ihr Netzwerkteam, um sicherzustellen, dass das Netzwerk funktioniert.

Ungültige JWT-Signatur

Die Forwarder-Protokolldatei zeigt die folgende Fehlermeldung:

    E0330 17:05:28.728021 162 stats_manager.go:85] send(): rpc error: code = Unauthenticated desc = transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}
    E0404 17:05:28.729012 474 memory.go:483] [1_syslog_FORTINET_FIREWAL-tid-0] Error exporting batch: rpc error: code = Unauthenticated desc = transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}

Lösung:

Dieser Fehler kann auftreten, wenn eine Forwarder-Konfigurationsdatei falsche Details zum Secret-Schlüssel enthält. Wenden Sie sich an den Chronicle-Support, um dieses Problem zu beheben.

Token muss ein kurzlebiges Token sein

Die Forwarder-Protokolldatei zeigt die folgende Fehlermeldung:

      token: 400 Bad Request Response:
      {"error":"invalid_grant","error_description":"Invalid JWT: Token must be a
      short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values in the JWT claim."} I0412 05:14:16.539060 480
      malachite.go:212] Sent batch error: rpc error: code = Unauthenticated desc =
      transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response:
      {"error":"invalid_grant","error_description":"Invalid JWT: Token must be a
      short-lived token (60 minutes)

Lösung:

Dieser Fehler kann auftreten, wenn die Systemuhren des Hosts und des Servers nicht synchron sind. Passen Sie die Uhrzeit auf dem Host an oder synchronisieren Sie die Uhren über NTP.

Datei oder Verzeichnis nicht vorhanden

Die Forwarder-Protokolldatei zeigt die folgende Fehlermeldung:

    ++ cat '/opt/chronicle/external/*.conf'
    cat: '/opt/chronicle/external/*.conf': No such file or directory

Lösung:

Dieser Fehler kann auftreten, wenn der Forwarder mit der falschen Laufwerkszuordnung gestartet wird. Verwenden Sie den vollständigen Verzeichnispfad in der Konfigurationsdatei. Sie können den Pfad mit dem Befehl pwd abrufen.

Fehler beim Abrufen der Kundennummer aus der Konfigurationsdatei

Die Forwarder-Protokolldatei zeigt die folgende Fehlermeldung:

    + err 'ERROR: Failed to retrieve customer ID from configuration file.'
    ++ date +%Y-%m-%dT%H:%M:%S%z
    + echo '[2023-06-28T09:53:21+0000]: ERROR: Failed to retrieve customer ID from configuration file.'
    [2023-06-28T09:53:21+0000]: ERROR: Failed to retrieve customer ID from configuration file.
    + err '==> Please contact the Chronicle support team.'

Lösung:

Dieser Fehler wird durch eine falsche Zuordnung verursacht oder wenn die Konfigurationsdatei nicht im Verzeichnis vorhanden ist. Verwenden Sie den vollständigen Verzeichnispfad in der Konfigurationsdatei. Sie können den Pfad mit dem Befehl pwd abrufen. Prüfen Sie, ob der richtige docker run-Befehl ausgeführt wurde und sich die Konfigurationsdatei am folgenden Speicherort befindet:

    gcr.io/chronicle-container/cf_production_stable

Das folgende Codebeispiel zeigt den Befehl docker run:

    ​​docker run \
    --detach \
    --name cfps \
    --restart=always \
    --log-opt max-size=100m \
    --log-opt max-file=10 \
    --net=host \
    -v /opt/chronicle/config:/opt/chronicle/external \
    gcr.io/chronicle-container/cf_production_stable