应用调用日志

创建时间:2024-06-01 最近修改时间:2024-06-01

无需向应用中插入任何代码,DeepFlow 自动生成所有服务的应用请求日志。 数据库表名:flow_log.l7_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 自定义 Label。
k8s.annotation K8s Annotation
k8s.env K8s Env
attribute Attribute OpenTelemetry Span 属性,以及应用协议特有属性。
cloud.tag Cloud Tag
os.app OS APP
biz_service.group 服务组
ip IP 地址
is_ipv4 IPv4 标志
is_internet Internet IP 标志 Internet IP 无法关联到实例或子网 CIDR 的 IP。
protocol 网络协议
tunnel_type 隧道类型
client_port 客户端口
server_port 服务端口
tcp_seq TCP Seq 号
req_tcp_seq 请求 TCP Seq 号
resp_tcp_seq 响应 TCP Seq 号
l7_protocol 应用协议
l7_protocol_str 应用协议 字符串形式。
is_tls TLS
is_async 异步
is_reversed 反向
version 协议版本
type 日志类型
request_type 请求类型
request_domain 请求域名
request_resource 请求资源
request_id 请求 ID
response_status 响应状态
response_code 响应码
response_exception 响应异常
response_result 响应结果
events 事件
app_service 应用服务
app_instance 应用实例
endpoint 端点
process_id 进程 ID
process_kname 系统进程
trace_id TraceID
span_id SpanID
parent_span_id ParentSpanID
span_kind Span 类型 取自 OpenTelemetry。
x_request_id X-Request-ID
x_request_id_0 请求 X-Request-ID
x_request_id_1 响应 X-Request-ID
http_proxy_client HTTP 代理客户端 代理转换之前的真实客户端 IP。
syscall_trace_id Syscall TraceID
syscall_trace_id_request 请求 Syscall TraceID
syscall_trace_id_response 响应 Syscall TraceID
syscall_thread Syscall 线程
syscall_thread_0 请求 Syscall 线程
syscall_thread_1 响应 Syscall 线程
syscall_coroutine Syscall 协程
syscall_coroutine_0 请求 Syscall 协程
syscall_coroutine_1 响应 Syscall 协程
syscall_cap_seq Syscall 序号
syscall_cap_seq_0 请求 Syscall 序号
syscall_cap_seq_1 响应 Syscall 序号
flow_id 流日志 ID
start_time 开始时间 单位: 微秒。表示当前请求开始的时间。
end_time 结束时间 单位: 微秒。表示当前响应开始的时间,但对 OTel 是响应结束时间。
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 采集网卡类型 表示流量采集位置的类型,包括 OTel(应用 Span)、eBPF(Socket Data)、本地网卡(云内流量)、云网关网卡(云网关流量)、分光镜像(传统 IDC 流量)等。
tap_side 路径统计位置 已废弃,请使用 observation_point。
observation_point 观测点 采集位置在流量路径中所处的逻辑位置,例如客户端应用、客户端进程、客户端网卡、客户端容器节点、服务端容器节点、服务端网卡、服务端进程、服务端应用等。
biz_type 业务类型
biz_code 业务识别码 用于识别业务类型(例如手机银行转账、缴费)。
biz_scenario 业务场景 用于细分业务场景(如本人转本人、本地跨行)。

generate from csv file: l7_flow_log.ch

#2. 指标

Metrics 列表:吞吐、时延、异常,详细字段描述如下。

Field DisplayName Unit Description
request 请求
response 响应
session_length 会话长度 字节 请求长度 + 响应长度
request_length 请求长度 字节
response_length 响应长度 字节
sql_affected_rows SQL 影响行数
captured_request_byte 采集的请求字节数 字节 对于 Packet 信号源,表示 AF_PACKET 采集到的包长,且不包括四层头;对于 eBPF 信号源,表示一次系统调用的字节数,注意在开启 TCP 流重组时表示多次系统调用的字节数之和。
captured_response_byte 采集的响应字节数 字节 对于 Packet 信号源,表示 AF_PACKET 采集到的包长,且不包括四层头;对于 eBPF 信号源,表示一次系统调用的字节数,注意在开启 TCP 流重组时表示多次系统调用的字节数之和。
direction_score 方向得分 算法推理应用层连接方向(客户端、服务端角色)的准确性得分值,得分越高连接方向的准确性越高,得分最高 255
log_count 日志总量
response_ratio 响应比例 % 响应 / 请求
success_ratio 正常比例 % 1 - 异常 / 响应
error 异常 客户端异常 + 服务端异常
client_error 客户端异常 根据具体应用协议的响应码判断异常,不同协议的定义见 l7_flow_logresponse_status 字段的说明
server_error 服务端异常 根据具体应用协议的响应码判断异常,不同协议的定义见 l7_flow_logresponse_status 字段的说明
error_ratio 异常比例 % 异常 / 响应
client_error_ratio 客户端异常比例 % 客户端异常 / 响应
server_error_ratio 服务端异常比例 % 服务端异常 / 响应
response_duration 响应时延 us 响应与请求的时间差
row 行数

generate from csv file: l7_flow_log.ch

#3. Grafana Dashboard

基于上述数据可通过 Grafana 构建丰富的 Dashboard。我们在 Grafana 中预置了一个 Application - Request Log Dashboard,效果图如下:

Application Request Log

Application Request Log

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