檢視流程日誌物件
流量日誌是網路流量摘要,其特徵在於透過兩個虛擬網路介面卡( vNICs )之間的連線進行唯一識別,並記錄於特定時間視窗內。 流程日誌說明防火牆接受 (相關安全群組或網路 ACL) 或拒絕的資料流量,但不能同時說明兩者。 它包含標頭資訊和有效負載統計資訊。
每 5 分鐘一次將流程日誌定期寫入 IBM Cloud® Object Storage。 在流程日誌收集器達到 100 KB 流程的情況下,會更頻繁地發佈流程日誌。
目前,流量記錄會收集傳輸控制協定( Transmission Control Protocol, TCP)與用戶端傳輸協定( User Datagram Protocol, UDP)的流量,但不會收集互聯網控制訊息協定( Internet Control Message Protocol, ICMP)的流量。
每一個流程日誌物件都包含個別流程日誌。 若要查看或分析流程日誌,請使用IBM Analytics Engine。 如需詳細資訊,請參閱 IBM Analytics Engine 入門教學。
IBM Cloud Data Engine 已停用且不再受支援。 若您目前使用的是現有的 Data Engine 實例,建議您將工作負載遷移至 IBM Analytics Engine.
流程日誌資料格式
流程日誌資料流量摘要包含下列資訊:
- 個別針對 RX (接收) 及 TX (傳輸) 的位元組/封包計數。
- 連線是在時間範圍內啟動還是停止。
因為流程日誌在有限時間範圍內反映網路資料流量,長時間執行連線可能會導致產生多個流程日誌。 對於由 a 處理的每個連接vNIC,發出按時間順序排列的流日誌序列(不包括故障)。 這些流程日誌出現在一或多個 Object Storage 物件中。
流程日誌中的 initiator_ip 定義為 source_ip,它會出現在其連線的第一個封包中,到達 vNIC。 在實作層次,此封包通常是導致將新連線新增至連線表格的封包。 同樣地,流程日誌中的 target_ip 會設為該相同封包中的 dest_ip 欄位。
若連線發起方 vNIC 與連線目標方 vNIC 皆啟用流量記錄功能,則兩端流量記錄中的發起方與目標方 IP 及連接埠欄位,在 vNICs 系統中將呈現完全一致的記錄內容。
範例:假設某客戶端正向網頁伺服器發送一則「HTTP」請求。 此 HTTP 請求在客戶端 vNIC 的流量記錄中,顯示客戶端 IP 位址為 initiator_ip. 伺服器端的對應流量記錄位於 vNIC,內容相同 initiator_ip。
流程日誌中的 start_time 和 end_time 反映:
- 擷取時間-在資料路徑元素中查詢資料流量計數器的時間。
- 資料路徑時間-在資料路徑元素本身中維護的時間。
流程日誌可能不會反映流程日誌 start_time 與 end_time 之間的所有資料流量 (例如,在資料路徑中)。 換句話說,vNIC 在擷取時間範圍接近結束時所傳送及接收的封包,可能只會反映在具有後續 start_time 視窗的流程日誌中。
流量記錄反映連接上的實際流量:若某連接在擷取視窗期間未產生流量,則該視窗的 Object Storage 物件中將不會出現對應的流量記錄。 這意味著某個連線的流量日誌序列,可能被映射成一組非連續的 Object Storage 物件序列。
物件內的流程日誌陣列不需要以任何特定順序排序。
拒絕的資料流量:
- 特定流程日誌會彙總拒絕或接受的資料流量,永不兩者。
- 連線的流程日誌序列在接受與拒絕的流程日誌之間可能會有時間範圍重疊。
- 未與現有連線相關聯的拒絕封包 (例如,安全群組或網路 ACL 會拒絕連線起始設定)。
- 現有連線上拒絕的封包 (例如,不符合 TCP 狀態機器的資料流量,或網路 ACL 規則在連線中途變更)。
- 拒絕的封包會根據送入或送出的封包,寫入個別的流程日誌。
如果安全群組或網路 ACL 規則封鎖流程的封包,則會將流程標記為拒絕。
流程日誌物件格式
流程日誌會以下列命名慣例寫入使用者指定的 Object Storage 儲存區:
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
其中:
{stream-id}是 ISO 8601 格式的日期和時間字串yyyymmddThhmmssZ(世界標準時間),定義為建立directory中第一個物件的時間。{sequence-number}是串流內物件的執行中計數器,以 8 個字元、填入零的欄位 (%08d) 表示。{all|ingress|egress}顯示流程包括的資料流量類型。{xxxx}是採用四位數格式的年份。{yy}是採用兩位數前導零格式的月份。{zz}是採用兩位數前導零格式的當月日期。{hh}是前導零格式的小時 (例如,00-24)。
路徑中出現的任何 URL-unsafe 字元皆會進行 URL-encoded 編碼。
流程日誌的 Object Storage 物件包含單一有效 JSON 物件。 Object Storage 物件已 .gz 壓縮。
下表中指定的物件標頭欄位會寫入 Object Storage 物件 meta 資料。
流程日誌物件標頭欄位 (每個 Object StorageS 物件)
| 欄位 | 類型 | 說明 |
|---|---|---|
version |
字串 | 語意版本。 |
collector_crn |
字串 | 流程日誌收集器的雲端資源名稱 (CRN)。 |
attached_endpoint_type |
字串 | 目前,唯一值為 vnic。 |
network_interface_id |
字串 | vnic ID,因為它沒有 vNIC CRN。 |
instance_crn |
字串 | 連接網路介面之實例的 CRN。 |
vpc_crn |
字串 | 流程日誌收集器所屬 VPC 的 CRN。 |
capture_start_time |
字串 | RFC 3339 日期和時間 (世界標準時間) |
capture_end_time |
字串 | RFC 3339 日期和時間 (世界標準時間) |
state |
字串 | 指出流程日誌收集器的作業狀態。OK 表示正在收集並傳送資料,且沒有任何錯誤。skip data 指出在此收集間隔期間遺失的資料 (例如,因為拒絕 SYN 封包的高速率)。 |
number_of_flow_logs |
uin32 | 陣列 flow_logs 中的元素數量。 由於此數目是高度可變的,它有助於快速參照單一 Object Storage 物件中包含的流程日誌數目,而不需要先下載物件。 |
flow_logs |
JSON 物件的陣列 | 這可以是空陣列,指出 no traffic。 |
流程日誌欄位
| 欄位 | 類型 | 說明 |
|---|---|---|
start_time |
字串 | 在資料路徑中擷取並查看流程日誌中的第一個位元組時 (RFC 3339 日期和時間-世界標準時間)。 |
end_time |
字串 | 當在資料路徑中擷取並看到流程日誌中的最後一個位元組時 (RFC 3339 日期和時間-世界標準時間)。 |
connection_start_time |
字串 | 當在資料路徑中擷取並看到流程日誌的 連線 中的第一個位元組時 (RFC 3339 日期和時間-世界標準時間)。 |
direction |
字串 | 值為 I (代表入埠) 或 O (代表出埠)。 如果連接上的第一個資料包是_已收到_由vNIC,方向是 I。 如果第一個資料包是_傳送_由vNIC,方向是 O。 |
action |
字串 | 值為 accepted (依已接受此流程彙總的資料流量) 或 rejected (已拒絕資料流量)。 |
initiator_ip |
字串 | (IPv4 位址) 在此連線上由 vNIC 處理的第一個封包中出現的來源 IP。 如果 direction=="outbound",則為與 vNIC相關聯的專用 IP。 |
target_ip |
字串 | (IPv4 位址) 在此連線上由 vNIC 處理的第一個封包中出現的 Dest-IP。 如果 direction=="inbound",則為與 vNIC相關聯的專用 IP。 |
initiator_port |
uint16 | 在此連線上由此 vNIC 處理的第一個封包中出現的 TCP/UDP 來源埠。 |
target_port |
uint16 | 在此連線上由此 vNIC 處理的第一個封包中出現的 TCP/UDP dest-port。 |
transport_protocol |
uint8 | 網際網路指派號碼機構 (IANA) 通訊協定號碼 (TCP 或 UDP)。 |
ether_type |
字串 | 目前,IPv4 是唯一值。 |
was_initiated |
bool | 在此流程日誌中起始的連線。 |
was_terminated |
bool | 連線已終止 (例如,timeout/RST/Final-FIN)。 |
bytes_from_initiator |
uint64 | 在此流程日誌的時間範圍中,從「起始器」到「目標」的連線位元組計數。 |
packets_from_initiator |
uint64 | 在此流程日誌的時間範圍內,從「起始器」到「目標」的連線上的封包計數。 |
bytes_from_target |
uint64 | 在此流程日誌的時間範圍中,從「目標」到「起始器」的連線位元組計數。 |
packets_from_target |
uint64 | 在此流程日誌的時間範圍內,從「目標」到「起始器」的連線上的封包計數。 |
cumulative_bytes_from_initiator |
uint64 | 自起始連線以來,從「起始器」到「目標」的位元組計數。 |
cumulative_packets_from_initiator |
uint64 | 自起始連線以來,從「起始器」到「目標」的封包計數。 |
cumulative_bytes_from_target |
uint64 | 自起始連線以來,從「目標」到「起始器」的位元組計數。 |
cumulative_packets_from_target |
uint64 | 自起始連線以來從「目標」到「起始器」的封包計數。 |
在大多數情況下,您可以透過比較 vNIC’s 的私有IP與來源及目的IP來找出方向欄位。 不過,此欄位便於查詢。
流程日誌物件範例
{
"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,
}
],
}
從 Object Storage 儲存區檢視產生的流程日誌檔
如果您使用IBM Cloud Object Storage的 Lite(免費)定價計劃,則可以直接從Object Storage儲存桶存取產生的串流日誌物件文件,以驗證文件已成功建立並且正在產生物件。
若要從 Object Storage 儲存區檢視產生的流程日誌檔,請遵循下列步驟:
-
若要確保正在擷取流程日誌,請檢查 Object Storage 儲存區。
-
在資料夾中導覽,以尋找您的 VPC 或您已配置監視的資源。
-
往下探查至資源,以尋找您正在監視的網路資源。
如果正確配置,您應該會看到每一個日誌項目的數個 gzip 檔。
為了確保捕獲數據,請下載其中一個檔案以查看其內容,以確保捕獲流量。