flow_metrics/

directory
v0.0.0-...-497add5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 11, 2024 License: Apache-2.0

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),记录为未知单播
  • 其它情况:不统计

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL