访问日志的响应标记解读
UH(没有健康后端)
含义
UH(NoHealthyUpstream)表示上游服务没有健康的后端实例。
典型现象
目标服务的后端实例都不可用,如构造将目标服务的实例数设置为0。
典型日志
客户端日志。
应对建议
检查目标服务的负载配置,确认服务的实例均正常运行。
DC(下游连接终止)
含义
DC(DownstreamConnectionTermination)表示下游连接终止。
若服务客户端因为各种原因在收到应答前中断连接,则在访问日志中一般会记录本次请求的结果为DC,大部分时候应答体的大小是0。
典型现象
客户端在访问目标服务时,在得到应答前,在客户端断开连接。或者客户端因为设置了请求超时,从客户端断开了连接。
典型日志
客户端日志。
应对建议
一般无需特殊处理。大部分情况下因为服务端耗时较长导致客户端在一定时间后断开了连接。这时候一般考虑优化目标服务,快速返回应答。
UF(上游连接失败)
含义
UF (UpstreamConnectionFailure)表示上游连接失败。
典型场景
目标服务的服务端口不通。如客户端通过错误的端口访问目标服务时,会导致服务访问失败,客户端代理的Outbound日志会记录503UF。
目标服务的服务实例端口不通,会导致服务访问失败,同时服务端Inbound日志会记录503UF。
典型日志
服务端口错误的客户端出流量日志。
服务实例端口错误的服务端入流量日志。
应对建议
检查服务定义,确保服务端口和服务端口定义正确。客户端通过正确的端口访问目标服务。
URX(超过重试次数)
含义:
URX (UpstreamRetryLimitExceeded)表示超过了HTTP的请求重试阈值或者TCP的重连阈值的访问被拒绝。
典型场景
网格中对目标服务配置了重试次数N(或者没有配置Istio默认2次失败重试),在调用服务端失败次数超过了阈值,客户端的出流量日志中会记录URX。
典型日志
客户端出流量日志。
应对建议
提高服务的成功率,保证服务在有限重试后能正常的被访问。
UPE(上游协议错误)
含义:
UPE (UpstreamProtocolError)表示上游服务协议错误。
典型场景
在网格中定义的服务的协议和实际服务的协议不一致时,当服务访问时,客户端会得到502协议错误的响应。同时服务端的入流量日志会记录502 UPE。
典型日志
客户端出流量日志。
服务端入流量日志。
应对建议
在服务中正确的定义服务端口的应用协议。Istio中读取Service中端口名中的协议信息,或AppProtocol 来判定服务的应用协议,确保字段上协议配置正确。
DPE(下游协议错误)
含义:
DPE (DownstreamProtocolError) 表示下游协议错误。
典型场景
下游客户端通过一个错误的协议访问目标服务。
典型日志
客户端出流量日志。
服务端入流量日志。
应对建议
客户端使用正确的协议访问目标服务。
NC(没有上游集群)
含义:
NC(NoClusterFound) 表示没有上游集群,即在网格流量路由中定义的目标服务后端不存在。
典型场景
流量策略中定义的路由后端在网格中没有定义。如分流策略中流量发送给V2标识的服务子集,但是DestinationRule中并没有定义该版本标识的服务子集。
典型日志
客户端日志。
应对建议
检查VirtualService和DestinationRule中定义的后端一致,保证VirtualService中引用的服务子集在DestinationRule中正确定义。
NR(没有匹配路由)
含义:
NR(NoRouteFound)表示没有匹配的路由来处理请求的流量,一般伴随“404”状态码。
典型场景
实际的访问流量不匹配VirtualService中定义的路由匹配条件,因而没有找到匹配的路由处理流量。
典型日志
客户端出流量日志。
应对建议
客户端的流量满足路由中定义的流量特征,保证所有请求都有服务端定义的路由处理。
DI(延时故障注入)
含义:
DI(DelayInjected)表示请求中注入了一个延时故障。
典型场景
在VirtualService中配置了延时故障注入时,会发生服务请求延时,在访问日志中会记录DI的应答标记。
典型日志
客户端出流量日志。
服务端入流量日志。
应对建议
访问日志中记录了人为注入的故障,无需特殊处理。
FI(故障注入错误)
含义:
FI(FaultInjected) 表示故障注入错误。
典型场景
通过VirtualService给目标服务注入了一个特定状态码的故障。
典型日志
客户端出流量日志。
应对建议
访问日志中记录了人为注入的故障,无需特殊处理。
UT(上游请求超时)
含义:
UT(UpstreamRequestTimeout)表示上游请求超时,一般伴随返回“504”的HTTP状态码。
典型场景
VirtualService中给目标服务配置了超时时间,在配置的超时时间后,客户端代理自动超时,取消请求。
典型日志
客户端出流量日志。
应对建议
用户为了保证目标服务快速失败,配置了服务访问超时,超时会返回该应答标记,无需特殊处理。
RL(触发服务限流)
含义:
RL (RateLimited)表示触发服务限流。一般会伴随返回“429”的HTTP状态码。
典型场景
在网格中配置了本地限流或者全局限流策略,若在单位时间内请求数超过配置的阈值,则触发限流。
典型日志
限流策略作用在服务端入流量的场景:
客户端出流量日志。
服务端入流量日志。
限流策略作用在客户端出流量的场景:
应对建议
用户配置限流策略保护目标服务,无需特殊处理。