日志投递功能是云原生网关结合阿里云日志服务SLS提供的服务。开启日志投递后,您可以通过分析云原生网关的访问日志了解客户端用户行为、客户端用户的地域分布,以便排查问题。本文介绍如何为MSE云原生网关开启日志投递。
前提条件
MSE产品不收取日志费用,但日志服务SLS将根据您的使用量收费。关于SLS的计费方式,请参见按量付费。
开启日志投递
- 登录MSE网关管理控制台,并在顶部菜单栏选择地域。 
- 在左侧导航栏,选择云原生网关 > 网关列表,单击目标网关名称。 
- 在左侧导航栏,单击参数配置。在可观测性参数区域,单击日志投递右侧的编辑按钮  ,在日志投递配置对话框中打开启用日志投递(开启后网关的访问日志会投递到日志服务)开关。 ,在日志投递配置对话框中打开启用日志投递(开启后网关的访问日志会投递到日志服务)开关。 - 开启日志投递以后,在可观测性参数区域,单击Project右侧的链接,系统会自动跳转到该网关对应投递的日志库。更多内容,请参见查询与分析快速指引。 
日志投递字段说明
网关日志投递涉及到的字段说明如下。
| 字段名 | 类型 | 含义 | 
| __time__ | long | 日志产生的时间。 | 
| cluster_id | string | 购买的网关实例。 | 
| consumer | string | 请求消费者,开启消费者鉴权功能时有效。 | 
| custom_log | json | 用于存放用户自定义的日志字段,可配合自定义插件使用。 | 
| authority | string | 请求报文中的Host Header。 | 
| bytes_received | long | 请求的Body大小(不包含Header)。 | 
| bytes_sent | long | 响应的Body大小(不包含Header)。 | 
| downstream_local_address | string | 网关Pod地址。 | 
| downstream_remote_address | string | 连接到网关的Client端地址。 | 
| downstream_transport_failure_reason | string | Downstream传输失败原因。 | 
| duration | long | 请求的整体耗时。包含从网关收到来自下游的第一个字节开始,到发送出最后一个响应字节为止的时间段。单位毫秒。 | 
| method | string | HTTP方法。 | 
| path | string | HTTP请求中的Path。 | 
| protocol | string | HTTP的协议版本。 | 
| request_id | string | 网关会为每次请求产生一个ID,并放在Header的 | 
| requested_server_name | string | SSL连接时使用的Server Name。 | 
| request_duration | long | 从网关收到来自下游的第一个字节开始,到收到来自下游的最后一个字节为止的时间段。单位毫秒。 | 
| response_code | long | HTTP响应的状态码。 | 
| response_code_details | string | 提供与响应码相关的额外信息。例如via_upstream表示响应码是由后端服务返回的,route_not_found表示请求没有匹配的路由。 | 
| response_flags | string | 响应失败的原因。 | 
| response_tx_duration | long | 从网关收到来自上游的第一个字节开始,到给下游发送出最后一个字节为止的时间段。单位毫秒。 | 
| route_name | string | 路由名。 | 
| start_time | string | 请求开始时间。格式:UTC。 | 
| trace_id | string | Trace ID。 | 
| upstream_cluster | string | 上游集群。 | 
| upstream_host | string | 上游IP。 | 
| upstream_local_address | string | 本地连接上游的地址。 | 
| upstream_protocol | string | 请求后端服务时的协议。 | 
| upstream_service_time | long | 上游服务处理请求的耗时(毫秒),包括网关访问上游服务的网络耗时和上游服务自身处理耗时两部分。 | 
| upstream_transport_failure_reason | string | 上游链接失败的原因。 | 
| user_agent | string | HTTP Header中的UserAgent。 | 
| x_forwarded_for | string | HTTP Header中的 | 
| ext_authz_status_code | long | 自定义鉴权服务响应码。 | 
| ext_authz_duration | long | 自定义鉴权服务RT。 | 
请求失败原因说明
请求失败的原因主要通过日志中Response_Flag的值判断。以下是关于Response_Flag不同值的说明。
下游指客户端,上游指后端服务。
- UH:上游集群中,没有健康的上游主机。 
- UF:上游连接失败。 
- NR:给定请求未配置路由。 
- URX:请求被拒绝,因为达到了上游重试限制(HTTP)或最大连接尝试次数(TCP)。 
- NC:无法找到上游集群。 
- DT:请求或连接超过了 - max_connection_duration或- max_downstream_connection_duration。
- DC:下游连接终止。 
- LH:本地服务未通过健康检查请求。 
- UT:上游请求超时。 
- LR:连接本地重置。 
- UR:上游远程重置。 
- UC:上游连接终止。 
- DI:请求处理被延迟一段时间,该延迟时间由故障注入指定。 
- FI:请求被故障注入指定的响应码中止。 
- RL:请求在本地被HTTP速率限制过滤器限制,除了429响应码之外。 
- UAEX:请求被外部授权服务拒绝。 
- RLSE:请求被拒绝,因为速率限制服务出现错误。 
- IH:请求被拒绝,因为在严格检查的标头中设置了无效值。 
- SI:Stream流空闲超时。 
- DPE:下游请求存在HTTP协议错误。 
- UPE:上游响应存在HTTP协议错误。 
- UMSDR:上游请求达到了最大流程持续时间。 
- OM:超负荷管理器终止了请求。 
- DF:请求因DNS解析失败而终止。