开启MCP服务日志投递

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

开启日志投递

说明
  • AI产品不收取日志费用,但日志服务SLS将根据您的使用量收费。关于SLS的计费方式,请参见按使用功能计费

  • 日志投递的开启状态是网关实例级别的。

  1. AI 网关控制台的实例页面,选择您实例所在的地域。

  2. 进入目标实例页面,选择左侧导航栏的MCP管理

  3. 单击目标服务卡片,然后单击日志页签。

  4. MCP服务提供了网关请求日志MCP服务日志两种查询分析日志的功能。

    MCP服务日志仅支持带有HTTPMCP标签可以查询分析日志。
    网关请求日志MCP服务日志如果都使用默认开启日志投递服务,日志服务创建的Project是同一个,只是Logstore不同。
    • 网关请求日志:支持两种方式开启网关日志投递动能。

      • 方式一:在创建实例时,选择使用日志服务(SLS)。

      • 方式二:单击立即开启日志投递功能,在开启日志投递功能对话框,您可以选择使用默认日志服务Project,日志服务会为您创建一个默认的日志服务Project。您也可以选择使用已有的日志服务Project,然后单击确定

    • MCP服务日志:单击立即开启日志投递功能,在开启日志投递功能对话框,您可以选择使用默认日志服务Project,日志服务会为您创建一个默认的日志服务Project。您也可以选择使用已有的日志服务Project,然后单击确定

  5. 单击网关请求日志常用查询条件MCP服务日志常用查询条件后的查看按钮,展开常用查询语句。您可复制并粘贴查询语句到日志服务的搜索栏查询相关内容,关于更多查询与分析的信息,请参见查询与分析快速指引

    日志字段说明

    字段名

    类型

    含义

    __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:超负荷管理器终止了请求。