MQ
#1. Kafka
通过解析 Kafka (opens new window) 协议,将 Kafka Request / Response 的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
类别 | 名称 | 中文 | Request Header | Response Header | 描述 |
---|---|---|---|---|---|
Req. | version | 协议版本 | request_api_version | request_api_key | -- |
request_type | 请求类型 | request_api_key | request_api_version | 支持的 API Key 列表 (opens new window) | |
request_domain | 请求域名 | topic | topic | 仅 Produce、Fetch 消息,取第一个对应字段 | |
request_resource | 请求资源 | $topic-$partition:$offset | $topic-$partition:$offset | 仅 Produce、Fetch 消息,取第一个对应字段 [1][2] | |
request_id | 请求 ID | correlation_id | correlation_id | 参考:使用 CorrelationID 关联 Req-Resp 通信场景 (opens new window) | |
endpoint | 端点 | $topic-$partition | $topic-$partition | 仅 Produce、Fetch 消息,取第一个对应字段 | |
Resp. | response_code | 响应码 | -- | error_code | 仅 Produce、Fetch、JoinGroup、LeaveGroup、SyncGroup 消息 |
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. | attribute.group_id | -- | group_id | group_id | 仅 JoinGroup、LeaveGroup、SyncGroup 消息 |
- [1] 表中所有 partition 对应 Kafka 协议中的 partition id 或 partition index。
- [2] Produce 的 offset 取自 Response 中的 base_offset,Fetch 的 offset 取自 Request 中的 fetch_offset。
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 | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
#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. 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 | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
#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 | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
#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 | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
#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 | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |
#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 | 服务端异常比例 | -- | -- | 服务端异常 / 响应 |