Objekte des Ablaufprotokolls anzeigen
Bei einem Ablaufprotokoll handelt es sich um eine auf ein bestimmtes Zeitfenster bezogene Zusammenfassung des Netzverkehrs, der durch eine Verbindung zwischen zwei vNICs (Virtual Network Interface Cards) eindeutig gekennzeichnet ist. Ablaufprotokolle beschreiben den Datenverkehr, der von der Firewall gemäß den relevanten Sicherheitsgruppen oder Netz-ACLs zugelassen wurde, oder aber den Datenverkehr, der abgelehnt wurde. Sie enthalten Headerinformationen und Statistiken zu Nutzdaten.
Flow-Protokolle werden etwa alle 5 Minuten regelmäßig in die Datei „ IBM Cloud® Object Storage “ geschrieben. Wenn der Ablaufprotokollkollektor 100-KB-Datenflüsse erreicht, werden in einem entsprechend kürzeren Intervall Ablaufprotokolle publiziert.
Derzeit wird von den Ablaufprotokollen TCP-Datenverkehr (TCP = Transmission Control Protocol) und UDP-Datenverkehr (UDP = User Datagram Protocol) erfasst. ICMP-Datenverkehr (ICMP = Internet Control Message Protocol) wird nicht erfasst.
Jedes Ablaufprotokollobjekt enthält einzelne Ablaufprotokolle. Um die Flussprotokolle anzuzeigen oder zu analysieren, verwenden Sie die IBM Analytics Engine. Weitere Informationen finden Sie im IBM Analytics Engine -Tutorial für Einsteiger.
IBM Cloud Data Engine ist veraltet und wird nicht mehr unterstützt. Wenn Sie derzeit vorhandene Instanzen von Data Engine verwenden, wird empfohlen, Ihre Workloads zu migrieren IBM Analytics Engine.
Format der Ablaufprotokolldaten
In Ablaufprotokollen enthaltene Zusammenfassungen zum Datenverkehr enthalten die folgenden Informationen:
- Byte/Paketanzahl für empfangene (RX) und für übertragene Daten (TX)
- Angabe zur Verbindungsaktion, d. h. ob eine Verbindung im jeweiligen Zeitfenster gestartet oder gestoppt wird
Da ein Ablaufprotokoll den Datenaustausch im Netz in einem begrenzten Zeitfenster widerspiegelt, werden bei einer Verbindung mit langer Laufzeit möglicherweise mehrere Ablaufprotokolle ausgegeben. Für jede Verbindung, die von einer vNIC verarbeitet wird, wird eine nach Zeit geordnete Sequenz von Ablaufprotokollen (Fehlschläge nicht eingeschlossen) ausgegeben. Diese Flussprotokolle erscheinen in einem oder mehreren „ Object Storage “-Objekten.
Der Wert für initiator_ip in einem Ablaufprotokoll ist als source_ip-Wert definiert, der im ersten Paket der zugehörigen Verbindung enthalten ist, das die vNIC erreicht. Auf der Implementierungsebene entspricht dieses
Paket normalerweise dem Paket, das dazu führt, dass die neue Verbindung zur Verbindungstabelle hinzugefügt wird. Dementsprechend ist der Wert für target_ip im Ablaufprotokoll mit dem Wert im Feld dest_ip in demselben
Paket definiert.
Wenn sowohl der vNIC des Verbindungsinitiators als auch der vNIC des Verbindungsziels Ablaufprotokolle ermöglichen, sind die Felder für die IP-Adressen und Ports des Initiators und des Ziels in den Ablaufprotokollen beider vNICs identisch.
Beispiel: Stellen Sie sich einen Client vor, der eine Anfrage vom Typ „ HTTP “ an einen Webserver sendet. Im Ablaufprotokoll für die HTTP-Anforderung wird die clientseitige IP-Adresse als initiator_ip angegeben. Das entsprechende
Ablaufprotokoll auf der serverseitigen vNIC weist denselben Wert als initiator_ip auf.
Die Werte für start_time und end_time in einem Ablaufprotokoll bilden Folgendes ab:
- Capture time (Erfassungszeit) - Die Zeit, in der Datenpfadelemente nach Datenverkehrszählern abgefragt wurden
- Data path time (Zeit des Datenpfads) - Die Zeit, wie sie im Datenpfadelement selbst geführt wird
Möglicherweise bildet das Ablaufprotokoll nicht den gesamten Datenverkehr (z. B. im Datenpfad) zwischen dem Zeitpunkt für start_time und dem Zeitpunkt für end_time ab. Anders ausgedrückt könnte es sein, dass Pakete,
die vom vNIC gegen Ende des Erfassungsfensters gesendet und empfangen werden, nur in einem Ablaufprotokoll mit dem späteren Startzeitfenster (start_time) wiedergegeben werden.
Flow-Protokolle spiegeln den tatsächlichen Datenverkehr auf Verbindungen wider: Wenn in einem Erfassungsfenster kein Datenverkehr auf einer Verbindung stattfindet, wird dafür kein Flow-Protokoll im Objekt „ Object Storage “ für dieses Fenster angezeigt. Das bedeutet, dass die Abfolge von Flow-Logs für eine Verbindung möglicherweise einer Abfolge von nicht aufeinanderfolgenden „ Object Storage “-Objekten zugeordnet wird.
Die Datenflussprotokollfolge innerhalb eines Objekts ist möglicherweise nicht in einer bestimmten Reihenfolge sortiert.
Abgelehnter Datenverkehr:
- In einem Ablaufprotokoll wird entweder ausschließlich abgelehnter Datenverkehr oder ausschließlich zugelassener Datenverkehr zusammengefasst.
- Die Sequenz der Ablaufprotokolle für eine Verbindung kann Überschneidungen der Zeitfenster der Ablaufprotokolle für zugelassenen Datenverkehr in Bezug auf die Zeitfenster der Ablaufprotokolle für abgelehnten Datenverkehr aufweisen.
- Abgelehnte Pakete, die keiner vorhandenen Verbindung zugeordnet sind (z. B. Fälle, in denen die Verbindungsinitialisierung aufgrund einer Sicherheitsgruppe oder Netz-ACL verweigert wurde).
- Abgelehnte Pakete einer vorhandenen Verbindung (z. B. Fälle, in denen der Datenverkehr nicht der TCP-Zustandsmaschine entspricht oder eine Netz-ACL-Regel während der Verbindungsdauer geändert wurde).
- Abgelehnte Pakete werden in separate Ablaufprotokolle für eingehende Daten und für ausgehende Daten geschrieben.
Datenflüsse werden als abgelehnt markiert, wenn die zugehörigen Pakete aufgrund von Sicherheitsgruppen oder Netz-ACL-Regeln blockiert wurden.
Format der Ablaufprotokollobjekte
Flow-Protokolle werden unter Verwendung der folgenden Namenskonvention in den vom Benutzer angegebenen Bucket „ Object Storage “ geschrieben:
ibm_vpc_flowlogs_v1/account={account}/region={region}/vpc-id={vpc-id}/subnet-id={subnet-id}/endpoint-type=vnics/instance-id={vsi-id}/vnic-id={vnic-id}/record-type={all|ingress|egress}/year={xxxx}/month={yy}/day={zz}/hour={hh}/stream-id={stream-id}/{sequence-number}.gz
Dabei gilt:
{stream-id}ist eine Zeichenfolge für Datum und Uhrzeit im ISO 8601-FormatyyyymmddThhmmssZ(Coordinated Universal Time), die mit demjenigen Zeitpunkt definiert ist, an dem das erste Objekt imdirectoryerstellt wurde.{sequence-number}ist ein aktiver Zähler von Objekten innerhalb des Datenstroms, der als achtstelliges, nullgefülltes Feld (%08d) dargestellt wird.{all|ingress|egress}zeigt die Art des Datenverkehrs, den der Fluss umfasst.{xxxx}: Jahreszahl in vierstelligem Format.{yy}: Monatsangabe in zweistelligem Format, gegebenenfalls mit vorangestellter Null.{zz}: Tag des Monats in zweistelligem Format, gegebenenfalls mit vorangestellter Null.{hh}: Zeitangabe, gegebenenfalls mit vorangestellter Null (z. B. 00-24).
Enthält der Pfad Zeichen, deren Verwendung für URLs als unsicher eingestuft wird, werden diese Zeichen kodiert.
Das Objekt „ Object Storage “ eines Flow-Protokolls enthält ein einzelnes gültiges JSON-Objekt. Das Objekt „ Object Storage “ ist .gz komprimiert.
Die in der folgenden Tabelle angegebenen Objekt-Header-Felder werden in die Metadaten des Objekts „ Object Storage “ geschrieben.
Flow-Protokoll-Objekt-Header-Felder (pro Object Storage S-Objekt)
| Feld | Typ | Beschreibung |
|---|---|---|
version |
Zeichenfolge | Die Semantikversion |
collector_crn |
Zeichenfolge | Der Cloud-Ressourcenname (CRN) des Ablaufprotokollkollektors |
attached_endpoint_type |
Zeichenfolge | Derzeit lautet der einzige verwendete Wert vnic. |
network_interface_id |
Zeichenfolge | Die ID des vnic, da es keinen CRN für den vNIC gibt. |
instance_crn |
Zeichenfolge | Der CRN der Instanz, der die Netzschnittstelle zugeordnet ist |
vpc_crn |
Zeichenfolge | Der CRN der VPC, zu der das Ablaufprotokoll gehört |
capture_start_time |
Zeichenfolge | Datum und Uhrzeit gemäß RFC 3339 (koordinierte Weltzeit) |
capture_end_time |
Zeichenfolge | Datum und Uhrzeit gemäß RFC 3339 (koordinierte Weltzeit) |
state |
Zeichenfolge | Gibt den Betriebsstatus des Datenflussprotokollkollektors an. OK bedeutet, dass Daten ohne Fehler erfasst und versendet werden. skip data gibt Daten an, die während dieses Erfassungsintervalls verloren gegangen
sind (z. B. aufgrund einer hohen Rate zurückgewiesener SYN-Pakete). |
number_of_flow_logs |
uin32 | Die Anzahl der Elemente in einem Array flow_logs. Da diese Zahl sehr variabel ist, eignet sie sich als schnelle Referenz für die Anzahl der Flow-Protokolle, die in einem einzelnen „ Object Storage “-Objekt enthalten sind,
ohne dass das Objekt zuvor heruntergeladen werden muss. |
flow_logs |
Array von JSON-Objekten | Hierbei kann es sich um ein leeres Array handeln, wenn kein Datenaustausch (no traffic) erfolgt ist. |
Felder des Ablaufprotokolls
| Feld | Typ | Beschreibung |
|---|---|---|
start_time |
Zeichenfolge | Zeitpunkt, zu dem das erste Byte in einem Ablaufprotokoll erfasst wurde und im Datenpfad erschienen ist (Datum und Zeit gemäß RFC 3339 in koordinierter Weltzeit) |
end_time |
Zeichenfolge | Der Zeitpunkt, zu dem das letzte Byte in einem Ablaufprotokoll erfasst wurde und im Datenpfad erschienen ist (Datum und Zeit gemäß RFC 3339 in koordinierter Weltzeit) |
connection_start_time |
Zeichenfolge | Wenn das erste Byte im Verbindung eines Datenflussprotokolls erfasst und im Datenpfad angezeigt wurde (RFC 3339 Date and Time-Coordinated Universal Time) |
direction |
Zeichenfolge | I für eingehende Daten oder O für ausgehende Daten. Wenn das erste Paket auf der Verbindung vom vNIC Empfangen war, lautet die Richtung I. Wenn das erste Paket Gesendet vom vNIC
war, lautet die Richtung O. |
action |
Zeichenfolge | accepted, wenn der im Ablaufprotokoll zusammengefasste Datenverkehr zugelassen wurde, oder rejected, wenn der Datenverkehr abgelehnt wurde |
initiator_ip |
Zeichenfolge | (IPv4-Adresse) Die Quellen-IP wie im ersten Paket enthalten, das von der vNIC in dieser Verbindung verarbeitet wird. Wenn direction=="outbound" angegeben ist, ist dem vNIC eine private IP-Adresse zugeordnet. |
target_ip |
Zeichenfolge | (IPv4-Adresse) Die Ziel-IP wie im ersten Paket enthalten, das von der vNIC in dieser Verbindung verarbeitet wird. Wenn direction=="inbound" angegeben ist, ist dem vNIC eine private IP-Adresse zugeordnet. |
initiator_port |
uint16 | Der TCP/UDP-Quellenport wie im ersten Paket enthalten, das von der vNIC in dieser Verbindung verarbeitet wird |
target_port |
uint16 | Der TCP/UDP-Zielport wie im ersten Paket enthalten, das von der vNIC in dieser Verbindung verarbeitet wird |
transport_protocol |
uint8 | Die IANA-Protokollnummer (IANA = Internet Assigned Numbers Authority) für TCP oder UDP |
ether_type |
Zeichenfolge | Derzeit ist IPv4 der einzige mögliche Wert. |
was_initiated |
bool | Die in diesem Ablaufprotokoll erfasste Verbindung wurde initialisiert. |
was_terminated |
bool | Die Verbindung wurde beendet (z. B. timeout/RST/Final-FIN). |
bytes_from_initiator |
uint64 | Die Anzahl der vom Initiator über die Verbindung zum Ziel übertragenen Bytes im Zeitfenster des Ablaufprotokolls |
packets_from_initiator |
uint64 | Die Anzahl der vom Initiator über die Verbindung zum Ziel übertragenen Pakete im Zeitfenster des Ablaufprotokolls |
bytes_from_target |
uint64 | Die Anzahl der vom Ziel über die Verbindung zum Initiator übertragenen Bytes im Zeitfenster des Ablaufprotokolls |
packets_from_target |
uint64 | Die Anzahl der vom Ziel über die Verbindung zum Initiator übertragenen Pakete im Zeitfenster des Ablaufprotokolls |
cumulative_bytes_from_initiator |
uint64 | Die Anzahl der seit dem Start der Verbindung vom Initiator zum Ziel übertragenen Bytes |
cumulative_packets_from_initiator |
uint64 | Die Anzahl der seit dem Start der Verbindung vom Initiator zum Ziel übertragenen Pakete |
cumulative_bytes_from_target |
uint64 | Die Anzahl der seit dem Start der Verbindung vom Ziel zum Initiator übertragenen Bytes |
cumulative_packets_from_target |
uint64 | Die Anzahl der seit dem Start der Verbindung vom Ziel zum Initiator übertragenen Pakete |
In den meisten Fällen finden Sie das Richtungsfeld, indem Sie die private IP-Adresse der vNIC mit den Quellen- und Ziel-IPs vergleichen. Das Feld eignet sich jedoch gut für Abfragen.
Beispiel eines Ablaufprotokollobjekts
{
"version": "0.0.1",
"collector_crn": "crn",
"attached_endpoint_type": "vnic",
"network_interface_id": "crn",
"instance_crn": "crn",
"vpc_crn": "crn"
"capture_end_time": "2008-09-15T15:53:00Z",
"capture_start_time": "2008-09-15T15:00:00Z",
"state": "ok",
"number_of_flow_logs" : 1,
"flow_logs": [
{
"start_time": "2008-09-15T15:53:00",
"end_time": "2008-09-15T15:40:00",
"direction": "O",
"action": "accepted",
"initiator_ip": "1.2.3.4",
"initiator_port": 20033,
"target_ip": "5.6.7.8",
"target_port": 80,
"transport_protocol": 6,
"ether_type": "IPv4",
"was_initiated": true,
"was_terminated": false,
"bytes_from_initiator": 12000,
"packets_from_initiator": 2212,
"bytes_from_target": 323232,
"packets_from_target": 3232
"cumulative_packets_from_initiator": 2212,
"cumulative_packets_from_target": 3232,
"cumulative_bytes_from_target": 323232,
"cumulative_bytes_from_initiator": 12000,
}
],
}
Generierte Flow-Protokolldateien aus dem Bucket Object Storage anzeigen
Wenn Sie den Preisplan Lite (kostenlos) für IBM Cloud Object Storage verwenden, können Sie direkt vom Object Storage Bucket aus auf die generierten Flow-Log-Objektdateien zugreifen, um zu überprüfen, ob die Dateien erfolgreich erstellt wurden und die Objekte generiert werden.
Gehen Sie wie folgt vor, um generierte Datenflussprotokolldateien aus dem Bucket Object Storage anzuzeigen:
-
Überprüfen Sie das Bucket Object Storage, um sicherzustellen, dass die Datenflussprotokolle erfasst werden.
-
Navigieren Sie im Ordner zu Ihrer VPC oder der Ressource, für die Sie die Überwachung konfiguriert haben.
-
Führen Sie einen Drilldown zu der Ressource durch, um die Netzressource zu finden, die Sie überwachen.
Bei ordnungsgemäßer Konfiguration sollten für jeden Protokolleintrag mehrere gzip-Dateien angezeigt werden.
Um sicherzustellen, dass die Daten erfasst werden, laden Sie eine der Dateien herunter und sehen Sie sich deren Inhalt an, um sicherzustellen, dass der Datenverkehr erfasst wird.