概述
应用服务网格支持采集控制面(control plane)、数据面(sidecar)日志以及应用服务网格网关日志,您可以在控制台日志中心查看日志。
基础概念
- 日志单元:日志单元是云日志服务中日志数据的采集、存储、查询、分析的基本单元。每个日志单元隶属于一个日志项目,每日志项目中可创建多个日志单元。
- 日志项目:日志项目是云日志服务的资源管理单位,您可使用日志项目管理不同的应用、产品或项目中的数据。每个日志项目下可创建多个日志单元,是您访问云日志服务资源的入口。
前提条件
- 天翼云账号已经开通了云日志服务,如果没有开通可以通过服务网格控制台->网格实例->自定义配置->创建云日志服务。
- 网格控制面和数据面集群已经安装了日志采集插件log-operator。可以通过ccse控制台->插件->插件市场安装。
启用服务网格日志采集
- 登录服务网格控制台,在左侧的导航栏中选择网格实例->自定义配置。
- 选择启用日志服务,可以选择已有的日志项目或者新建日志项目,支持为数据面、控制面和网关分别创建日志单元,您可以参考云日志服务-管理日志项目查看已有的项目。如果需要新建项目,应用服务网格控制台会自动为您创建对应名称的项目。
日志中心日志查询
您可以在日志服务控制台查询服务网格控制面和数据面的日志,更多详情可参考云日志服务-日志查询。
数据面日志输出格式
目前服务网格的数据面日志访问格式采用Envoy默认格式:
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%"
%RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION%
%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%"
"%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%"\n
以下是一个日志格式的例子:
[2016-04-15T20:17:00.310Z] "POST /api/v1/locations HTTP/2" 204 - 154 0 226 100 "10.0.35.28"
"nsq2http" "cc21d9b0-cf5c-432b-8c7e-98aeb7988cd2" "locations" "tcp://10.0.2.1:80"
以下是日志样式字段的说明:
参数 | 描述 |
---|---|
START_TIME | 请求开始时间。 |
REQ(:METHOD) | 请求方法。 |
REQ(X-ENVOY-ORIGINAL-PATH?:PATH) | 请求的原始路径,若无则使用标准路径。 |
PROTOCOL | 请求所使用的协议。 |
RESPONSE_CODE | 服务器对请求的响应状态码。 |
RESPONSE_FLAGS | 响应的标志,提供关于响应的特性信息。 |
BYTES_RECEIVED | 接收到的字节数,指示请求消息的大小。 |
BYTES_SENT | 发送出去的字节数,指示响应消息的大小。 |
DURATION | 请求处理的持续时间,包括接收到请求到发送响应的时间。 |
RESP(X-ENVOY-UPSTREAM-SERVICE-TIME) | 上游服务的响应时间,表示上游服务处理请求所花费的时间。 |
REQ(X-FORWARDED-FOR) | 请求的xff头部。 |
REQ(USER-AGENT) | 请求的用户代理,标识发起请求的软件。 |
REQ(X-REQUEST-ID) | 请求的唯一标识符,用于跟踪请求的生命周期。 |
REQ(:AUTHORITY) | 请求的主机名,在HTTP/2中对应请求的authority字段。 |
RESPONSE_FLAGS说明:
完整名称 | 短名 | 说明 |
---|---|---|
NoHealthyUpstream | UH | 没有健康的上游服务,返回503状态码。 |
UpstreamConnectionFailure | UF | 连接上游失败,返回503状态码。 |
UpstreamOverflow | UO | 上游服务被熔断,返回503状态码。 |
NoRouteFound | NR | 找不到路由或者找不到过滤器链,返回404状态码。 |
UpstreamRetryLimitExceeded | URX | 超过上游重试次数。 |
NoClusterFound | NC | 找不到上游集群。 |
DurationTimeout | DT | 请求超时。 |
DownstreamConnectionTermination | DC | 下游连接中断。 |
FailedLocalHealthCheck | LH | 集群健康检查失败,返回503状态码。 |
UpstreamRequestTimeout | UT | 上游服务超时,返回504状态码。 |
LocalReset | LS | 连接被本地重置,返回503状态码。 |
UpstreamRemoteReset | UR | 连接被上游重置,返回503状态码。 |
UpstreamConnectionTermination | UC | 上游连接中断,返回503状态码。 |
DelayInjected | DI | 请求被注入了延迟。 |
FaultInjected | FI | 请求被注入了错误。 |
RateLimited | RL | 请求被限流,返回429错误码。 |
UnauthorizedExternalService | UAEX | 请求被外部授权服务拒绝。 |
RateLimitServiceError | RLSE | 由于限流服务报错导致请求被拒绝。 |
InvalidEnvoyRequestHeaders | IH | 请求头部异常,返回400错误码。 |
StreamIdleTimeout | SI | 请求空闲超时,返回408或者504错误。 |
DownstreamProtocolError | DPE | 下游请求HTTP协议错误。 |
UpstreamProtocolError | UPE | 上游返回的HTTP协议错误。 |
UpstreamMaxStreamDurationReached | UMSDR | 请求上游超时。 |
ResponseFromCacheFilter | RFCF | 请求通过envoy缓存插件支撑。 |
NoFilterConfigFound | NFCF | 由于没有在时间期限内收到filter配置导致请求被中断。 |
OverloadManagerTerminated | OM | 请求被过载管理器中断。 |
DnsResolutionFailed | DF | DNS解析失败。 |
DropOverload | DO | 请求被上游过载保护机制中断,返回503状态码。 |