IBM Cloud Docs
查看流日志对象

查看流日志对象

流日志是在特定时间范围内由两个虚拟网络接口卡 (vNICs) 之间的连接唯一标识的网络流量的摘要。 流日志描述防火墙接受 (相关安全组或网络 ACL) 或拒绝 (但不能同时接受) 的流量。 它包含报头信息和有效载荷统计信息。

大约每 5 分钟将流日志定期写入 IBM Cloud® Object Storage。 在流日志收集器达到 100 KB 流的情况下,将更频繁地发布流日志。

当前,流日志收集传输控制协议 (TCP) 和用户数据报协议 (UDP) 流量,但不收集因特网控制报文协议 (ICMP) 流量。

每个流日志对象都包含单独的流日志。 要查看或分析流量日志,请使用 IBM Analytics Engine。 有关详细信息,请参阅 IBM Analytics Engine 入门教程

IBM Cloud Data Engine已折旧,2025 年 1 月 19 日后将不再支持。 如果您目前使用 Data Engine 的现有实例,建议您将工作负载迁移到 IBM Analytics Engine

流日志数据格式

流日志流量摘要包含以下信息:

  • 字节/包计数,分别用于 RX (接收) 和 TX (传输)。
  • 连接是在时间窗口中启动还是停止。

由于流日志在有限的时间范围内反映网络流量,因此长时间运行的连接可能会导致发出多个流日志。 对于 vNIC, 都会发出按时间顺序排列的流量日志(不包括故障)。 这些流日志显示在一个或多个 Object Storage 对象中。

流日志中的 initiator_ip 定义为到达 vNIC的其连接的第一个包中显示的 source_ip。 在实现级别,此包通常是导致将新连接添加到连接表的包。 同样,流日志中的 target_ip 设置为同一包中的 dest_ip 字段。

如果连接发起方 vNIC 和连接目标 vNIC 都启用流日志,那么两个 vNICs上的流日志中的发起方和目标 IP 及端口字段相同。

示例:假设客户向网络服务器发送了 HTTP 请求。 客户端 vNIC 上此 HTTP 请求的流量日志显示客户端的IP地址为 initiator_ip。 服务器端 vNIC 的相应流量日志与 initiator_ip 相同。

流日志中的 start_timeend_time 反映:

  • 捕获时间-查询数据路径元素以获取流量计数器的时间。
  • 数据路径时间-数据路径元素本身中保留的时间。

流日志可能不会反映流日志 start_timeend_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 不安全字符的实例均已 URL 编码。

流日志的 Object Storage 对象包含单个有效 JSON 对象。 Object Storage 对象已 .gz 压缩。

下表中指定的对象头字段将写入 Object Storage 对象元数据。

流日志对象头字段 (每个 Object StorageS 对象)

流量日志对象标头字段(每个Object Storage对象)
字段 Type 描述
version 字符串 语义版本。
collector_crn 字符串 流日志收集器的云资源名称 (CRN)。
attached_endpoint_type 字符串 当前,唯一值为 vnic
network_interface_id 字符串 vnic 标识,因为它没有 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

流日志字段

流量日志字段
字段 Type 描述
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 布尔值 在此流日志中启动的连接。
was_terminated 布尔值 连接已终止 (例如,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 和目标 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 的精简版(免费)定价计划,则可以直接从 Object Storage 桶访问已生成的流量日志对象文件,以验证文件是否已成功创建,以及对象是否正在生成。

要从 Object Storage 存储区查看生成的流日志文件,请执行以下步骤:

  1. 要确保捕获流日志,请检查 Object Storage 存储区。

  2. 在文件夹中浏览以查找 VPC 或配置了监视的资源。

  3. 向下钻取到资源以查找您正在监视的网络资源。

    如果配置正确,那么您应该会看到每个日志条目的多个 gzip 文件。

为确保数据被捕获,请下载其中一个文件查看其内容,以确保流量被捕获。