README
¶
FlowMetrics
FlowMetrics是用于接收trident包头统计数据的daemon
名字来源于"zero"的重组,念作rose,即蔷薇
1. 存储的所有数据
db rp measurement tag
--------------------------------------------------------------------------------------------------------------------
vtap_flow rp_1m,rp_1s main _id,_tid,az_id,direction,host_id,ip,ip_version,l3_device_id,l3_device_type,l3_epc_id,pod_cluster_id,pod_group_id,pod_id,pod_node_id,pod_ns_id,protocol,region_id,subnet_id,capture_network_type_id,agent_id
vtap_flow_port rp_1m,rp_1s main _id,_tid,az_id,direction,host_id,ip,ip_version,l3_device_id,l3_device_type,l3_epc_id,pod_cluster_id,pod_group_id,pod_id,pod_node_id,pod_ns_id,protocol,region_id,server_port,subnet_id,capture_network_type_id,agent_id
vtap_flow_edge rp_1m,rp_1s main _id,_tid,az_id_0,az_id_1,host_id_0,host_id_1,ip_0,ip_1,ip_version,l3_device_id_0,l3_device_id_1,l3_device_type_0,l3_device_type_1,l3_epc_id_0,l3_epc_id_1,pod_cluster_id_0,pod_cluster_id_1,pod_group_id_0,pod_group_id_1,pod_id_0,pod_id_1,pod_node_id_0,pod_node_id_1,pod_ns_id_0,pod_ns_id_1,protocol,region_id_0,region_id_1,subnet_id_0,subnet_id_1,capture_nic,observation_point,capture_network_type_id,agent_id
vtap_flow_edge_port rp_1m,rp_1s main _id,_tid,az_id_0,az_id_1,host_id_0,host_id_1,ip_0,ip_1,ip_version,l3_device_id_0,l3_device_id_1,l3_device_type_0,l3_device_type_1,l3_epc_id_0,l3_epc_id_1,pod_cluster_id_0,pod_cluster_id_1,pod_group_id_0,pod_group_id_1,pod_id_0,pod_id_1,pod_node_id_0,pod_node_id_1,pod_ns_id_0,pod_ns_id_1,protocol,region_id_0,region_id_1,server_port,subnet_id_0,subnet_id_1,capture_nic,observation_point,capture_network_type_id,agent_id
vtap_acl rp_1m main _id,_tid,acl_gid,tag_type,tag_value,agent_id
vtap_wan rp_1m main _id,_tid,az_id,direction,host_id,ip,ip_version,l3_device_id,l3_device_type,l3_epc_id,pod_cluster_id,pod_group_id,pod_id,pod_node_id,pod_ns_id,protocol,region_id,subnet_id,tag_type,tag_value,capture_network_type_id,agent_id
vtap_wan_port rp_1m main _id,_tid,az_id,direction,host_id,ip,ip_version,l3_device_id,l3_device_type,l3_epc_id,pod_cluster_id,pod_group_id,pod_id,pod_node_id,pod_ns_id,protocol,region_id,server_port,subnet_id,tag_type,tag_value,capture_network_type_id,agent_id
vtap_packet rp_1m,rp_1s main _id,_tid,az_id,direction,host_id,ip,ip_version,l3_device_id,l3_device_type,l3_epc_id,pod_cluster_id,pod_group_id,pod_id,pod_node_id,pod_ns_id,region_id,subnet_id,tag_type,tag_value,capture_network_type_id,agent_id
vtap_packet_edge rp_1m,rp_1s main _id,_tid,az_id_0,az_id_1,host_id_0,host_id_1,ip_0,ip_1,ip_version,l3_device_id_0,l3_device_id_1,l3_device_type_0,l3_device_type_1,l3_epc_id_0,l3_epc_id_1,pod_cluster_id_0,pod_cluster_id_1,pod_group_id_0,pod_group_id_1,pod_id_0,pod_id_1,pod_node_id_0,pod_node_id_1,pod_ns_id_0,pod_ns_id_1,region_id_0,region_id_1,subnet_id_0,subnet_id_1,tag_type,tag_value,observation_point,capture_network_type_id,agent_id
注意:所有双端(带edge的数据库)中tx、rx均是以客户端为视角的统计量
2. 统计数据Tag定义
所有的表中,tag均为以下字段的组合,位置相同的字段一定同时出现。
| 名字 | 位置 | 含义 | 类型 | 取值说明 |
|---|---|---|---|---|
| _id | N/A | 客户端写入的shard id | 非负整数 | u8 |
| _tid | N/A | Trient使用的thread id | 正整数 | u64正整数 |
| ip_version | 0/16 | IP地址的类型 | 正整数 | 4: IPv4 |
| 6: IPv6 | ||||
| ip | 0 | IP地址 | IP字符串 | 0.0.0.0或::表示Internet |
| group_id | 2 | mac/ip对应的资源组ID | 整数 | -2: Internet |
| -1: 其它 | ||||
| 0: 不可能存在 | ||||
| >=1: 资源组ID | ||||
| l3_epc_id | 4 | ip对应的EPC ID | 整数 | -2: Internet |
| -1: 其它 | ||||
| 0: 不可能存在 | ||||
| >=1: IP对应的EPC ID | ||||
| >=1: 由trisolaris确定含义,1表示VM | ||||
| l3_device_id | 6 | ip对应的资源ID | 非负整数 | 同l2_device_id |
| l3_device_type | 6 | ip对应的资源类型 | 非负整数 | 同l2_device_type |
| region | 8 | ip对应的云平台区域ID | 非负整数 | 0: 未找到 |
| host_id | 9 | ip对应的宿主机ID | 非负整数 | 0表示没找到 |
| ip_0 | 16 | 0端IP | IP字符串 | 0.0.0.0或::表示Internet |
| ip_1 | 16 | 1端IP | IP字符串 | 0.0.0.0或::表示Internet |
| group_id_0 | 18 | mac_0/ip_0对应的资源组ID | 整数 | 取值范围与group_id相同 |
| group_id_1 | 18 | mac_1/ip_1对应的资源组ID | 整数 | 取值范围与group_id相同 |
| l3_epc_id_0 | 20 | ip_0对应的EPC ID | 整数 | 取值范围与l3_epc_id相同 |
| l3_epc_id_1 | 20 | ip_1对应的EPC ID | 整数 | 取值范围与l3_epc_id相同 |
| l3_device_id_0 | 22 | ip_0对应的资源ID | 非负整数 | 取值范围与l3_device_id相同 |
| l3_device_type_0 | 22 | ip_0对应的资源类型 | 非负整数 | 取值范围与l3_device_type相同 |
| l3_device_id_1 | 22 | ip_1对应的资源ID | 非负整数 | 取值范围与l3_device_id相同 |
| l3_device_type_1 | 22 | ip_1对应的资源类型 | 非负整数 | 取值范围与l3_device_type相同 |
| subnet_id_0 | 24 | ip_0对应的VL2 ID | 非负整数 | 0表示没找到 |
| subnet_id_1 | 24 | ip_1对应的VL2 ID | 非负整数 | 0表示没找到 |
| region_0 | 25 | ip_0对应的云平台区域ID | 非负整数 | 0表示没找到 |
| region_1 | 25 | ip_1对应的云平台区域ID | 非负整数 | 0表示没找到 |
| pod_node_id_0 | 26 | ip_0对应的容器节点ID | 非负整数 | 0表示没找到 |
| pod_node_id_1 | 26 | ip_1对应的容器节点ID | 非负整数 | 0表示没找到 |
| pod_group_id_0 | 26 | ip_0对应的容器组ID | 非负整数 | 0表示没找到 |
| pod_group_id_1 | 26 | ip_1对应的容器组ID | 非负整数 | 0表示没找到 |
| pod_ns_id_0 | 26 | ip_0对应的容器命名空间ID | 非负整数 | 0表示没找到 |
| pod_ns_id_1 | 26 | ip_1对应的容器命名空间ID | 非负整数 | 0表示没找到 |
| pod_id_0 | 26 | ip_1对应的容器ID | 非负整数 | 0表示没找到 |
| pod_id_1 | 26 | ip_1对应的容器ID | 非负整数 | 0表示没找到 |
| pod_cluster_id_0 | 26 | ip_1对应的容器集群ID | 非负整数 | 0表示没找到 |
| pod_cluster_id_1 | 26 | ip_1对应的容器集群ID | 非负整数 | 0表示没找到 |
| host_id_0 | 27 | ip_0对应的宿主机ID | 非负整数 | 0表示没找到 |
| host_id_1 | 27 | ip_1对应的宿主机ID | 非负整数 | 0表示没找到 |
| az_id_0 | 28 | ip_0对应的可用区ID | 非负整数 | 0表示没找到 |
| az_id_1 | 28 | ip_1对应的可用区ID | 非负整数 | 0表示没找到 |
| direction | 32 | 统计量对应的流方向 | 字符串 | c2s: ip/ip_0为客户端,ip_1为服务端 |
| s2c: ip/ip_0为服务端,ip_1为客户端 | ||||
| acl_gid | 33 | ACL组ID | 非负整数 | 0: 未找到 |
| protocol | 35 | 协议 | 非负整数 | 0: 非IP包 |
| 1-255: IP protocol number | ||||
| 注意当存在server_port时仅有TCP/UDP | ||||
| server_port | 36 | 服务端端口 | 非负整数 | 0-65535,0表示无L4协议号或协议号为0 |
| capture_network_type_id | 39 | 流量采集点 | 正整数 | 1-2,4-30: 接入网络流量 |
| 3: 虚拟网络流量 | ||||
| capture_nic | 39 | 采集网口标识 | 字符串 | 若capture_network_type_id为3: 虚拟网络流量源, 表示虚拟接口MAC地址低4字节 00000000~FFFFFFFF |
| 其他: 接入网络流量源,表示dispatcherID: 00000000~00000000F | ||||
| observation_point | 39 | 流量采集位置 | 字符串 | c: 客户端(0侧)采集 |
| s: 服务端(1侧)采集 | ||||
| subnet_id | 40 | ip对应的子网ID | 非负整数 | 0: 未找到 |
| acl_direction | 42 | ACL匹配的方向 | 字符串 | fwd: 正向匹配 |
| bwd: 反向匹配 | ||||
| agent_id | 44 | 采集器控制IP的ID | 非负整数 | 无特殊值 |
| pod_node_id | 45 | ip对应的容器节点ID | 非负整数 | 0表示没找到 |
| pod_group_id | 45 | ip对应的容器组ID | 非负整数 | 0表示没找到 |
| pod_ns_id | 45 | ip对应的容器命名空间ID | 非负整数 | 0表示没找到 |
| pod_id | 26 | ip对应的容器ID | 非负整数 | 0表示没找到 |
| pod_cluster_id | 26 | ip对应的容器集群ID | 非负整数 | 0表示没找到 |
| az_id | 46 | ip对应的可用区ID | 非负整数 | 0表示没找到 |
| CODE_INDEX | 48-53 | 不能使用 | N/A | 用于ingester标识Code的Index |
| tag_type | 62 | 额外的Tag类型 | 正整数 | 1: 省份(仅针对geo库) |
| 2: TCP Flag(仅针对packet库) | ||||
| 3: 播送类型(仅针对packet库) | ||||
| 4: 隧道分发点ID(仅针对360库) | ||||
| 未来会扩充TTL、包长范围等字段 | ||||
| tag_value | 63 | tag_type对应的具体值 | 正整数/字符串 | tag_type=1:字符串,大中华的省份 |
| tag_type=2:正整数,TCP包头的Flag字段 | ||||
| 255: 其它 | ||||
| 1-31中的如下部分: 统计的TCP Flag值 | ||||
| 2: SYN | ||||
| 2+16: SYN+ACK | ||||
| 16: ACK | ||||
| 8+16: PSH+ACK | ||||
| 1+16: FIN+ACK | ||||
| 4+16: RST+ACK | ||||
| tag_type=3:字符串,播送类性 | ||||
| broadcast: 广播 | ||||
| multicast: 组播 | ||||
| unicast: 未知单播 | ||||
| tag_type=4:非负整数,隧道分发点ID | ||||
| 为零时表示为PCAP策略 |
3. vtap_flow
存储1s、1m两种粒度的数据,统计量均以包的timestamp为准。
3.1. 流量
| 统计值 | 说明 | 时间粒度 | 单位 |
|---|---|---|---|
| packet_tx | 累计发送总包数 | 1m, 1s | 个 |
| packet_rx | 累计接收总包数 | 1m, 1s | 个 |
| packet | 累计总包数 | 1m, 1s | 个 |
| byte_tx | 累计发送总字节数 | 1m, 1s | 字节 |
| byte_rx | 累计接收总字节数 | 1m, 1s | 字节 |
| byte | 累计总字节数 | 1m, 1s | 字节 |
| l3_byte_tx | 累计发送网络层负载总字节数 | 1m, 1s | 字节 |
| l3_byte_rx | 累计接收网络层负载总字节数 | 1m, 1s | 字节 |
| l4_byte_tx | 累计发送四层负载总字节数 | 1m, 1s | 字节 |
| l4_byte_rx | 累计接收四层负载总字节数 | 1m, 1s | 字节 |
| flow | 累计连接数 | 1m, 1s | 个 |
| flow_load | 累计并发连接数 | 1m, 1s | 个 |
| new_flow | 累计新建连接数,以flow.start_time为准 | 1m, 1s | 个 |
| closed_flow | 累计关闭连接数,以flow.start_time为准 | 1m, 1s | 个 |
| http_request | 累计HTTP请求包数 | 1m, 1s | 个 |
| http_response | 累计HTTP响应包数 | 1m, 1s | 个 |
| dns_request | 累计DNS请求包数 | 1m, 1s | 个 |
| dns_response | 累计DNS响应包数 | 1m, 1s | 个 |
3.2. TCP时延
注意:使用时需要使用sum/count
注意:UDP请求响应时延均值复用art字段
| 统计值 | 说明 | 时间粒度 | 单位 |
|---|---|---|---|
| rtt | 表示建立连接RTT均值 | 1m | us |
| rtt_client | 表示客户端建立连接RTT均值 | 1m | us |
| rtt_server | 表示服务端建立连接RTT均值 | 1m | us |
| srt | 表示所有系统响应时间均值 | 1m | us |
| art | 表示所有应用响应时间均值 | 1m | us |
| http_rrt | 表示所有HTTP请求响应时延均值 | 1m | us |
| dns_rrt | 表示所有DNS请求响应时延均值 | 1m | us |
| rtt_max | 表示建立连接RTT最大值 | 1m | us |
| rtt_client_max | 表示客户端建立连接RTT最大值 | 1m | us |
| rtt_server_max | 表示服务端建立连接RTT最大值 | 1m | us |
| srt_max | 表示所有系统响应时间最大值 | 1m | us |
| art_max | 表示所有应用响应时间最大值 | 1m | us |
| http_rrt_max | 表示所有HTTP请求响应时延最大值 | 1m | us |
| dns_rrt_max | 表示所有DNS请求响应时延最大值 | 1m | us |
3.3. TCP包异常
| 统计值 | 说明 | 时间粒度 | 单位 |
|---|---|---|---|
| retrans_tx | 客户端累计重传次数 | 1m | 次 |
| retrans_rx | 服务端累计重传次数 | 1m | 次 |
| retrans | 累计重传次数 | 1m | 次 |
| zero_win_tx | 客户端累计零窗次数 | 1m | 次 |
| zero_win_rx | 服务端累计零窗次数 | 1m | 次 |
| zero_win | 累计零窗次数 | 1m | 次 |
3.4. TCP流异常
| 统计值 | 说明 | 时间粒度 | 单位 |
|---|---|---|---|
| client_rst_flow | close_type: client other reset | 1m, 1s | 个 |
| server_rst_flow | close_type: server other reset | 1m, 1s | 个 |
| server_syn_miss | close_type: server syn miss | 1m, 1s | 个 |
| client_ack_miss | close_type: client ack miss | 1m, 1s | 个 |
| client_half_close_flow | close_type: client half close | 1m, 1s | 个 |
| server_half_close_flow | close_type: server half close | 1m, 1s | 个 |
| client_source_port_reuse | close_type: client source port reuse | 1m, 1s | 个 |
| client_establish_other_rst | close_type: client other reset in establish stage | 1m, 1s | 个 |
| server_reset | close_type: server reset | 1m, 1s | 个 |
| server_queue_lack | close_type: server queue lack | 1m, 1s | 个 |
| server_establish_other_rst | close_type: server other reset in establish stage | 1m, 1s | 个 |
| tcp_timeout | TCP连接超时次数 | 1m, 1s | 个 |
| client_establish_fail | TCP客户端建连失败次数 | 1m, 1s | 个 |
| server_establish_fail | TCP服务端建连失败次数 | 1m, 1s | 个 |
| tcp_establish_fail | TCP建连失败次数 | 1m, 1s | 个 |
| http_client_error | HTTP客户端异常次数 | 1m, 1s | 个 |
| http_server_error | HTTP服务端异常次数 | 1m, 1s | 个 |
| http_timeout | HTTP请求超时次数 | 1m, 1s | 个 |
| http_error | HTTP异常次数 | 1m, 1s | 个 |
| dns_client_error | DNS客户端错误次数 | 1m, 1s | 个 |
| dns_server_error | DNS服务端错误次数 | 1m, 1s | 个 |
| dns_timeout | DNS请求超时次数 | 1m, 1s | 个 |
| dns_error | DNS异常次数 | 1m, 1s | 个 |
4. vtap_packet
存储1m粒度的数据,统计量均以包的timestamp为准。
4.1 流量
| 统计值 | 说明 | 时间粒度 | 单位 |
|---|---|---|---|
| packet_tx | 累计发送总包数 | 1m | 个 |
| packet_rx | 累计接收总包数 | 1m | 个 |
| packet | 累计总包数 | 1m | 个 |
| byte_tx | 累计发送总字节数 | 1m | 字节 |
| byte_rx | 累计接收总字节数 | 1m | 字节 |
| byte | 累计总字节数 | 1m | 字节 |
| l3_byte_tx | 累计发送网络层负载总字节数 | 1m, 1s | 字节 |
| l3_byte_rx | 累计接收网络层负载总字节数 | 1m, 1s | 字节 |
| l4_byte_tx | 累计发送四层负载总字节数 | 1m, 1s | 字节 |
| l4_byte_rx | 累计接收四层负载总字节数 | 1m, 1s | 字节 |
4.2 关于cast_type
若在kvm X上某个虚拟接口上抓到 smac -> dmac 的包,那么:
- dmac是广播
- 记录smac对应的虚拟机A及其Region/VPC/Subnet/IP(假设在kvm A上)发送的广播流量
- 查询虚拟机A的广播流量,可能会得到2倍+的结果,当所有KVM上有2+个相同VLAN的虚接口时
- 查询KVM A的广播流量,可能会得到2倍+的结果,当所有KVM上有2+个相同VLAN的虚接口时
- dmac是组播
- 记录smac对应的虚拟机A及其Region/VPC/Subnet/IP(假设在kvm A上)发送的组播流量
- 查询结果和广播一样
- dmac是未知单播
- 在虚拟网络(tap_mode=local)环境下,如果smac、dmac均不等于抓包口的MAC (is_l2_end=false),记录为未知单播
- 其它情况:不统计
Click to show internal directories.
Click to hide internal directories.