目录

故障日志关键字段说明

本文档详细介绍了Remote Communication Kit RCP模块故障日志中的关键字段,对每个字段的数据类型和含义进行了详细说明。

故障日志示例

当通过RCP发起的网络请求发生异常时,异常信息中会包含extendInfo字段,其中记录了排查故障所需的关键日志信息。为了进一步提升故障排查能力,未来可能会在日志中继续扩展字段。以下是一个异常信息的示例:

{"code":1007900035,"data":"SSL connect error","extendInfo":{"httpPhase":"011000","dnsDur":"0.31","tcpDur":"43.57","tlsDur":"0.00","sndDur":"0.00","rcvDur":"0.00","totDur":"0.0","redDur":"0.00","osErr":"2","sptIP6":"1",
"proxyType":"none","uptProxyMs":"0","peer":"0.0.**.**","lastOsIn":"0:0:0.0","lastOsOut":"0:0:0.0","sock":"100","sslErr":"error:0A000410:SSL routines::sslv3 alert handshake failure","minTlsVersion":"TLS1.3","maxTlsVersion":"TLS1.3"}}

下面详细介绍可能记录的信息字段。

基础信息字段

[h2]NetworkError

数据类型: 字符串。

字段含义: 网络错误描述。显示可能存在的错误描述信息。

[h2]httpPhase

数据类型: 整数。

字段含义: HTTP阶段状态码,用于标识请求执行的进度。httpPhase是6位由1或者0组成的数字,当前将HTTP执行过程拆分为dns(DNS解析开始)、tcp(TCP握手开始,DNS结束)、tls(TLS握手开始,TCP结束)、snd(请求发送开始,TLS结束)、rcv(响应头接收开始,snd结束)、bdy(响应体接收开始,rcv结束)共6个阶段,每个阶段开始执行时将对应位置值为1。

下表列举了几种httpPhase可能的取值及其含义。

dns tcp tls snd rcv bdy httpPhase值 含义
1 1 1 1 1 1 111111 HTTP请求进行到接收响应体阶段
1 1 1 1 1 0 111110 HTTP请求进行到接收响应头阶段
1 1 1 1 0 0 111100 HTTP请求进行到发送请求阶段
1 1 1 0 0 0 111000 HTTP请求进行到TLS阶段
1 1 0 0 0 0 110000 HTTP请求进行到TCP阶段
1 0 0 0 0 0 100000 HTTP请求进行到DNS阶段

当DNS响应来自缓存而非查询时,dns位为0。下表列举了几种可能的情况。

dns tcp tls snd rcv bdy httpPhase值 含义
0 1 1 1 1 1 011111 (DNS来自缓存)HTTP请求进行到接收响应体阶段
0 1 1 1 1 0 011110 (DNS来自缓存)HTTP请求进行到接收响应头阶段
0 1 1 1 0 0 011100 (DNS来自缓存)HTTP请求进行到发送请求阶段
0 1 1 0 0 0 011000 (DNS来自缓存)HTTP请求进行到TLS阶段
0 1 0 0 0 0 010000 (DNS来自缓存)HTTP请求进行到TCP阶段

启用连接复用后,tcp与tls标志位为0。下表列举了几种可能的情况。

dns tcp tls snd rcv bdy httpPhase值 含义
0 0 0 1 1 1 000111 (连接复用)HTTP请求进行到接收响应体阶段
0 0 0 1 1 0 000110 (连接复用)HTTP请求进行到接收响应头阶段
0 0 0 1 0 0 000100 (连接复用)HTTP请求进行到发送请求阶段
1 0 0 1 1 1 100111 (连接复用)HTTP请求进行到接收响应体阶段
1 0 0 1 1 0 100110 (连接复用)HTTP请求进行到接收响应头阶段
1 0 0 1 0 0 100100 (连接复用)HTTP请求进行到发送请求阶段

耗时字段

[h2]dnsDur

数据类型: 浮点数。

字段含义: DNS解析耗时,单位:ms。指从请求发起至DNS解析完成所经历的时间。

[h2]tcpDur

数据类型: 浮点数。

字段含义: TCP连接耗时,单位:ms。指从DNS解析完成至TCP连接建立所经历的时间。

[h2]tlsDur

数据类型: 浮点数。

字段含义: TLS握手耗时,单位:ms。指从TCP连接建立至TLS握手完成所经历的时间。

[h2]sndDur

数据类型: 浮点数。

字段含义: 发送请求耗时,单位:ms。指从所有连接握手阶段完成至开始发送HTTP请求所经历的时间。

[h2]rcvDur

数据类型: 浮点数。

字段含义: 接收响应耗时,单位:ms。指从开始发送HTTP请求至开始接收响应头所经历的时间。

[h2]totDur

数据类型: 浮点数。

字段含义: 请求总耗时,单位:ms。指从请求发起至完全接收响应所经历的全部时间。

[h2]redDur

数据类型: 浮点数。

字段含义: 重定向耗时,单位:ms。指处理重定向响应所经历的时间。

系统错误字段

[h2]osErr

数据类型: 整数。

字段含义: 操作系统错误码。可以参考内核错误码。

网络配置字段

[h2]sptIP6

数据类型: 整数。

字段含义: 是否支持IPv6。0表示不支持,1表示支持。

[h2]proxyType

数据类型: 字符串。

字段含义: 代理类型。

[h2]uptProxyMs

数据类型: 整数。

字段含义: 代理握手耗时,单位:ms。值为0时,表示未使用代理。

[h2]proxyCode

数据类型: 整数。

字段含义: 代理状态码。值为0时,表示无错误。

[h2]proxyErr

数据类型: 整数。

字段含义: 代理错误码。值为0时,表示无错误。

DNS相关字段

[h2]tryDns

数据类型: 字符串列表。

字段含义: 尝试连接的DNS服务器。值为逗号分隔的IP地址列表,例如:8.8.*.*,8.8.*.*。

[h2]connDns

数据类型: 字符串列表。

字段含义: 连接的DNS服务器。该值为一个有效的IP地址。

[h2]recvDns

数据类型: 字符串列表。

字段含义: 接收响应的DNS服务器。该值为一个有效的IP地址。

[h2]dnsStatus

数据类型: 整数。

字段含义: DNS状态码。0表示成功,1表示有IP地址,请求正常,2表示只拿到了CNAME,3表示非法报文。

[h2]dnsFromNetsys

数据类型: 整数。

字段含义: DNS是否来自网络系统缓存。0表示来自DNS服务器解析,1表示来自网络系统缓存。

[h2]dnsSockE

数据类型: 整数。

字段含义: DNS socket错误码。值为0时,表示无错误。

[h2]dnsCloseE

数据类型: 整数。

字段含义: DNS关闭错误码。值为0时,表示无错误。

[h2]dnsConnE

数据类型: 整数。

字段含义: DNS连接错误码。值为0时,表示无错误。

[h2]dnsRecvE

数据类型: 整数。

字段含义: DNS接收错误码。值为0时,表示无错误。

[h2]dnsSendE

数据类型: 整数。

字段含义: DNS发送错误码。值为0时,表示无错误。

[h2]dnsRuleValidate

数据类型: 字符串列表。

字段含义: DNS规则验证。

连接信息字段

[h2]srcAddr

数据类型: 字符串。

字段含义: 源地址。IPv4或IPv6格式。

[h2]srcPort

数据类型: 整数。

字段含义: 源端口。

[h2]dstAddr

数据类型: 字符串。

字段含义: 目标地址。IPv4或IPv6格式。

[h2]dstPort

数据类型: 整数。

字段含义: 目标端口。

[h2]peer

数据类型: 字符串。

字段含义: 对端地址。

[h2]sock

数据类型: 整数。

字段含义: Socket句柄。正常值为正整数。

[h2]reused

数据类型: 整数。

字段含义: 连接是否复用。0表示新建连接;1表示复用连接。

[h2]sockType

数据类型: 字符串。

字段含义: Socket类型。

[h2]tryConnV4

数据类型: 整数。

字段含义: 尝试IPv4连接次数。

[h2]tryConnV6

数据类型: 整数。

字段含义: 尝试IPv6连接次数。

[h2]tryConnIp

数据类型: 字符串列表。

字段含义: 尝试连接的IP地址。多个IP以逗号分隔。

[h2]tryConnPort

数据类型: 字符串列表。

字段含义: 尝试连接的端口。多个端口以逗号分隔。

[h2]tcpConnE

数据类型: 整数。

字段含义: TCP连接错误码。值为0时,表示无错误。

传输统计字段

[h2]dlSpeed

数据类型: 长整型。

字段含义: 下载速度,单位:Byte/s。

[h2]ulSpeed

数据类型: 长整型。

字段含义: 上传速度,单位:Byte/s。

[h2]dlSz

数据类型: 长整型。

字段含义: 下载字节数。

[h2]ulSz

数据类型: 长整型。

字段含义: 上传字节数。

SSL/TLS字段

[h2]sslConnE

数据类型: 整数。

字段含义: SSL连接错误码。值为0时,表示无错误。

[h2]sslErr

数据类型: 字符串。

字段含义: SSL错误描述。为空表示无错误,否则显示具体错误信息。

[h2]lstSendE

数据类型: 整数。

字段含义: 最后一次发送错误码。

[h2]lastRecvE

数据类型: 整数。

字段含义: 最后一次接收错误码。

[h2]lastSslRecvE

数据类型: 字符串。

字段含义: 最后一次SSL接收错误。为空表示无错误,否则显示具体错误信息。

[h2]lastSslRendE

数据类型: 字符串。

字段含义: 最后一次SSL握手错误。为空表示无错误,否则显示具体错误信息。

[h2]minTlsVersion

数据类型: 字符串。

字段含义: 最小TLS版本。

[h2]maxTlsVersion

数据类型: 字符串。

字段含义: 最大TLS版本。

[h2]tstGlbUsr

数据类型: 整数。

字段含义: 是否信任全局用户证书。0表示不信任,1表示信任。

[h2]tstCurUsr

数据类型: 整数。

字段含义: 是否信任当前用户证书。0表示不信任,1表示信任。

[h2]selfCaPath

数据类型: 整数。

字段含义: 是否使用自定义CA证书路径。0表示未使用,1表示已使用。

[h2]selfCaFile

数据类型: 整数。

字段含义: 是否使用自定义CA证书文件。0表示未使用,1表示已使用。

[h2]selfCaBlob

数据类型: 整数。

字段含义: 是否使用自定义CA二进制数据。0表示未使用,1表示已使用。

[h2]caFun

数据类型: 字符串。

字段含义: 是否使用自定义验证函数。true表示使用,false表示未使用。

[h2]issuers

数据类型: 字符串列表。

字段含义: 证书颁发者列表,逗号分隔。

[h2]lastSslRecvSz

数据类型: 长整型。

字段含义: 最后一次SSL接收字节数。

[h2]lastSslSendSz

数据类型: 长整型。

字段含义: 最后一次SSL发送字节数。

[h2]totalSslRecvSz

数据类型: 长整型。

字段含义: 总SSL接收字节数。

[h2]totalSslSendSz

数据类型: 长整型。

字段含义: 总SSL发送字节数。

超时配置字段

[h2]cfgConnectMs

数据类型: 整数。

字段含义: 配置的连接超时时间,单位:ms。

[h2]cfgTransferMs

数据类型: 整数。

字段含义: 配置的传输超时时间,单位:ms。

HTTP内容字段

[h2]reqLen

数据类型: 整数。

字段含义: 请求长度。

[h2]respLen

数据类型: 整数。

字段含义: 响应长度。

弱网检测字段

[h2]lastOsIn

数据类型: 字符串。

字段含义: 最后一次操作系统接收时间。

[h2]lastOsOut

数据类型: 字符串。

字段含义: 最后一次操作系统发送时间。

[h2]headerOutSz

数据类型: 整数。

字段含义: 发送的header大小,单位:Byte。

[h2]headerInSz

数据类型: 整数。

字段含义: 接收的header大小,单位:Byte。

VPN和应用字段

[h2]vpnEnabled

数据类型: 整数。

字段含义: VPN是否启用。0表示未启用,1表示启用。

[h2]appNetId

数据类型: 整数。

字段含义: 应用网络ID。