应用协议列表
# 1. 支持的应用协议
Value | DisplayName | Description |
---|---|---|
0 | N/A | |
20 | HTTP | |
21 | HTTP2 | |
40 | Dubbo | |
41 | gRPC | |
43 | SOFARPC | |
44 | FastCGI | |
45 | bRPC | |
60 | MySQL | |
61 | PostgreSQL | |
62 | Oracle | |
80 | Redis | |
81 | MongoDB | |
100 | Kafka | |
101 | MQTT | |
102 | AMQP | RabbitMQ |
103 | OpenWire | ActiveMQ |
104 | NATS | |
105 | Pulsar | |
106 | ZMTP | ZeroMQ |
120 | DNS | |
121 | TLS | |
127 | Custom |
generate from csv file: l7_protocol
# 2. 调用日志字段说明
调用日志(flow_log.l7_flow_log
)数据表存储按分钟粒度聚合的各种协议的请求日志,由 Tag 和 Metrics 两大类字段组成。
# 2.1 标签
Tag 字段:字段主要用于分组,过滤,详细字段描述如下。
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 | 服务 | |
resource_gl0_type | 类型-容器 POD 优先 | 已废弃,请使用 auto_instance_type。 |
resource_gl0 | 资源-容器 POD 优先 | 已废弃,请使用 auto_instance。 |
resource_gl1_type | 类型-工作负载优先 | 已废弃,请使用 auto_service_type。 |
resource_gl1 | 资源-工作负载优先 | 已废弃,请使用 auto_service。 |
resource_gl2_type | 类型-服务优先 | 已废弃,请使用 auto_service_type。 |
resource_gl2 | 资源-服务优先 | 已废弃,请使用 auto_service。 |
auto_instance_type | 类型-容器 POD 优先 | auto_instance 实例对应的类型。 |
auto_instance | 资源-容器 POD 优先 | 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 | |
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 | |
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 | 业务类型 |
generate from csv file: l7_flow_log.ch
# 2.2 指标
Metrics 字段:字段主要用于计算,详细字段描述如下。
Field | DisplayName | Unit | Description |
---|---|---|---|
request | 请求 | 个 | |
response | 响应 | 个 | |
session_length | 会话长度 | 字节 | 请求长度 + 响应长度。 |
request_length | 请求长度 | 字节 | |
response_length | 响应长度 | 字节 | |
sql_affected_rows | SQL 影响行数 | 行 | |
direction_score | 方向得分 | 得分越高时客户端、服务端方向的准确性越高,得分为 255 时方向一定是正确的。 | |
log_count | 日志总量 | 个 | |
error | 异常 | 个 | 客户端异常 + 服务端异常。 |
client_error | 客户端异常 | 个 | |
server_error | 服务端异常 | 个 | |
error_ratio | 异常比例 | % | 异常 / 响应。 |
client_error_ratio | 客户端异常比例 | % | 客户端异常 / 响应。 |
server_error_ratio | 服务端异常比例 | % | 服务端异常 / 响应。 |
response_duration | 响应时延 | 微秒 | 日志类型为会话时,响应时延 = 结束时间 - 开始时间。 |
row | 行数 | 个 |
generate from csv file: l7_flow_log.ch
# 3. 各应用协议的字段映射
# 3.1 HTTP 协议簇
# 3.1.1 HTTP
通过解析 HTTP 协议,将 HTTP Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | 首行的 Version | -- | -- |
request_type | 请求类型 | 首行的 Method | -- | -- | |
request_domain | 请求域名 | Host | -- | -- | |
request_resource | 请求资源 | Path | -- | -- | |
request_id | 请求 ID | -- | -- | -- | |
endpoint | 端点 | Path | -- | Agent 的 http-endpoint-extraction 配置项可定义提取规则 | |
Resp. | response_code | 响应码 | -- | Status Code | -- |
response_status | 响应状态 | -- | Status Code | 正常: 1XX/2XX/3XX; 客户端异常: 4XX; 服务端异常: 5XX | |
response_exception | 响应异常 | -- | Status Code | Status Code 的描述,参考 List of HTTP status codes (opens new window) | |
response_result | 响应结果 | -- | -- | -- | |
Trace | trace_id | TraceID | traceparent, sw8 [1] | traceparent, sw8 | Agent 的 http_log_trace_id 配置项可定义提取的 Header 名称 |
span_id | SpanID | traceparent, sw8 [2] | traceparent, sw8 | Agent 的 http_log_span_id 配置项可定义提取的 Header 名称 | |
x_request_id | X-Request-ID | X-Request-ID | X-Request-ID | Agent 的 http_log_x_request_id 配置项可定义提取的 Header 名称 | |
http_proxy_client | HTTP 代理客户端 | X-Forwarded-For | -- | Agent 的 http_log_proxy_client 配置项可定义提取的 Header 名称 | |
Misc. | attribute.x | -- | x | x | 支持采集自定义头部字段 [3] |
- [1] TraceID 只截取以下 HTTP Header 的部分值,其他自定义 Header 读取全部值:
traceparent
Header 中的trace-id
部分sw8
/sw6
Header 中的trace ID
部分uber-trace-id
Header 中的{trace-id}
部分
- [2] SpanID 只截取以下 HTTP Header 的部分值,其他自定义 Header 读取全部值:
traceparent
Header 中的parent-id
部分sw8
/sw6
Header 中的segment ID-span ID
部分uber-trace-id
Header 中的{span-id}
部分
- [3] 可通过采集器配置中的 static_config.l7-protocol-advanced-features.extra-log-fields 定义需要额外采集的协议头字段,例如在配置中添加 User-Agent、Cookie 时调用日志中可查看到 attribute.user_agent 和 attribute.cookie 字段。
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | -- | Response 个数 |
session_length | 会话长度 | -- | -- | 请求长度 + 响应长度 |
request_length | 请求长度 | Content-Length | -- | -- |
request_length | 响应长度 | -- | Content-Length | -- |
log_count | 日志总量 | -- | -- | Request Log 行数 |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | Status Code | 参考 Tag 字段response_code 的说明 |
server_error | 服务端异常 | -- | Status Code | 参考 Tag 字段response_code 的说明 |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.1.2 HTTP2
通过解析 HTTP2 协议,将 HTTP2 Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | Version | -- | -- |
request_type | 请求类型 | Method | -- | -- | |
request_domain | 请求域名 | Host 或 Authority | -- | -- | |
request_resource | 请求资源 | Path | -- | -- | |
request_id | 请求 ID | Stream ID | Stream ID | -- | |
endpoint | 端点 | Path | -- | -- | |
Resp. | response_code | 响应码 | -- | Status Code | -- |
response_status | 响应状态 | -- | Status Code | 正常: 1XX/2XX/3XX; 客户端异常: 4XX; 服务端异常: 5XX | |
response_exception | 响应异常 | -- | Status Code | Status Code 的描述,参考 List of HTTP status codes (opens new window) | |
response_result | 响应结果 | -- | -- | -- | |
Trace | trace_id | TraceID | traceparent, sw8 | traceparent, sw8 | Agent 的 http_log_trace_id 配置项可定义提取的 Header 名称 |
span_id | SpanID | traceparent, sw8 | traceparent, sw8 | Agent 的 http_log_span_id 配置项可定义提取的 Header 名称 | |
x_request_id | X-Request-ID | X-Request-ID | X-Request-ID | Agent 的 http_log_x_request_id 配置项可定义提取的 Header 名称 | |
http_proxy_client | HTTP 代理客户端 | X-Forwarded-For | -- | Agent 的 http_log_proxy_client 配置项可定义提取的 Header 名称 | |
Misc. | attribute.x | -- | x | x | 支持采集自定义头部字段 [1] |
- [1] 可通过采集器配置中的 static_config.l7-protocol-advanced-features.extra-log-fields 定义需要额外采集的协议头字段,例如在配置中添加 User-Agent、Cookie 时调用日志中可查看到 attribute.user_agent 和 attribute.cookie 字段。
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | HTTP2 Request Header | HTTP2 Response Header | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | Response 个数 | |
session_length | 会话长度 | -- | -- | 请求长度 + 响应长度 |
request_length | 请求长度 | Content-Length | -- | -- |
request_length | 响应长度 | -- | Content-Length | -- |
log_count | 日志总量 | -- | -- | -- |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | Status Code | 参考 Tag 字段response_code 的说明 |
server_error | 服务端异常 | -- | Status Code | 参考 Tag 字段response_code 的说明 |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.2 RPC 协议簇
# 3.2.1 Dubbo
支持 Hessian2 和 Kryo 两种序列化算法, 通过解析 Dubbo (opens new window) 协议,将 Dubbo Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | version | -- | -- |
request_type | 请求类型 | Method-Name | -- | -- | |
request_domain | 请求域名 | -- | -- | -- | |
request_resource | 请求资源 | Service-Name | -- | -- | |
request_id | 请求 ID | Request-ID | Request-ID | -- | |
endpoint | 端点 | Service-Name/Method-Name | -- | -- | |
Resp. | response_code | 响应码 | -- | Status | -- |
response_status | 响应状态 | -- | Status | 正常: 20; 客户端异常: 30/40/90; 服务端异常: 31/50/60/70/80/100 | |
response_exception | 响应异常 | -- | Status | Status 的描述,参考 Dubbo 协议详解 (opens new window) | |
response_result | 响应结果 | -- | -- | -- | |
Trace | trace_id | TraceID | traceparent, sw8 | traceparent, sw8 | Agent 的 http_log_trace_id 配置项可定义提取的 Header 名称 |
span_id | SpanID | traceparent, sw8 | traceparent, sw8 | Agent 的 http_log_span_id 配置项可定义提取的 Header 名称 | |
x_request_id | X-Request-ID | -- | -- | -- | |
Misc. | attribute.rpc_service | -- | Service-Name | -- | -- |
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request | Response | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | -- | Response 个数 |
session_length | 会话长度 | -- | -- | 请求长度 + 响应长度 |
request_length | 请求长度 | Data length | -- | -- |
response_length | 响应长度 | -- | Data length | -- |
log_count | 日志总量 | -- | -- | -- |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | Status | 参考 Tag 字段response_code 的说明 |
server_error | 服务端异常 | -- | Status | 参考 Tag 字段response_code 的说明 |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.2.2 gRPC
通过解析 gRPC 协议,将 gRPC Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | Version | -- | -- |
request_type | 请求类型 | Method | -- | -- | |
request_domain | 请求域名 | Host 或 Authority | -- | -- | |
request_resource | 请求资源 | Service-Name | -- | -- | |
request_id | 请求 ID | Stream ID | Stream ID | -- | |
endpoint | 端点 | Path | -- | -- | |
Resp. | response_code | 响应码 | -- | Status Code | -- |
response_status | 响应状态 | -- | Status Code | 正常: 1XX/2XX/3XX; 客户端异常: 4XX; 服务端异常: 5XX | |
response_exception | 响应异常 | -- | Status Code | Status Code 的描述,参考 List of HTTP status codes (opens new window) | |
response_result | 响应结果 | -- | -- | -- | |
Trace | trace_id | TraceID | traceparent, sw8 | traceparent, sw8 | Agent 的 http_log_trace_id 配置项可定义提取的 Header 名称 |
span_id | SpanID | traceparent, sw8 | traceparent, sw8 | Agent 的 http_log_span_id 配置项可定义提取的 Header 名称 | |
x_request_id | X-Request-ID | X-Request-ID | X-Request-ID | Agent 的 http_log_x_request_id 配置项可定义提取的 Header 名称 | |
http_proxy_client | HTTP 代理客户端 | X-Forwarded-For | -- | Agent 的 http_log_proxy_client 配置项可定义提取的 Header 名称 | |
Misc. | attribute.rpc_service | -- | Service-Name | -- | -- |
Misc. | attribute.x | -- | x | x | 支持采集自定义头部字段 [1] |
- [1] 可通过采集器配置中的 static_config.l7-protocol-advanced-features.extra-log-fields 定义需要额外采集的协议头字段,例如在配置中添加 User-Agent、Cookie 时调用日志中可查看到 attribute.user_agent 和 attribute.cookie 字段。
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | HTTP2 Request Header | HTTP2 Response Header | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | Response 个数 | |
session_length | 会话长度 | -- | -- | 请求长度 + 响应长度 |
request_length | 请求长度 | Content-Length | -- | -- |
request_length | 响应长度 | -- | Content-Length | -- |
log_count | 日志总量 | -- | -- | -- |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | Status Code | 参考 Tag 字段response_code 的说明 |
server_error | 服务端异常 | -- | Status Code | 参考 Tag 字段response_code 的说明 |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.2.3 SOFARPC
通过解析 SOFARPC (opens new window) 协议,将 SOFARPC Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | -- | -- | -- |
request_type | 请求类型 | method_name 等 [1] | -- | -- | |
request_domain | 请求域名 | -- | -- | -- | |
request_resource | 请求资源 | target_service 等 [2] | -- | -- | |
request_id | 请求 ID | req_id | req_id | -- | |
endpoint | 端点 | $request_type/$request_resource | -- | -- | |
Resp. | response_code | 响应码 | -- | resp_code | -- |
response_status | 响应状态 | -- | resp_code | 正常: 0; 客户端异常: 8; 服务端异常: 其他 | |
response_exception | 响应异常 | -- | -- | -- | |
response_result | 响应结果 | -- | -- | -- | |
Trace | trace_id | TraceID | sofaTraceId 等 [3] | -- | -- |
span_id | SpanID | trace_context 等 [4] | -- | -- | |
x_request_id | X-Request-ID | -- | -- | -- | |
Misc. | -- | -- | -- | -- | -- |
- [1] Request header 中的 sofa_head_method_name,或者 com.alipay.sofa.rpc.core.request.SofaRequest 类的 methodName 字段。
- [2] Request header 中的 sofa_head_target_service,或者 com.alipay.sofa.rpc.core.request.SofaRequest 的 targetServiceUniqueName 字段。
- [3] Request header 中的 rpc_trace_context.sofaTraceId,或者 new_rpc_trace_context,或者 com.alipay.sofa.rpc.core.request.SofaRequest 类的 sofaTraceId 字段。
- [4] Request header 中的 new_rpc_trace_context 字段。
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request | Response | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | -- | Response 个数 |
session_length | 会话长度 | -- | -- | -- |
request_length | 请求长度 | -- | -- | -- |
request_length | 响应长度 | -- | -- | -- |
log_count | 日志总量 | -- | -- | -- |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | Status Code | 参考 Tag 字段response_code 的说明 |
server_error | 服务端异常 | -- | Status Code | 参考 Tag 字段response_code 的说明 |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.2.4 FastCGI
通过解析 FastCGI (opens new window) 协议,将 FastCGI Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | -- | -- | -- |
request_type | 请求类型 | PARAM 中的 REQUEST_METHOD | -- | -- | |
request_domain | 请求域名 | PARAM 中的 HTTP_HOST | -- | -- | |
request_resource | 请求资源 | PARAM 中的 REQUEST_URI | -- | -- | |
request_id | 请求 ID | Request ID | Request ID | -- | |
endpoint | 端点 | PARAM 中的 DOCUMENT_URI | -- | -- | |
Resp. | response_code | 响应码 | -- | Status Code | STDOUT 中的 Status,默认 200 |
response_status | 响应状态 | -- | Status Code | 正常: 1XX/2XX/3XX; 客户端异常: 4XX; 服务端异常: 5XX | |
response_exception | 响应异常 | -- | -- | -- | |
response_result | 响应结果 | -- | -- | -- | |
Trace | trace_id | TraceID | traceparent, sw8 | traceparent, sw8 | Agent 的 http_log_trace_id 配置项可定义提取的 Header 名称 |
span_id | SpanID | traceparent, sw8 | traceparent, sw8 | Agent 的 http_log_span_id 配置项可定义提取的 Header 名称 | |
x_request_id | X-Request-ID | X-Request-ID | X-Request-ID | Agent 的 http_log_x_request_id 配置项可定义提取的 Header 名称 | |
Misc. | -- | -- | -- | -- | -- |
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request | Response | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | -- | Response 个数 |
session_length | 会话长度 | -- | -- | -- |
request_length | 请求长度 | -- | -- | -- |
request_length | 响应长度 | -- | -- | -- |
log_count | 日志总量 | -- | -- | -- |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | Status Code | 参考 Tag 字段response_code 的说明 |
server_error | 服务端异常 | -- | Status Code | 参考 Tag 字段response_code 的说明 |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.2.5 bRPC
通过解析 bRPC (opens new window) 协议,将 bRPC Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | -- | -- | -- |
request_type | 请求类型 | request.method_name | -- | -- | |
request_domain | 请求域名 | -- | -- | -- | |
request_resource | 请求资源 | request.service_name | -- | -- | |
request_id | 请求 ID | correlation_id | -- | correlation_id 64 位整型的高 32 位 | |
endpoint | 端点 | service_name/method_name | -- | -- | |
Resp. | response_code | 响应码 | -- | Status Code | -- |
response_status | 响应状态 | -- | response.error_code | -- | |
response_exception | 响应异常 | -- | response.error_text | -- | |
response_result | 响应结果 | -- | -- | -- | |
Trace | trace_id | TraceID | -- | -- | -- |
span_id | SpanID | -- | -- | -- | |
x_request_id | X-Request-ID | request.log_id | -- | -- | |
Misc. | -- | -- | -- | -- | -- |
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request | Response | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | -- | Response 个数 |
session_length | 会话长度 | -- | -- | -- |
request_length | 请求长度 | -- | -- | -- |
response_length | 响应长度 | -- | -- | -- |
log_count | 日志总量 | -- | -- | -- |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | -- | 参考 Tag 字段response_code 的说明 |
server_error | 服务端异常 | -- | -- | 参考 Tag 字段response_code 的说明 |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.3 SQL 协议簇
# 3.3.1 MySQL
通过解析 MySQL (opens new window) 协议,将 MySQL Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | -- | -- | -- |
request_type | 请求类型 | Command | -- | 支持解析的命令详见 [1] | |
request_domain | 请求域名 | -- | -- | -- | |
request_resource | 请求资源 | Statement | -- | -- | |
request_id | 请求 ID | Statement ID | Statement ID | 从 COM_STMT_PREPARE 响应、COM_STMT_EXECUTE 请求中提取 | |
endpoint | 端点 | -- | -- | -- | |
Resp. | response_code | 响应码 | -- | Error Code | -- |
response_status | 响应状态 | -- | Error Code | 正常: 非 ERR 消息; 客户端异常/服务端异常详见 [2] | |
response_exception | 响应异常 | -- | Error Message | -- | |
response_result | 响应结果 | -- | -- | -- | |
Trace | trace_id | TraceID | SQL Comments | -- | 注释中的 TraceID 支持提取,提取及配置方法详见 [3] |
span_id | SpanID | SQL Comments | -- | 注释中的 TraceID 支持提取,提取及配置方法详见 [3] | |
x_request_id | X-Request-ID | -- | -- | -- | |
Misc. | -- | -- | -- | -- | -- |
- [1] 目前支持解析的命令:
COM_QUERY
、COM_QUIT
、COM_INIT_DB
、COM_FIELD_LIST
、COM_STMT_PREPARE
、COM_STMT_EXECUTE
、COM_STMT_FETCH
、COM_STMT_CLOSE
。 - [2] 客户端异常:Error Code=2000-2999,或客户端发送 1-999;服务端异常:Error Code=1000-1999/3000-4000,或服务端发送 1-999。
- [3] 当应用在 SQL 语句的注释中注入 TraceID(或复合的 TraceID + SpanID)时,DeepFlow 支持提取并用于跨线程的分布式追踪。DeepFlow 支持提取几乎任意位置的 SQL 注释(但必须出现在 AF_PACKET 获取到的首包中,或者 eBPF 获取到的第一个 Socket Data 中):虽然如此,我们强烈建议您在 SQL 语句头部添加注释,以降低 SQL 解析的性能开销。上面的示例中,
/* your_trace_key: 648840f6-7f92-468b-b298-d38f05c541d4 */ SELECT col FROM tbl SELECT /* your_trace_key: 648840f6-7f92-468b-b298-d38f05c541d4 */ col FROM tbl SELECT col FROM tbl # your_trace_key: 648840f6-7f92-468b-b298-d38f05c541d4 SELECT col FROM tbl -- your_trace_key: 648840f6-7f92-468b-b298-d38f05c541d4
1
2
3
4your_trace_key
取决于 Agent 配置项中http_log_trace_id
的值(但请注意如果使用 traceparent / sw8 / uber-trace-id,请遵循 OpenTelemetry (opens new window) / SkyWalking (opens new window) / Jaeger (opens new window) 的协议规范)。例如当http_log_trace_id = traceparent, sw8
时,DeepFlow 能够从00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
中提取符合 OpenTelemetry 规范的 TraceID 和 SpanID:/* traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01 */ SELECT col FROM tbl
1
注意,以下为单向消息,会被直接保存为 type=session 的调用日志:
- COM_STMT_CLOSE
- COM_QUIT
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request | Response | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | -- | Response 个数 |
sql_affected_rows | SQL影响行数 | -- | OK 报文的 Affected Rows | -- |
log_count | 日志总量 | -- | -- | -- |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | ERROR CODE | 参考 Tag 字段response_code 的说明 |
server_error | 服务端异常 | -- | ERROR CODE | 参考 Tag 字段response_code 的说明 |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.3.2 PostgreSQL
通过解析 PostgreSQL (opens new window) 协议,将 PostgreSQL Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | -- | -- | -- |
request_type | 请求类型 | char tag | -- | 仅 regular 消息 | |
request_domain | 请求域名 | -- | -- | -- | |
request_resource | 请求资源 | payload | -- | 仅 regular 消息 | |
request_id | 请求 ID | -- | -- | -- | |
endpoint | 端点 | -- | -- | -- | |
Resp. | response_code | 响应码 | -- | -- | -- |
response_status | 响应状态 | -- | Error Code | 正常: 非 error return 消息; 客户端异常/服务端异常详见 [1] | |
response_exception | 响应异常 | -- | Error Code | Error Code 的英文描述 (opens new window) | |
response_result | 响应结果 | -- | Error Code | 仅 error return 消息 | |
Trace | trace_id | TraceID | -- | -- | -- |
span_id | SpanID | -- | -- | -- | |
x_request_id | X-Request-ID | -- | -- | -- | |
Misc. | -- | -- | -- | -- | -- |
- [1] 错误码分类
- 客户端异常:Error Code=03/0A/0B/0F/0L/0P/20/22/23/26/2F/34/3D/3F/42
- 服务端异常:Error Code=08/09/0Z/21/24/25/27/28/2B/2D/38/39/3B/40/44/53/54/55/57/5/72/F0/HV/P0/XX
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request | Response | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | Response 个数 | |
sql_affected_rows | SQL影响行数 | -- | command complete 报文的 Affected Rows | -- |
log_count | 日志总量 | -- | -- | -- |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | Error Code | 参考 Tag 字段response_code 的说明 |
server_error | 服务端异常 | -- | Error Code | 参考 Tag 字段response_code 的说明 |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.4 NoSQL 协议簇
# 3.4.1 Redis
通过解析 Redis (opens new window) 协议,将 Redis Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | -- | -- | -- |
request_type | 请求类型 | Payload 首个单词 | -- | -- | |
request_domain | 请求域名 | -- | -- | -- | |
request_resource | 请求资源 | Payload 余下字符 | -- | -- | |
request_id | 请求 ID | -- | -- | -- | |
endpoint | 端点 | -- | -- | -- | |
Resp. | response_code | 响应码 | -- | -- | -- |
response_status | 响应状态 | -- | ERR 消息 | 正常: 无 ERR 消息; 服务端异常: ERR 消息 | |
response_exception | 响应异常 | -- | ERR 消息 Payload | -- | |
response_result | 响应结果 | -- | -- | -- | |
Trace | trace_id | TraceID | -- | -- | -- |
span_id | SpanID | -- | -- | -- | |
x_request_id | X-Request-ID | -- | -- | -- | |
Misc. | -- | -- | -- | -- | -- |
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request | Response | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | Response 个数 | |
sql_affected_rows | SQL影响行数 | -- | command complete 报文的 Affected Rows | -- |
log_count | 日志总量 | -- | -- | -- |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | -- | -- |
server_error | 服务端异常 | -- | ERR 报文 | 参考 Tag 字段response_code 的说明 |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.4.2 MongoDB
通过解析 MongoDB (opens new window) 协议,将 MongoDB Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | -- | -- | -- |
request_type | 请求类型 | OpCode | -- | -- | |
request_domain | 请求域名 | -- | -- | -- | |
request_resource | 请求资源 | BodyDocument | -- | -- | |
request_id | 请求 ID | -- | -- | -- | |
endpoint | 端点 | -- | -- | -- | |
Resp. | response_code | 响应码 | -- | BodyDocument 的 Code | -- |
response_status | 响应状态 | -- | BodyDocument 的 Code | 根据 Code 判断 | |
response_exception | 响应异常 | -- | BodyDocument 的 errmsg | -- | |
response_result | 响应结果 | -- | -- | -- | |
Trace | trace_id | TraceID | -- | -- | -- |
span_id | SpanID | -- | -- | -- | |
x_request_id | X-Request-ID | -- | -- | -- | |
Misc. | -- | -- | -- | -- | -- |
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request | Response | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | Response 个数 | |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | -- | -- |
server_error | 服务端异常 | -- | ERR 报文 | 参考 Tag 字段response_code 的说明 |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.5 消息队列协议簇
# 3.5.1 Kafka
通过解析 Kafka (opens new window) 协议,将 Kafka Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | -- | -- | -- |
request_type | 请求类型 | request_api_key | -- | -- | |
request_domain | 请求域名 | -- | -- | -- | |
request_resource | 请求资源 | topic_name | -- | 仅 Fetch 和 Produce 消息 | |
request_id | 请求 ID | correlation_id | correlation_id | -- | |
endpoint | 端点 | topic_name | -- | 仅 Fetch 和 Produce 消息 | |
Resp. | response_code | 响应码 | -- | error_code | 仅 Fetch 消息获取了响应码 |
response_status | 响应状态 | -- | error_code | 正常: error_code=0; 服务端异常: error_code!=0 | |
response_exception | 响应异常 | -- | error_code | error_code 的英文描述 (opens new window) | |
response_result | 响应结果 | -- | -- | -- | |
Trace | trace_id | TraceID | traceparent, sw8 | traceparent, sw8 | 从首个 Record 的对应 Header 字段中提取 |
span_id | SpanID | traceparent, sw8 | traceparent, sw8 | 从首个 Record 的对应 Header 字段中提取 | |
x_request_id | X-Request-ID | correlation_id | correlation_id | 参考:使用 CorrelationID 关联 Req-Resp 通信场景 (opens new window) | |
Misc. | -- | -- | -- | -- | -- |
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request | Response | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | Response 个数 | |
session_length | 会话长度 | -- | -- | 请求长度 + 响应长度 |
request_length | 请求长度 | message_size | -- | -- |
request_length | 响应长度 | -- | message_size | -- |
log_count | 日志总量 | -- | -- | -- |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | error_code | 参考 Tag 字段响应状态 的说明 |
server_error | 服务端异常 | -- | error_code | 参考 Tag 字段response_code 的说明 |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.5.2 MQTT
通过解析 MQTT (opens new window) 协议,将 MQTT Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | -- | -- | -- |
request_type | 请求类型 | PacketKind | -- | -- | |
request_domain | 请求域名 | client_id | -- | -- | |
request_resource | 请求资源 | topic | -- | -- | |
request_id | 请求 ID | -- | -- | -- | |
endpoint | 端点 | topic | -- | -- | |
Resp. | response_code | 响应码 | -- | code | 仅 connect_ack 消息获取了 code |
response_status | 响应状态 | -- | code | 正常: code=0; 客户端异常: code=1/2/4/5; 服务端异常: code=3 | |
response_exception | 响应异常 | -- | -- | -- | |
response_result | 响应结果 | -- | -- | -- | |
Trace | trace_id | TraceID | -- | -- | -- |
span_id | SpanID | -- | -- | -- | |
x_request_id | X-Request-ID | -- | -- | -- | |
Misc. | -- | -- | -- | -- | -- |
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request | Response | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | Response 个数 | |
log_count | 日志总量 | -- | -- | -- |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | connect_ack 报文返回的 code | 参考 Tag 字段响应状态 的说明 |
server_error | 服务端异常 | -- | connect_ack 报文返回的 code | 参考 Tag 字段response_code 的说明 |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.5.3 AMQP
通过解析 AMQP (opens new window) 协议(即 RabbitMQ (opens new window) 的主要协议) 协议,将 AMQP Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | version | -- | 0-9-1 |
request_type | 请求类型 | class_id.method_id | -- | 例如: Channel.OpenOK | |
request_domain | 请求域名 | vhost | -- | -- | |
request_resource | 请求资源 | exchange.routing_key 或 queue | -- | -- | |
request_id | 请求 ID | -- | -- | -- | |
endpoint | 端点 | exchange.routing_key 或 queue | -- | -- | |
Resp. | response_code | 响应码 | -- | method_id | OpenOK |
response_status | 响应状态 | -- | -- | 均视为正常 | |
response_exception | 响应异常 | -- | -- | -- | |
response_result | 响应结果 | -- | -- | -- | |
Trace | trace_id | TraceID | traceparent, sw8 | traceparent, sw8 | Content Header 中的自定义字段 |
span_id | SpanID | traceparent, sw8 | traceparent, sw8 | Content Header 中的自定义字段 | |
x_request_id | X-Request-ID | -- | -- | -- | |
Misc. | -- | -- | -- | -- | -- |
注意:受限于协议特征,目前仅支持识别在 agent 启动后建立连接的 AMQP 协议。
另外,以下为单向消息,会被直接保存为 type=session 的调用日志:
- Connection.Blocked (
s->c
) - Connection.Unblocked (
s->c
) - Basic.Return (
s->c
) - Basic.Ack (
both
) - Basic.Nack (
both
) - Basic.Reject (
c->s
) - Basic.RecoverAsync (
c->s
) - Content-Header (
both
) - Content-Body (
both
) - Protocol-Header (
c->s
) 而如下消息可能有、也可能没有 ACK,DeepFlow 统一忽略他们的响应(因为 ACK 中没有关键信息,由于不会稳定 ACK 也无需计算时延): - Basic.Publish (
c->s
) - Basic.Deliver (
s->c
)
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request | Response | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | -- | Response 个数 |
log_count | 日志总量 | -- | -- | -- |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | -- | -- |
server_error | 服务端异常 | -- | -- | -- |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.5.4 OpenWire
通过解析 OpenWire (opens new window)(即 ActiveMQ (opens new window) 的默认协议) 协议,将 OpenWire Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | version | -- | -- |
request_type | 请求类型 | OpenWireCommand | -- | -- | |
request_domain | 请求域名 | broker_url | -- | -- | |
request_resource | 请求资源 | topic | -- | -- | |
request_id | 请求 ID | command_id | correlation_id [1] | 请求与响应的对应关系详见 [2] | |
endpoint | 端点 | topic | -- | -- | |
Resp. | response_code | 响应码 | -- | -- | -- |
response_status | 响应状态 | -- | -- | 正常: 无 error message; 服务端异常: 有 error message | |
response_exception | 响应异常 | -- | error message | -- | |
response_result | 响应结果 | -- | -- | -- | |
Trace | trace_id | TraceID | traceparent, sw8 | traceparent, sw8 | -- |
span_id | SpanID | traceparent, sw8 | traceparent, sw8 | -- | |
x_request_id | X-Request-ID | correlation_id | correlation_id | 参考:ActiveMQ 中的 CorrelationID (opens new window) | |
Misc. | -- | -- | -- | -- | -- |
- [1] 注意与下方 x_request_id 对应的 correlation_id 字段区分,为两个不同的字段
- [2] 当 request 的 response_required 为 true 时,对应 response 的 correlation_id 字段与 request 的 command_id 应当一致
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request | Response | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | Response 个数 | |
log_count | 日志总量 | -- | -- | -- |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | -- | -- |
server_error | 服务端异常 | -- | -- | -- |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.5.5 NATS
通过解析 NATS (opens new window) 协议,将 NATS Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | version | -- | 使用 INFO 中的 version |
request_type | 请求类型 | NatsMessage | -- | 如 INFO, SUB, PUB, MSG | |
request_domain | 请求域名 | server_name | -- | 使用 INFO 中的 server_name | |
request_resource | 请求资源 | subject | -- | -- | |
request_id | 请求 ID | -- | -- | -- | |
endpoint | 端点 | subject | -- | 仅 subject 第一个 . 之前的部分 | |
Resp. | response_code | 响应码 | -- | -- | -- |
response_status | 响应状态 | -- | -- | 均视为正常 | |
response_exception | 响应异常 | -- | -- | -- | |
response_result | 响应结果 | -- | -- | -- | |
Trace | trace_id | TraceID | traceparent, sw8 | traceparent, sw8 | 在 HMSG, HPUB 中的 NATS headers 提取 |
span_id | SpanID | traceparent, sw8 | traceparent, sw8 | 在 HMSG, HPUB 中的 NATS headers 提取 | |
x_request_id | X-Request-ID | -- | -- | -- | |
Misc. | -- | -- | -- | -- | -- |
注意,除了 Info/Connect、Ping/Pong 这两组消息以外,其他消息均为单向消息,会被直接保存为 type=session 的调用日志:
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request | Response | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | Response 个数 | |
log_count | 日志总量 | -- | -- | -- |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | -- | -- |
server_error | 服务端异常 | -- | -- | -- |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.5.6 Pulsar
通过解析 Pulsar (opens new window) 协议,将 Pulsar Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | protocol_version | -- | 取 CommandConnect 和 CommandConnected 中的小者 |
request_type | 请求类型 | command | -- | -- | |
request_domain | 请求域名 | proxy_to_broker_url | -- | 在 CommandConnect 中 | |
request_resource | 请求资源 | topic | -- | 取协议 topic 最后一个 / 之后的内容 | |
request_id | 请求 ID | request_id | -- | 对于 Send/SendError/SendReceipt,由于命令无 request_id,另取 producer_id 和 sequence_id 的低 16 位拼接作为请求 ID | |
endpoint | 端点 | topic | -- | -- | |
Resp. | response_code | 响应码 | -- | code | -- |
response_status | 响应状态 | -- | status | -- | |
response_exception | 响应异常 | -- | exception | -- | |
response_result | 响应结果 | -- | -- | -- | |
Trace | trace_id | TraceID | traceparent, sw8 | traceparent, sw8 | 在 HMSG, HPUB 中的 NATS headers 提取 |
span_id | SpanID | traceparent, sw8 | traceparent, sw8 | 在 HMSG, HPUB 中的 NATS headers 提取 | |
x_request_id | X-Request-ID | x_request_id | x_request_id | -- | |
Misc. | -- | -- | -- | -- | -- |
注意,以下为单向消息,会被直接保存为 type=session 的调用日志:
- Ack
- Flow
- Message
- RedeliverUnacknowledgedMessages
- ReachedEndOfTopic
- ActiveConsumerChange
- AckResponse
- WatchTopicList
- WatchTopicListSuccess
- WatchTopicUpdate
- WatchTopicListClose
- TopicMigrated
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request | Response | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | Response 个数 | |
log_count | 日志总量 | -- | -- | -- |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | -- | -- |
server_error | 服务端异常 | -- | -- | -- |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.5.7 ZMTP
通过解析 ZMTP (opens new window) 协议(即 ZeroMQ 使用的消息传输协议),将 ZMTP Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | version | -- | -- |
request_type | 请求类型 | frame_type | -- | -- | |
request_domain | 请求域名 | subscription | -- | 仅当 socket 类型为 PUB/SUB/XPUB/XSUB | |
request_resource | 请求资源 | subscription | -- | 仅当 socket 类型为 PUB/SUB/XPUB/XSUB | |
Resp. | response_code | 响应码 | -- | -- | -- |
response_status | 响应状态 | -- | -- | 正常: 无 error message; 异常: 有 error message | |
response_exception | 响应异常 | -- | error message | -- | |
Misc. | -- | -- | -- | -- | -- |
- ZMTP 协议中,仅当一端 socket 为 REQ/REP 时,请求消息必须等待上一次请求得到响应后才能发起,请求与响应将聚合为一个会话
- 其余类型目前仅识别为单向消息,会被直接保存为 type=session 的调用日志
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request | Response | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | Response 个数 | |
log_count | 日志总量 | -- | -- | -- |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | -- | -- |
server_error | 服务端异常 | -- | -- | -- |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.6 网络协议簇
# 3.6.1 DNS
通过解析 DNS (opens new window) 协议,将 DNS Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | -- | -- | -- |
request_type | 请求类型 | QTYPE | -- | -- | |
request_domain | 请求域名 | QNAME | -- | 仅在查询 IPv4 或 IPv6 地址时有值 | |
request_resource | 请求资源 | QNAME | -- | -- | |
request_id | 请求 ID | ID | ID | -- | |
endpoint | 端点 | QNAME | -- | -- | |
Resp. | response_code | 响应码 | -- | RCODE | -- |
response_status | 响应状态 | -- | RCODE | 正常: RCODE=0x0; 客户端异常: RCODE=0x1/0x3; 服务端异常: 其他 | |
response_exception | 响应异常 | -- | RCODE | RCODE 的描述,参考 RFC 2929 Section 2.3 (opens new window) | |
response_result | 响应结果 | -- | RDATA | -- | |
Trace | trace_id | TraceID | -- | -- | -- |
span_id | SpanID | -- | -- | -- | |
x_request_id | X-Request-ID | -- | -- | -- | |
Misc. | -- | -- | -- | -- | -- |
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | Request | Response | 描述 |
---|---|---|---|---|
request | 请求 | -- | -- | Request 个数 |
response | 响应 | -- | -- | Response 个数 |
log_count | 日志总量 | -- | -- | Request Log 行数 |
error | 异常 | -- | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | -- | RCODE | 参考 Tag 字段response_code 的说明 |
server_error | 服务端异常 | -- | RCODE | 参考 Tag 字段response_code 的说明 |
error_ratio | 异常比例 | -- | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
# 3.7 OpenTelemetry 数据集成
通过解析 OpenTelemetry 协议,将 OpenTelemetry 协议的数据结构的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | OpenTelemetry 数据结构 | 描述 |
---|---|---|---|
start_time | 开始时间 | span.start_time_unix_nano | -- |
end_time | 结束时间 | span.end_time_unix_nano | -- |
protocol | 网络协议 | span.attribute.net.transport | 映射到对应的枚举值 |
attributes | Misc.butes | resource./span.attributes | -- |
ip | IP 地址 | span.attribute.app.host.ip/attribute.net.peer.ip | 详细说明见后面段落 |
l7_protocol | 应用协议 | span.attribute.http.scheme/db.system/rpc.system/messaging.system/messaging.protocol | 映射到对应的枚举值 |
l7_protocol_str | 应用协议 | span.attribute.http.scheme/db.system/rpc.system/messaging.system/messaging.protocol | -- |
version | 协议版本 | span.attribute.http.flavor | -- |
type | 日志类型 | 会话 | -- |
request_type | 请求类型 | span.attribute.http.method/db.operation/rpc.method | -- |
request_domain | 请求域名 | span.attribute.http.host/db.connection_string | -- |
request_resource | 请求资源 | attribute.http.target/db.statement/messaging.url/rpc.service | -- |
request_id | 请求 ID | ||
response_status | 响应状态 | 响应码=span.attribute.http.status_code 参考 HTTP 协议定义; 响应码=span.status.code,未知: STATUS_CODE_UNSET; 正常: STATUS_CODE_OK; 服务端异常: STATUS_CODE_ERROR | -- |
response_code | 响应码 | span.attribute.http.status_code/span.status.code | 优先使用 span.attribute.http.status_code |
response_exception | 响应异常 | 响应码=span.attribute.http.status_code 参考 HTTP 协议定义; 响应码=span.status.code,则对应 span.status.message | -- |
service_name | 服务名称 | resource./span.attribute.service.name | -- |
service_instance_id | 服务实例 | resource./span.attribute.service.instance.id | -- |
endpoint | 端点 | span.name | -- |
trace_id | TraceID | span.trace_id/attribute.sw8.trace_id | 优先使用 attribute.sw8.trace_id |
span_id | SpanID | span.span_id/attribute.sw8.segment_id-attribute.sw8.span_id | 优先使用 attribute.sw8.segment_id-attribute.sw8.span_id |
parent_span_id | ParentSpanID | span.parent_span_id/attribute.sw8.segment_id-attribute.sw8.parent_span_id | 优先使用attribute.sw8.segment_id-attribute.sw8.parent_span_id |
span_kind | Span 类型 | span.span_kind | -- |
observation_point | 观测点 | span.spankind.SPAN_KIND_CLIENT/SPAN_KIND_PRODUCER:客户端应用(c-app);span.spankind.SPAN_KIND_SERVER/SPAN_KIND_CONSUMER:服务端应用(s-app);span.spankind.SPAN_KIND_UNSPECIFIED/SPAN_KIND_INTERNAL:应用(app) | -- |
- observation_point = c-app
- span.attribute.app.host.ip 对应 ip_0; 其余都对应 ip_1
- 通过一个 k8s attributes processor 插件 (opens new window)获取当前应用 (otel-agent) 对应上一级(即 Span 的来源)的 IP 地址,例如:Span 为 POD 产生,则获取 POD 的 IP;Span 为部署在虚拟机上的进程产生,则获取虚拟机的 IP
- span.attribute.net.peer.ip 对应 ip_1; 其余都对应 ip_0
- span.attribute.app.host.ip 对应 ip_0; 其余都对应 ip_1
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | OpenTelemetry 数据结构 | 描述 |
---|---|---|---|
request | 请求 | Span 个数 | -- |
response | 响应 | Span 个数 | -- |
session_length | 会话长度 | 请求长度 + 响应长度 | |
request_length | 请求长度 | span.attribute.http.request_content_length | -- |
request_length | 响应长度 | span.attribute.http.response_content_length | -- |
sql_affected_rows | SQL影响行数 | span.attribute.db.cassandra.page_size | -- |
log_count | 日志总量 | Span 个数 | Request Log 行数 |
error | 异常 | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | span.attribute.http.status_code/span.status.code | 参考 Tag 字段response_code 的说明 |
server_error | 服务端异常 | span.attribute.http.status_code/span.status.code | 参考 Tag 字段response_code 的说明 |
error_ratio | 异常比例 | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | 服务端异常 / 响应 |
message.uncompressed_size | -- | span.attribute.message.uncompressed_size | -- |
messaging.message_payload_size_bytes | -- | span.attribute.messaging.message_payload_size_bytes | -- |
messaging.message_payload_compressed_size_bytes | -- | span.attribute.messaging.message_payload_compressed_size_bytes | -- |