本文档详细介绍了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时,表示无错误。
[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
数据类型: 长整型。
字段含义: 上传字节数。
[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。
[h2]reqLen
数据类型: 整数。
字段含义: 请求长度。
[h2]respLen
数据类型: 整数。
字段含义: 响应长度。
[h2]lastOsIn
数据类型: 字符串。
字段含义: 最后一次操作系统接收时间。
[h2]lastOsOut
数据类型: 字符串。
字段含义: 最后一次操作系统发送时间。
[h2]vpnEnabled
数据类型: 整数。
字段含义: VPN是否启用。0表示未启用,1表示启用。
[h2]appNetId
数据类型: 整数。
字段含义: 应用网络ID。