Direkt zum Inhalt

Wie kann ich eine Liste meiner Amazon EC2-Instances einsehen, die mit Amazon EFS verbunden sind?

Lesedauer: 5 Minute
0

Ich habe ein Amazon Elastic File System (Amazon EFS)-Dateisystem auf meiner Amazon Elastic Compute Cloud (Amazon EC2)-Instance eingebunden. Ich möchte eine Liste der Amazon EC2-Instances sehen.

Kurzbeschreibung

Verwende Amazon Virtual Private Cloud (Amazon VPC)-Ablaufprotokolle, um den Datenverkehr für die Netzwerkschnittstelle jedes Amazon EFS-Mount-Ziels zu verfolgen. Veröffentliche die Ablaufprotokolle in Amazon CloudWatch Logs. Verwende dann CloudWatch Logs Insights, um den Verkehrsfluss auf der Netzwerkschnittstelle des Mount-Ziels zu filtern. CloudWatch Logs Insights verwendet einen bestimmten Zeitstempel, um EC2-Instances mit bereitgestellten EFS-Dateisystemen zu identifizieren.

Lösung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Erstellen einer Protokollgruppe

Führe die folgenden Schritte aus:

  1. Öffne die Amazon-CloudWatch-Konsole.
  2. Wähle im Navigationsbereich Protokolle und dann Protokollgruppen aus.
  3. Wähle Protokollgruppe erstellen aus.
    Gib für Log-Gruppennameeinen Namen ein.
    Gib für Aufbewahrungseinstellung eine Aufbewahrungseinstellung ein.
    (Optional) Füge einen AWS Key Management Service (AWS KMS)-Schlüssel (Amazon-Ressourcenname (ARN)) und -Tags hinzu.
  4. Wähle Erstellen aus.

Erstelle eine IAM-Rolle mit Berechtigungen zum Veröffentlichen von Ablaufprotokollen in CloudWatch Logs

Führe die folgenden Schritte aus:

  1. Öffne die AWS Identity and Access Management (IAM)-Konsole.
  2. Wähle unter Zugriffsverwaltung die Option Rollen aus.
  3. Wähle Rolle erstellen und erstellen eine neue IAM-Rolle.
  4. Füge in der IAM-Richtlinie der Rolle die erechtigungen hinzu und füge eine Vertrauensrichtlinie hinzu, damit der Dienst die Rolle übernimmt.

Hole dir die Mount-Zielnetzwerkschnittstellen deines Amazon EFS-Dateisystems

Hinweis: Amazon EFS hat für jede Availability Zone ein anderes Mount-Ziel.

Führe die folgenden Schritte aus:

  1. Öffne die EFS-Konsole.
  2. Wähle unter Dateisysteme dein EFS-Dateisystem aus, und wähle dann Details anzeigen aus.
  3. Wähle Netzwerk aus und notiere dir dann die Netzwerkschnittstellen-ID für jedes Mount-Ziel.

Erstelle Ablaufprotokolle

Führe die folgenden Schritte aus:

  1. Öffne die EC2-Konsole.
  2. Wähle Netzwerk und Sicherheit und dann Netzwerkschnittstellen aus.
  3. Wähl die Netzwerkschnittstellen aus, die das Mount-Ziel verwendet.
  4. Wähle im Menü Aktionen die Option Ablaufprotokoll erstellen aus.
  5. Gib die folgenden Werte ein:
    (Optional) Gib unter Name einen Namen für das Ablaufprotokoll ein.
    Wähle für Filter die Option Alle aus.
    Wähle für Maximales Aggregationsintervall entweder die Standardeinstellung 10 Minuten oder 1 Minute aus.
    Wähle als Ziel die Option An CloudWatch Logs senden aus.
    Wähle als Zielprotokollgruppe deine Protokollgruppe aus.
    Wähle für die IAM-Rolle deine IAM-Rolle aus.
    Wähle für das Protokolldatensatzformat entweder das AWS-Standardformat oder das benutzerdefinierte Format.
    (Optional) Füge für Tags Tags hinzu.
  6. Wähle Erstellen aus.
  7. Um den Ablaufprotokoll-Status zu überwachen, wähle deine Netzwerkschnittstelle und dann Ablaufprotokolle aus. Stelle sicher, dass der Status auf Aktiv gestellt ist.

**Hinweis:**Das Ablaufprotokoll-System veröffentlicht das erste Protokoll nach etwa 10 Minuten in CloudWatch Logs.

Sicherstellen, dass sich die Ablaufprotokolle in CloudWatch Logs wiederfinden

Führe die folgenden Schritte aus:

  1. Öffne die CloudWatch-Konsole.
  2. Wähle im Navigationsbereich die Option Protokollgruppen aus.
  3. Wähle unter Protokollgruppen deine Protokollgruppe aus.
  4. Stelle sicher, dass alle Protokollstreams angezeigt werden.
    Hinweis: Jede Netzwerkschnittstelle hat einen anderen Protokollstream.

Verwende CloudWatch Logs Insights um eine Abfrage auszuführen

Führe die folgenden Schritte aus:

  1. Öffne die CloudWatch-Konsole.
  2. Wähle im Navigationsbereich Protokolle und dann Protokoll-Insights.
  3. Wähle deine Protokollgruppe.
  4. Wähle einen der folgenden Dauerwerte: 5 m, 30 m, 1 h, 3 h, 12 h oder benutzerdefiniert.
  5. Führe die folgende Abfrage aus:
    fields @timestamp, @message | filter dstPort="2049" | stats count(*) as FlowLogEntries by srcAddr | sort FlowLogEntries desc

Die vorhergehende Abfrage überprüft alle Ablaufprotokolle für alle Mount-Ziele. Die Abfrage filtert die Protokolle, deren Zielport auf Port=2049 festgelegt ist. EFS-Clients stellen am NFS-Port 2049 eine Verbindung zu Mount-Zielen her. Die Abfrage ruft alle eindeutigen EFS-Client-IP-Adressen ab und sortiert sie nach den aktivsten Client-Verbindungen. Die Anzahl der Einträge im Ablaufprotokoll bestimmt die Aktivitätsstufe.

Die Abfrageausgabe enthält die Liste der privaten IP-Adressen für alle Instances mit gemounteten EFS-Dateisystemen.

Beispiel für eine Abfrageausgabe:

#          srcAddr              FlowLogEntries1      111.22.33.44                 782      111.55.66.77                36
3      111.88.99.000                33

Führe den Befehl start-query aus

Überprüfe, ob jq installiert ist:

yum install -y jq

Führe dann den folgenden Befehl start-query aus:

aws logs start-query --log-group-name EFS-ENI-Flowlogs --start-time 1643127618 --end-time 1643128901 --query-string 'filter dstPort="2049" | stats count(*) as FlowLogEntries by srcAddr | sort FlowLogEntries desc' > test.json && sleep 10 && jq .queryId test.json | xargs aws logs get-query-results --query-id

Stelle im Befehl die folgenden Parameter ein:

  • Gib für log-group-name deinen Protokollgruppennamen ein.
  • Gib für start-time und end-time,die Start- und Endzeiten ein.
    Hinweis: Diese Werte sind in Unix Epoch-Zeit angegeben. Um in lesbare Zeitstempel zu konvertieren, verwende die Epoche- und Unix-Zeitstempelkonvertierungstools auf der Epoceh-Konverter-Website.
  • (Optional) Für test.json kannst du den JSON-Dateinamen jedes Mal ändern, wenn du den Befehl ausführst. Wenn du den Namen änderst, wird die vorherige Ausgabe nicht mit der neuen Ausgabe zusammengeführt.
  • Gib für den Ruhezeit die Verzögerungszeit in Sekunden an, um die Ablaufprotokolle zu überprüfen, während die Abfrage ausgeführt wird.

Führe eine neue Abfrage aus, um die IP-Adressen der Clients anzuzeigen, die derzeit EFS-Dateisysteme mounten.

AWS OFFICIALAktualisiert vor 4 Monaten