开启网关日志投递

日志投递功能是云原生API网关结合阿里云日志服务SLS提供的服务。开启日志投递后,您可以通过分析云原生API网关的访问日志了解客户端用户行为、客户端用户的地域分布,以便排查问题。本文介绍如何为云原生API网关开启日志投递。

前提条件

开启日志投递

说明

云原生API产品不收取日志费用,但日志服务SLS将根据您的使用量收费。关于SLS的计费方式,请参见按量付费

  1. 登录云原生API网关控制台

  2. 在左侧导航栏,选择实例,并在顶部菜单栏选择地域。

  3. 实例页面,单击目标实例ID/名称。

  4. 在左侧导航栏,单击参数配置

  5. 可观测性参数区域,单击日志投递右侧的1图标,在日志投递配置面板,打开启用日志投递(开启后网关的访问日志会投递到日志服务)

    image

    说明

    开启日志投递后,日志服务会为您创建一个默认的日志服务Project。您也可以选择已有的日志服务Project。

    开启日志投递以后,在可观测性参数区域,单击Project右侧的链接,系统会自动跳转到该网关对应投递的日志库。更多内容,请参见查询与分析快速指引

日志投递字段说明

网关日志投递涉及到的字段说明如下。

字段名

类型

含义

__time__

long

日志产生的时间。

cluster_id

string

购买的网关实例。

ai_log

json

针对LLM API/Agent API/MCP API设计的日志字段,字段格式为json。其他类型的API此字段为空。

  • api: ai api的名称。

  • cache_status: LLM API中开启内容缓存时该字段会反映请求是否命中缓存。

  • consumer: 开启消费者鉴权后,此字段会记录当前请求的消费者身份。

  • fallback_from: LLM API中开启fallback策略时,此字段记录请求从哪一条路由fallback过来。

  • input_token: LLM请求输入token数。

  • llm_first_token_duration: LLM请求首包RT。

  • llm_service_duration: LLM请求整体RT。

  • model: LLM请求的模型名称。

  • output_token: LLM请求输出token数。

  • response_type: LLM请求流式/非流式。

  • safechack_status: LLM请求内容安全检测状态。

  • token_ratelimit_status: LLM请求是否被限流拦截。

authority

string

请求报文中的Host Header。

bytes_received

long

请求的Body大小(不包含Header)。

bytes_sent

long

响应的Body大小(不包含Header)。

downstream_local_address

string

网关Pod地址。

downstream_remote_address

string

连接到网关的Client端地址。

duration

long

请求的整体耗时。包含从网关收到来自下游的第一个字节开始,到发送出最后一个响应字节为止的时间段。单位毫秒。

method

string

HTTP方法。

path

string

HTTP请求中的Path。

protocol

string

HTTP的协议版本。

request_duration

long

从网关收到来自下游的第一个字节开始,到收到来自下游的最后一个字节为止的时间段。单位毫秒。

request_id

string

网关会为每次请求产生一个ID,并放在Headerx-request-id中,后端可以根据这个字段记录并进行排查。

requested_server_name

string

SSL连接时使用的Server Name。

response_code_details

string

提供与响应码相关的额外信息。例如via_upstream表示响应码是由后端服务返回的,route_not_found表示请求没有匹配的路由。

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_service_time

long

上游服务处理请求的耗时(毫秒),包括网关访问上游服务的网络耗时和上游服务自身处理耗时两部分。

upstream_transport_failure_reason

string

上游链接失败的原因。

user_agent

string

HTTP Header中的UserAgent。

x_forwarded_for

string

HTTP Header中的x-forwarded-for,通常用来表示HTTP请求端真实IP。

请求失败原因说明

请求失败的原因主要通过日志中Response_Flag的值判断。以下是关于Response_Flag不同值的说明。

说明

下游指客户端,上游指后端服务。

  • UH:上游集群中,没有健康的上游主机。

  • UF:上游连接失败。

  • NR:给定请求未配置路由。

  • URX:请求被拒绝,因为达到了上游重试限制(HTTP)或最大连接尝试次数(TCP)。

  • NC:无法找到上游集群。

  • DT:请求或连接超过了max_connection_durationmax_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:超负荷管理器终止了请求。