网络流日志
创建时间:2024-06-01 最近修改时间:2024-06-24
无需向应用中插入任何代码,DeepFlow 自动生成所有服务的网络流日志。
数据库表名:flow_log.l4_flow_log。
#1. 标签
自动注入的 Tag 列表:IP、协议、端口、网络包头字段、采集位置、云资源、K8s 资源、K8s 自定义 Label,详细字段描述如下。
| Name | DisplayName | Description |
|---|---|---|
| _id | UID | |
| time | 时间 | 将 end_time 取整到秒。 |
| region | 区域 | |
| az | 可用区 | |
| host | 宿主机 | 承载虚拟机的宿主机。 |
| chost | 云主机 | 包括虚拟机、裸金属服务器。 |
| vpc | VPC | |
| l2_vpc | 转发 VPC | MAC 地址所在的 VPC。 |
| subnet | 子网 | |
| router | 路由器 | |
| dhcpgw | DHCP 网关 | |
| lb | 负载均衡器 | |
| lb_listener | 负载均衡监听器 | |
| natgw | NAT 网关 | |
| redis | Redis | |
| rds | RDS | |
| pod_cluster | K8s 容器集群 | |
| pod_ns | K8s 命名空间 | |
| pod_node | K8s 容器节点 | |
| pod_ingress | K8s Ingress | |
| pod_service | K8s 容器服务 | |
| pod_group_type | K8s 工作负载类型 | |
| pod_group | K8s 工作负载 | 例如 Deployment、StatefulSet、Daemonset 等。 |
| pod | K8s 容器 POD | |
| service | 服务 | 已废弃,请使用 pod_service |
| auto_instance_type | 自动实例类型 | auto_instance实例对应的类型。 |
| auto_instance | 自动实例 | IP 对应的实例,实例为IP时,auto_instance_id显示为子网ID。 |
| auto_service_type | 自动服务类型 | auto_service实例对应的类型。 |
| auto_service | 自动服务 | 在auto_instance基础上,将容器服务的 ClusterIP 与工作负载聚合为服务,实例为IP时,auto_service_id显示为子网ID。 |
| gprocess | 进程 | |
| tap_port_host | 采集网卡所属宿主机 | 已废弃,请使用 capture_nic_host。 |
| tap_port_chost | 采集网卡所属云主机 | 已废弃,请使用 capture_nic_chost。 |
| tap_port_pod_node | 采集网卡所属容器节点 | 已废弃,请使用 capture_nic_pod_node。 |
| capture_nic_host | 采集网卡所属宿主机 | |
| capture_nic_chost | 采集网卡所属云主机 | |
| capture_nic_pod_node | 采集网卡所属容器节点 | |
| host_ip | 宿主机 | 宿主机的管理 IP。 |
| host_hostname | 宿主机 | 宿主机的 Hostname。 |
| chost_ip | 云主机 | 云主机的主 IP。 |
| chost_hostname | 云主机 | 云主机的 Hostname。 |
| pod_node_ip | K8s 容器节点 | 容器节点的主 IP。 |
| pod_node_hostname | K8s 容器节点 | 容器节点的 Hostname。 |
| k8s.label | K8s Label | |
| k8s.annotation | K8s Annotation | |
| k8s.env | K8s Env | |
| cloud.tag | Cloud Tag | |
| os.app | OS APP | |
| eth_type | 链路协议 | |
| vlan | VLAN TAG | |
| mac | MAC 地址 | |
| ip | IP 地址 | |
| is_ipv4 | IPv4 标志 | |
| is_internet | Internet IP 标志 | IP 地址是否为外部 Internet 地址。 |
| province | 省份 | Internet IP 地址所属的省份。 |
| protocol | 网络协议 | |
| tunnel_tier | 隧道层数 | |
| tunnel_type | 隧道类型 | |
| tunnel_tx_id | 请求隧道 ID | |
| tunnel_rx_id | 响应隧道 ID | |
| tunnel_tx_ip | 请求隧道 IP | |
| tunnel_tx_ip_0 | 请求隧道源 IP | |
| tunnel_tx_ip_1 | 请求隧道目 IP | |
| tunnel_rx_ip | 响应隧道 IP | |
| tunnel_rx_ip_0 | 响应隧道源 IP | |
| tunnel_rx_ip_1 | 响应隧道目 IP | |
| tunnel_tx_mac | 请求隧道 MAC | |
| tunnel_tx_mac_0 | 请求隧道源 MAC | |
| tunnel_tx_mac_1 | 请求隧道目 MAC | |
| tunnel_rx_mac | 响应隧道 MAC | |
| tunnel_rx_mac_0 | 响应隧道源 MAC | |
| tunnel_rx_mac_1 | 响应隧道目 MAC | |
| client_port | 客户端口 | |
| server_port | 服务端口 | |
| tcp_flags_bit | TCP 标志位集合 | 当前自然分钟内所有包中 TCP 标志位的集合。 |
| syn_seq | SYN 包 Seq 号 | |
| syn_ack_seq | SYN-ACK 包 Seq 号 | |
| last_keepalive_seq | 心跳包 Seq 号 | 最近一个心跳包中的 SEQ 序列号。 |
| last_keepalive_ack | 心跳包 Ack 号 | 最近一个心跳包中的 ACK 确认号。 |
| l7_protocol | 应用协议 | |
| request_domain | 请求域名 | |
| flow_id | 流日志 ID | |
| aggregated_flow_ids | 聚合流日志 ID | |
| start_time | 开始时间 | 单位: 微秒。表示当前自然分钟内流的开始时间,对于新建流表示首包时间。 |
| end_time | 结束时间 | 单位: 微秒。表示当前自然分钟内流的结束时间,若流在该分钟内 close,则为尾包时间或流状态机超时的时间。 |
| close_type | 流结束类型 | |
| status | 状态 | 根据协议(protocol)、流结束类型(close_type)分类。 正常包括:正常结束、周期性上报、断连-XX半关、传输-超时(非 TCP 协议)。 客户端异常包括:建连-客户端XX、传输-客户端XX。 服务端异常包括:建连-服务端XX、传输-服务端XX、传输-超时(TCP 协议)。 未知=未知。 |
| is_new_flow | 新建流 | |
| signal_source | 信号源 | |
| tap | 采集点 | 已废弃,请使用 capture_network_type。 |
| capture_network_type | 网络位置 | 采集流量的网络位置,使用固定值(云网络)表示云内流量,其他值表示传统 IDC 流量(支持最多 254 个自定义值表示镜像分光的位置)。 |
| vtap | 采集器 | 已废弃,请使用 agent。 |
| agent | 采集器 | |
| nat_source | NAT 源 | |
| tap_port | 采集位置标识 | 已废弃,请使用 capture_nic。 |
| tap_port_name | 采集位置名称 | 已废弃,请使用 capture_nic_name。 |
| tap_port_type | 采集位置类型 | 已废弃,请使用 capture_nic_type。 |
| capture_nic | 采集网卡标识 | 当采集位置类型为本地网卡时,此值表示采集网卡的 MAC 地址后缀(后四字节)。 |
| capture_nic_name | 采集网卡名称 | 当采集位置类型为本地网卡时,此值表示采集网卡的名称。 |
| capture_nic_type | 采集网卡类型 | 表示流量采集位置的类型,包括本地网卡(云内流量)、云网关网卡(云网关流量)、分光镜像(传统 IDC 流量)等。 |
| tap_side | 路径统计位置 | 已废弃,请使用 observation_point。 |
| observation_point | 观测点 | 采集位置在流量路径中所处的逻辑位置,例如客户端网卡、客户端容器节点、服务端容器节点、服务端网卡等。 |
| l2_end | 二层边界 | 表示是否是在客户端网卡或服务端网卡处采集的流量。 |
| l3_end | 三层边界 | 表示是否是在客户端或服务端所在二层网络内采集的流量。 |
| has_pcap | PCAP 文件 | 是否存储了 PCAP 文件 |
| nat_real_ip | NAT IP 地址 | NAT 作用前(后)的真实 IP 地址,该值从 TOA(TCP Option Address)中提取,或者根据云平台中 VIP 与 RIP 的映射信息计算。 |
| nat_real_port | NAT Port | NAT 作用前的真实端口号,该值从 TOA(TCP Option Address)中提取。 |
generate from csv file: l4_flow_log.ch
#2. 指标
Metrics 列表:吞吐、负载、时延、TCP 异常、重传、零窗,详细字段描述如下。
| Field | DisplayName | Unit | Description |
|---|---|---|---|
| byte | 字节 | 字节 | |
| byte_tx | 发送字节 | 字节 | 客户端发往服务端的字节数总和(含 Ethernet 头) |
| byte_rx | 接收字节 | 字节 | 服务端发往客户端的字节数总和(含 Ethernet 头) |
| total_byte_tx | 累计发送字节 | 字节 | |
| total_byte_rx | 累计接收字节 | 字节 | |
| packet | 包数 | 包 | |
| packet_tx | 发送包数 | 包 | 客户端发往服务端的包数总和 |
| packet_rx | 接收包数 | 包 | 服务端发往客户端的包数总和 |
| total_packet_tx | 累计发送包数 | 包 | |
| total_packet_rx | 累计接收包数 | 包 | |
| l3_byte | 网络层载荷 | 字节 | |
| l3_byte_tx | 发送网络层载荷 | 字节 | 客户端发往服务端的网络层载荷字节数总和(不含 IP 头) |
| l3_byte_rx | 接收网络层载荷 | 字节 | 服务端发往客户端的网络层载荷字节数总和(不含 IP 头) |
| bpp | 平均包长 | 字节 | |
| bpp_tx | 平均发送包长 | 字节 | |
| bpp_rx | 平均接收包长 | 字节 | |
| new_flow | 新建连接 | 连接 | |
| closed_flow | 关闭连接 | 连接 | |
| syn_count | SYN 包数 | 包 | SYN 包的总数 |
| synack_count | SYN-ACK 包数 | 包 | SYN-ACK 包的总数 |
| l4_byte | 传输层载荷 | 字节 | |
| l4_byte_tx | 发送传输层载荷 | 字节 | 客户端发往服务端的包传输层载荷字节数总和(不含 TCP/UDP 头) |
| l4_byte_rx | 接收传输层载荷 | 字节 | 服务端发往客户端的包传输层载荷字节数总和(不含 TCP/UDP 头) |
| direction_score | 方向得分 | 算法推理传输层连接方向(客户端、服务端角色)的准确性得分值,得分越高连接方向的准确性越高,得分最高 255 | |
| log_count | 日志总量 | 个 | |
| retrans_syn | SYN 重传 | 包 | SYN 包的重传次数 |
| retrans_synack | SYN-ACK 重传 | 包 | SYN-ACK 包的重传次数 |
| retrans | TCP 重传 | 包 | |
| retrans_tx | TCP 客户端重传 | 包 | TCP 连接客户端发往服务端的重传包次数 |
| retrans_rx | TCP 服务端重传 | 包 | TCP 连接服务端发往客户端的重传包次数 |
| zero_win | TCP 零窗 | 包 | |
| zero_win_tx | TCP 客户端零窗 | 包 | TCP 连接客户端发往服务端的零窗包次数 |
| zero_win_rx | TCP 服务端零窗 | 包 | TCP 连接服务端发往客户端的零窗包次数 |
| retrans_syn_ratio | SYN 重传比例 | % | |
| retrans_synack_ratio | SYN-ACK 重传比例 | % | |
| retrans_ratio | TCP 重传比例 | % | |
| retrans_tx_ratio | TCP 客户端重传比例 | % | |
| retrans_rx_ratio | TCP 服务端重传比例 | % | |
| zero_win_ratio | TCP 零窗比例 | % | |
| zero_win_tx_ratio | TCP 客户端零窗比例 | % | |
| zero_win_rx_ratio | TCP 服务端零窗比例 | % | |
| tcp_establish_fail | 建连-失败次数 | 次 | |
| client_establish_fail | 建连-客户端失败次数 | 次 | |
| server_establish_fail | 建连-服务端失败次数 | 次 | |
| tcp_establish_fail_ratio | 建连-失败比例 | % | |
| client_establish_fail_ratio | 建连-客户端失败比例 | % | |
| server_establish_fail_ratio | 建连-服务端失败比例 | % | |
| tcp_transfer_fail | 传输-失败次数 | 次 | 所有传输错误。 |
| tcp_transfer_fail_ratio | 传输-失败比例 | % | |
| tcp_rst_fail | 重置次数 | 连接 | 所有重置错误。 |
| tcp_rst_fail_ratio | 重置比例 | % | |
| client_source_port_reuse | 建连-客户端端口复用 | 连接 | |
| server_syn_miss | 建连-服务端 SYN 缺失 | 连接 | |
| client_establish_other_rst | 建连-客户端其他重置 | 连接 | |
| client_ack_miss | 建连-客户端 ACK 缺失 | 连接 | |
| server_reset | 建连-服务端直接重置 | 连接 | |
| server_establish_other_rst | 建连-服务端其他重置 | 连接 | |
| client_rst_flow | 传输-客户端重置 | 连接 | |
| server_rst_flow | 传输-服务端重置 | 连接 | |
| server_queue_lack | 传输-服务端队列溢出 | 连接 | |
| tcp_timeout | 传输-TCP 连接超时 | 连接 | |
| client_half_close_flow | 断连-客户端半关 | 连接 | TCP 断连异常的场景之一,见文档描述。 |
| server_half_close_flow | 断连-服务端半关 | 连接 | TCP 断连异常的场景之一,见文档描述。 |
| rtt | 平均 TCP 建连时延 | 微秒 | |
| tls_rtt | 平均 TLS 建连时延 | 微秒 | |
| rtt_client | 平均 TCP 建连客户端时延 | 微秒 | |
| rtt_server | 平均 TCP 建连服务端时延 | 微秒 | |
| srt | 平均 TCP/ICMP 系统时延 | 微秒 | |
| art | 平均数据时延 | 微秒 | |
| cit | 平均客户端等待时延 | 微秒 | |
| rtt_max | 最大 TCP 建连时延 | 微秒 | |
| tls_rtt_max | 最大 TLS 建连时延 | 微秒 | |
| rtt_client_max | 最大 TCP 建连客户端时延 | 微秒 | |
| rtt_server_max | 最大 TCP 建连服务端时延 | 微秒 | |
| srt_max | 最大 TCP/ICMP 系统时延 | 微秒 | |
| art_max | 最大数据时延 | 微秒 | |
| cit_max | 最大客户端等待时延 | 微秒 | |
| srt_sum | 累计 TCP/ICMP 系统时延 | 微秒 | 采集周期内全部TCP/ICMP 系统时延的加和 |
| srt_count | TCP/ICMP 系统时延次数 | 次 | 采集周期内TCP/ICMP 系统时延的次数 |
| art_sum | 累计数据时延 | 微秒 | 采集周期内全部数据时延的加和 |
| art_count | 数据时延次数 | 次 | 采集周期内数据时延的次数 |
| cit_sum | 累计客户端等待时延 | 微秒 | 采集周期内全部客户端等待时延的加和 |
| cit_count | 客户端等待时延次数 | 次 | 采集周期内客户端等待时延的次数 |
| duration | 流持续时间 | 微秒 | 表示流的首包到尾包(注意不是 end_time)的时长。 |
| l7_request | 应用请求 | 个 | |
| l7_response | 应用响应 | 个 | |
| rrt | 平均应用时延 | 微秒 | |
| rrt_sum | 累计应用时延 | 微秒 | 采集周期内全部应用时延的加和 |
| rrt_count | 应用时延次数 | 次 | 采集周期内应用时延的次数 |
| rrt_max | 最大应用时延 | 微秒 | |
| l7_error | 应用异常 | 个 | |
| l7_client_error | 应用客户端异常 | 个 | 根据具体应用协议的响应码判断异常,不同协议的定义见 l7_flow_log 中 response_status 字段的说明 |
| l7_server_error | 应用服务端异常 | 个 | 根据具体应用协议的响应码判断异常,不同协议的定义见 l7_flow_log 中 response_status 字段的说明 |
| l7_server_timeout | 应用服务端超时 | 个 | 应用超时的统计次数(默认配置下:TCP 类应用在 1800s 内未采集到响应,UDP 类应用在 150s 内未采集到响应) |
| l7_error_ratio | 应用异常比例 | % | |
| l7_client_error_ratio | 应用客户端异常比例 | % | |
| l7_server_error_ratio | 应用服务端异常比例 | % | |
| l7_parse_failed | 应用协议解析失败 | 包 | 累计应用协议解析失败次数,最大值 MAX_U32 |
| row | 行数 | 个 |
generate from csv file: l4_flow_log.ch
#3. Grafana Dashboard
基于上述数据可通过 Grafana 构建丰富的 Dashboard。我们在 Grafana 中预置了一个 Network - Flow Log Dashboard,效果图如下:

Network Flow Log
你也可以访问 DeepFlow Online Demo (opens new window) 查看效果。