Direkt zum Inhalt

Wie finde ich die Hauptverursacher des NAT-Gateway-Datenverkehrs in meiner Amazon VPC?

Lesedauer: 6 Minute
0

Ich möchte die Hauptverursacher des Datenverkehrs über das NAT-Gateway in meiner Amazon Virtual Private Cloud (Amazon VPC) finden.

Kurzbeschreibung

Um die wichtigsten Verkehrstreiber des NAT-Gateways in deiner Amazon VPC zu ermitteln, verwende Amazon CloudWatch-Metriken, um den Zeitpunkt von Datenverkehrsspitzen zu ermitteln.

Verwende dann eine der folgenden Methoden, um die Amazon VPC-Instances zu identifizieren, die Verkehrsspitzen verursachen:

  • Wenn deine Amazon VPC-Flow-Protokolle Daten auf CloudWatch veröffentlichen, verwende CloudWatch Logs.
  • Wenn deine Amazon VPC-Flow-Protokolle Daten auf Amazon Simple Storage Service (Amazon S3) veröffentlichen, verwende Amazon Athena.

Lösung

Voraussetzung: Vergewissere dich, dass du Amazon VPC-Flow-Protokolle für deine Amazon VPC oder NAT-Gateway-Elastic-Network-Schnittstelle aktiviert hast. Wenn du Amazon VPC-Flow-Protokolle nicht aktiviert hast, erstelle Flow-Protokolle, die in Amazon CloudWatch Logs oder Amazon S3 veröffentlicht werden.

Amazon CloudWatch verwenden, um die Metriken deines NAT-Gateways anzuzeigen

Verwende die folgenden Amazon CloudWatch-Metriken für deine NAT-Gateway-Metriken, um Zeitrahmen zu identifizieren, die Verkehrsspitzen entsprechen:

  • Verwende BytesInFromSource, um den Datenverkehr anzugeben, der auf Instances in deinem NAT-Gateway hochgeladen wird.
  • Verwende BytesInFromDestination, um den Datenverkehr anzugeben, der von Instances in deinem NAT-Gateway heruntergeladen wird.

Frage dann deine Amazon VPC-Flow-Protokolle nach den Instances ab, die in den von dir identifizierten Zeiträumen einen hohen Verkehr aufweisen. Du kannst Amazon CloudWatch Logs Insights oder Amazon Athena verwenden, um deine Amazon VPC-Flow-Protokolle abzufragen. Weitere Informationen findest du unter Amazon VPC-Flow-Protokolle abfragen.

CloudWatch Logs Insights verwenden, um die Instances zu identifizieren, die Datenverkehrsspitzen verursachen

Wenn deine Amazon VPC-Flow-Protokolle Daten auf CloudWatch veröffentlichen, verwende Cloud Watch Logs Insights, um deine Amazon VPC-Flow-Protokolle abzufragen. Wähle in der Dropdown-Liste Protokollgruppe(n) auswählen die Protokollgruppe deines NAT-Gateways aus. Wähle dann Benutzerdefiniert aus, um den Zeitraum festzulegen, der den von dir identifizierten Verkehrsspitzen entspricht.

Verwende eine der folgenden Abfragen, um Instances anzuzeigen, die je nach deinem Anwendungsfall Verkehrsspitzen verursachen. Du kannst auch eine CloudFormation-Vorlage verwenden, um ein CloudWatch-Dashboard zu erstellen, das die folgenden Abfragen enthält. Ein Beispiel für eine CloudFormation-Vorlage findest du unter aws-cloudformation-templates auf der Github-Website.

Hinweis: Ersetze in den folgenden Abfragen example-NAT-private-IP durch die private(n) IP-Adresse(n) deines NAT-Gateways. Verwende für einzelne IP-Abfragen die primäre private IP-Adresse deines NAT-Gateways. Ersetze example-VPC-CIDR durch den CIDR-Bereich deiner Amazon VPC.

Führe die folgende Abfrage aus, um Instances zu identifizieren, die den meisten Datenverkehr über das NAT-Gateway senden:

filter (dstAddr in ["example-NAT-private-IP", "example-NAT-private-IP", "example-NAT-private-IP"] AND isIpv4InSubnet(srcAddr, "example-VPC-CIDR"))  
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr  
| sort bytesTransferred desc

Führe die folgende Abfrage aus, um den Datenverkehr zu und von deinen Instances zu identifizieren:

filter (dstAddr in ["example-NAT-private-IP", "example-NAT-private-IP", "example-NAT-private-IP"] AND isIpv4InSubnet(srcAddr, "example-VPC-CIDR"))  
OR (srcAddr in ["example-NAT-private-IP", "example-NAT-private-IP", "example-NAT-private-IP"] AND isIpv4InSubnet(dstAddr, "example-VPC-CIDR"))  
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr  
| sort bytesTransferred desc

Führe die folgenden Abfragen aus, um die Internetziele zu identifizieren, auf die deine Instances am häufigsten zugreifen:

  • Für Uploads über ein NAT-Gateway:

    filter (srcAddr in ["example-NAT-private-IP", "example-NAT-private-IP", "example-NAT-private-IP"] AND not isIpv4InSubnet(dstAddr, "example-VPC-CIDR"))  
    | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr  
    | sort bytesTransferred desc  
    | limit 10
  • Für Downloads über ein NAT-Gateway:

    filter (dstAddr in ["example-NAT-private-IP", "example-NAT-private-IP", "example-NAT-private-IP"] AND not isIpv4InSubnet(srcAddr, "example-VPC-CIDR"))  
    | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr  
    | sort bytesTransferred desc  
    | limit 10

Führe die folgenden Abfragen aus, um Instances zu identifizieren, die den meisten Datenverkehr über das NAT-Gateway an Internetziele senden.

  • Für Uploads über ein NAT-Gateway:

    parse @message "* * * * * * * * * * * * * * * " as version, account_id, interface_id, srcaddr, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, log_status, pkt_srcaddr, pkt_dstaddr| filter (dstaddr like 'example-NAT-private-IP' and isIpv4InSubnet(pkt_srcaddr, 'example-VPC-CIDR'))   
    | stats sum(bytes) as bytesTransferred by pkt_srcaddr, pkt_dstaddr  
    | sort bytesTransferred desc  
    | limit 10
  • Für Downloads über ein NAT-Gateway:

    parse @message " * * * * * * * * * * * * * * *" as version, account_id, interface_id, srcaddr, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, log_status, pkt_srcaddr, pkt_dstaddr| filter (srcaddr like 'example-NAT-private-IP' and !isIpv4InSubnet(pkt_srcaddr, 'example-VPC-CIDR'))   
    | stats sum(bytes) as bytesTransferred by pkt_srcaddr, pkt_dstaddr  
    | sort bytesTransferred desc  
    | limit 10

Verwende benutzerdefinierte VPC-Flow-Protokolle, um die Instances zu identifizieren, die mit Internetzielen kommunizieren. Stelle sicher, dass deine VPC-Flow-Protokolle die Felder pkt-srcaddr und pkt-dstaddr enthalten. Weitere Informationen findest du unter Datenverkehr über ein NAT-Gateway.

Amazon Athena verwenden, um die Instances zu identifizieren, die Datenverkehrsspitzen verursachen

Wenn deine Amazon VPC-Flow-Protokolle Daten in Amazon S3 veröffentlichen, verwende Amazon Athena, um eine Tabelle für deine Flow-Protokolle zu erstellen. Stelle sicher, dass du deiner Tabelle die folgenden Filter hinzufügst, um den Zeitraum festzulegen, der den von dir identifizierten Verkehrsspitzen entspricht:

start>= (example-timestamp-start)  
end>= (example-timestamp-end)

Hinweis: Ersetze example-timestamp-start durch den Beginn des Zeitrahmens, der deinem Verkehrsanstieg entspricht. Ersetze example-timestamp-end durch das Ende des Zeitrahmens, der deinem Verkehrsanstieg entspricht.

Frage dann deine Tabelle nach Instances ab, die Verkehrsspitzen verursachen.

Hinweis: Ersetze in den folgenden Abfragen example-NAT-private-IP durch die private IP-Adresse deines NAT-Gateways. Ersetze example-VPC-CIDR durch den CIDR-Bereich deiner Amazon VPC. Ersetze example-database-name.example-table-name durch deine Datenbank- und Tabellennamen. Ersetze example-octets durch die ersten beiden Oktette des CIDR-Bereichs deiner Amazon VPC. Wenn dein CIDR-Bereich beispielsweise 10.24.34.0/23 ist, ersetze example-octets durch 10.24.

Führe die folgende Abfrage aus, um Instances zu identifizieren, die den meisten Datenverkehr über das NAT-Gateway senden:

SELECT srcaddr,dstaddr,sum(bytes) FROM example-database-name.example-table-name WHERE srcaddr like example-octets AND dstaddr like example-NAT-private-IP group by 1,2 order by 3 desclimit 10;

Führe die folgende Abfrage aus, um den Datenverkehr zu und von deinen Instances zu identifizieren:

SELECT srcaddr,dstaddr,sum(bytes) FROM example-database-name.example-table-name WHERE (srcaddr like example-octets AND dstaddr like example-NAT-private-IP) or (srcaddr like example-NAT-private-IP AND dstaddr like example-octets) group by 1,2 order by 3 desclimit 10;

Führe die folgenden Abfragen aus, um die Internetziele zu identifizieren, auf die deine Instances am häufigsten zugreifen:

  • Für Uploads über ein NAT-Gateway:

    SELECT srcaddr,dstaddr,sum(bytes) FROM example-database-name.example-table-name WHERE (srcaddr like example-NAT-private-IP AND dstaddr not like example-octets) group by 1,2 order by 3 desclimit 10;0
  • Für Downloads über ein NAT-Gateway:

    SELECT srcaddr,dstaddr,sum(bytes) FROM example-database-name.example-table-name WHERE (srcaddr not like example-octets AND dstaddr like example-NAT-private-IP) group by 1,2 order by 3 desclimit 10;

Ähnliche Informationen

Beispielabfragen

Boolesche, Vergleichs-, numerische, Datetime- und andere Funktionen

Wie verwende ich Athena, um VPC-Flow-Protokolle zu analysieren?

Verwendung von AWS Cost Explorer zur Analyse von Datenübertragungskosten