指标参考
AISIX 以 Prometheus 文本格式公开运行指标。Prometheus 服务器或其他兼容采集器可抓取这些指标,用于仪表盘、告警和 PromQL 查询。
默认在专用监听器上启用 Prometheus 指标。默认启动配置如下:
observability:
metrics:
prometheus:
enabled: true
addr: 0.0.0.0:9090
path: /metrics
Prometheus 从此监听器抓取 GET /metrics。
指标端点按设计不需要认证。请确保该监听器仅对监控网络开放。
每次抓取端点时,AISIX 都会公开配置状态。其他指标系列会在 AISIX 首次记录相应活动时注册,因此流量指标可能不会在启动后立即出现。请通过代理发送请求,然后再次抓取,即可看到相应序列。
指标目录
搜索指标名称、描述、标签和值,或按指标系列和类型筛选目录。 展开条目即可查看详细信息。
- 指标
- 62
- 系列
- 10
指标类型
持续累加并在进程重启前只增不减的值,例如请求总数或 Token 总数。使用 rate() 计算其变化速率。
可增可减的当前值,例如活跃请求数或剩余配额。
按可配置分桶统计的观测值。计算百分位数前,可以聚合 _bucket、_sum 和 _count 序列。
由各网关实例计算分位数的观测值。摘要也公开 _sum 和 _count,但其分位数无法跨实例聚合。
请求指标
跟踪请求结果以及代理当前正在处理的工作。
详细请求标签
本族的每个计数器都是每次客户端请求采样一次,其 status 是调用方实际收到的状态码。第一个目标失败、随后由回退目标成功处理的请求,在这里只是一个 status="200" 样本;它所恢复的那次失败在本族中完全没有体现。统计上游尝试请使用部署指标,查看单次尝试请使用用量日志。
对于三个详细请求计数器,stream 记录客户端是否请求流式响应。is_fallback 记录请求是否由回退目标处理,并且不会出现在延迟指标中。
provider_key_name 和 user_name 是对应 ID 的可读名称。每个名称与其 ID 一一对应,因此不会增加新的序列维度。在控制平面提供名称前,user_name 为 unknown。
失败请求与成功请求携带相同的 provider、upstream_model 和 Provider Key 标签,因此仅凭本族指标即可计算按 Provider 或按 Provider Key 的失败率。这些上游标签记录请求最后选定的目标:在重试或回退场景下,即调用方最终收到其错误的那次尝试。只有当请求从未选定任何目标时它们才为 unknown,例如模型不存在、被输入护栏拦截、被预算拒绝,或请求体在派发前即被拒绝。
inbound_protocol 是由标准化端点推导出的有界协议类型集合。Anthropic 协议端点报告 anthropic;/mcp、/a2a、/v1/realtime 和 /passthrough_route 分别报告 mcp、a2a、realtime 和 passthrough;其余网关端点报告 openai。在途请求仪表使用相同的值。
upstream_protocol 是该协议对的另一半:AISIX 与实际处理该请求的上游通信时所使用的协议。它按照与请求转发相同的规则从所选目标的 Provider Key 解析得出,因此报告的是请求实际被转换成的传输格式——openai、anthropic、bedrock、vertex 或 azure-openai;当请求完全没有选中上游时报告 unknown。同时按两个标签分组即可区分原生流量与跨协议转换流量,参见区分跨协议转换流量。
请勿用 provider 代替 upstream_protocol。provider 是开放的厂商字符串,同一厂商可以通过不同的 adapter 接入,因此从厂商名到协议的 PromQL 映射需要手工维护,并且会对所有自定义厂商和 OpenAI 兼容厂商给出错误结果。
endpoint 始终是标准化的路由模板,而不是原始请求路径。带路径参数的路由会合并为一条序列,例如 /v1/batches/:id、/v1/videos/:id 和 /mcp/{server};/passthrough/ 下的路径使用 /passthrough_route,无法识别的路径报告为 other。
aisix_requests_total 。描述:兼容性序列中的代理请求结果,覆盖的端点范围最广。 。类型:counter 。标签数量:4 个标签
标签
provider, model, status, outcomeoutcome 的值
success, client_error, rate_limited, upstream_errorsuccess 表示 HTTP 200–399;client_error 表示除 429 外的 HTTP 400–499;rate_limited 表示 HTTP 429;其他所有状态均映射为 upstream_error。
行为
A2A 智能体调用使用 provider="a2a" 和 model="a2a"。
PromQL 示例
sum(rate(aisix_requests_total[5m])) by (outcome)aisix_llm_requests_total 。描述:模型推理请求的结果,包括成功和失败的请求。 。类型:counter 。标签数量:16 个标签
标签
endpoint, inbound_protocol, upstream_protocol, provider, model, upstream_model, provider_key_id, provider_key_name, api_key_id, team_id, user_id, user_name, stream, is_fallback, status, outcomeinbound_protocol 的值
openai, anthropic, realtimeupstream_protocol 的值
openai, anthropic, bedrock, vertex, azure-openai, unknown网关与上游通信所使用的协议,与 inbound_protocol 相互独立。unknown 表示该请求没有选中任何上游——在转发前被拒绝,或是不调用模型的路由。
stream 的值
false, trueis_fallback 的值
false, trueoutcome 的值
success, client_error, rate_limited, upstream_errorsuccess 表示 HTTP 200–399;client_error 表示除 429 外的 HTTP 400–499;rate_limited 表示 HTTP 429;其他所有状态均映射为 upstream_error。
行为
覆盖调用模型的端点:聊天补全、补全、消息、Token 计数、响应、向量嵌入、重排序、音频、图像生成、视频和 realtime 会话。未调用模型的请求只计入 aisix_proxy_requests_total,包括 MCP 工具调用、A2A Agent 调用、服务提供方透传,以及文件、批处理和微调管理路由。
在分发前被拒绝的请求(例如请求体过大)会计入其目标端点,因此端点成功率的分母包括这些失败。
aisix_proxy_requests_total 。描述:所有代理流量(包括模型推理和其他流量)的详细请求结果。 。类型:counter 。标签数量:16 个标签
标签
endpoint, inbound_protocol, upstream_protocol, provider, model, upstream_model, provider_key_id, provider_key_name, api_key_id, team_id, user_id, user_name, stream, is_fallback, status, outcomeinbound_protocol 的值
openai, anthropic, mcp, a2a, realtime, passthroughupstream_protocol 的值
openai, anthropic, bedrock, vertex, azure-openai, unknown网关与上游通信所使用的协议,与 inbound_protocol 相互独立。unknown 表示该请求没有选中任何上游——在转发前被拒绝,或是不调用模型的路由。
stream 的值
false, trueis_fallback 的值
false, trueoutcome 的值
success, client_error, rate_limited, upstream_errorsuccess 表示 HTTP 200–399;client_error 表示除 429 外的 HTTP 400–499;rate_limited 表示 HTTP 429;其他所有状态均映射为 upstream_error。
行为
每次客户端请求采样一次,携带调用方实际收到的状态码。请求内部的重试和故障转移不会增加样本,因此这个计数器回答的是「调用方发起了多少请求、各自如何结束」,而不是「网关向上游发起了多少次调用」。
aisix_proxy_failed_requests_total 。描述:结果不为 success 的代理请求子集。 。类型:counter 。标签数量:16 个标签
标签
endpoint, inbound_protocol, upstream_protocol, provider, model, upstream_model, provider_key_id, provider_key_name, api_key_id, team_id, user_id, user_name, stream, is_fallback, status, outcomeinbound_protocol 的值
openai, anthropic, mcp, a2a, realtime, passthroughupstream_protocol 的值
openai, anthropic, bedrock, vertex, azure-openai, unknown网关与上游通信所使用的协议,与 inbound_protocol 相互独立。unknown 表示该请求没有选中任何上游——在转发前被拒绝,或是不调用模型的路由。
stream 的值
false, trueis_fallback 的值
false, trueoutcome 的值
client_error, rate_limited, upstream_errorclient_error 表示除 429 外的 HTTP 400–499;rate_limited 表示 HTTP 429;其他所有状态均映射为 upstream_error。
aisix_proxy_in_flight_requests 。描述:代理当前正在处理的请求,按标准化端点和入站协议分组。 。类型:gauge 。标签数量:2 个标签
标签
endpoint, inbound_protocolinbound_protocol 的值
openai, anthropic, mcp, a2a, realtime, passthrough行为
MCP 请求使用 inbound_protocol="mcp";聚合网关使用 endpoint="/mcp",按服务器划分的端点使用 endpoint="/mcp/{server}"。A2A 调用使用 endpoint="/a2a" 和 inbound_protocol="a2a"。
标准化为 endpoint="/passthrough_route" 的请求使用 inbound_protocol="passthrough"。
PromQL 示例
sum(aisix_proxy_in_flight_requests) by (endpoint, inbound_protocol)aisix_proxy_client_cancelled_requests_total 。描述:调用方在网关发送响应头前断开连接的请求。 。类型:counter 。标签数量:4 个标签
标签
endpoint, model, provider_key_id, provider_key_name行为
这些请求不会产生正常结果,因此不会出现在其他请求计数器中。网关会在此处记录它们,并在访问日志中以状态码 499 记录。
该指标速率上升通常意味着调用方在等待首个 Token 时放弃。可按 model 拆分该序列,并与同一模型的 aisix_llm_time_to_first_token_seconds 对比。
model 是调用方请求的模型,Provider Key 标签标识请求当时正在等待的目标。若调用方在网关解析出它们之前就断开连接(例如仍在上传请求体时),这三个标签均为 unknown。
本指标刻意不包含其他请求计数器的调用方身份、状态码和结果标签。被取消的请求没有状态码,通常也没有团队或用户信息,这些维度在每个样本上都会是 unknown。
调用方在响应头发送后断开连接的情况不计入此处。该请求已经产生正常结果和用量事件。
PromQL 示例
sum(rate(aisix_proxy_client_cancelled_requests_total[5m])) by (endpoint, model)aisix_proxy_request_body_limit_rejections_total 。描述:因超过 proxy.request_body_limit_bytes 而被拒绝的请求,按网关结束读取被拒绝请求体的方式分组。 。类型:counter 。标签数量:3 个标签
标签
endpoint, inbound_protocol, outcomeinbound_protocol 的值
openai, anthropic, mcp, a2a, realtime, passthroughoutcome 的值
completed, cap_reached, timeout, client_read_errorcompleted 表示调用方发送了声明的完整请求体,因此可以读取 413 响应。cap_reached 和 timeout 表示网关先停止接收请求体;client_read_error 表示调用方在发送请求体时断开连接。这三种情况下,调用方通常会看到连接关闭,而不是收到响应。
行为
网关会读取并丢弃被拒绝请求的请求体,以便调用方在同一连接上接收 413。该读取操作有上限,outcome 用于报告其结束方式。
除 completed 外,任何结果的占比上升都表示调用方看到的是连接关闭,而不是 413 响应。匹配的 aisix::body_limit 日志条目会记录同一 request_id 的声明大小、配置上限和已读取字节数。
这里只统计声明的 Content-Length 超过上限的请求。采用分块传输且超过上限的请求会在读取时被拒绝,没有可比的 outcome,并以状态码 413 出现在 aisix_requests_total 中。
PromQL 示例
sum(rate(aisix_proxy_request_body_limit_rejections_total[5m])) by (endpoint, inbound_protocol, outcome)aisix_auth_decisions_total 。描述:API Key、JWT 和缺少凭证路径上的调用方身份认证决策。 。类型:counter 。标签数量:3 个标签
标签
method, result, reasonmethod 的值
api_key, jwt, noneresult 的值
allowed, denied行为
允许请求的 reason 为 none。被拒绝请求使用有限集合中的原因,例如 missing_credentials、unknown_key、key_expired、jwt_bad_signature、jwt_untrusted_issuer 或 jwt_identity_unmapped。
PromQL 示例
sum(rate(aisix_auth_decisions_total{result="denied"}[5m])) by (method, reason)延迟指标
检查单个网关的延迟,或跨网关实例聚合直方图分桶。
延迟聚合与标签
跨网关实例的服务级仪表盘和告警应使用直方图,因为可在调用 histogram_quantile() 前聚合其 _bucket、_sum 和 _count 序列。摘要用于检查单个网关实例预先计算的分位数。摘要分位数无法跨实例聚合,因此不要对其取平均值。
每个直方图都有自己的分桶边界,因为两种分布不同:端到端延迟从毫秒级开始,而首个 Token 时间不可能快于生成 Token 的上游。两组边界均可配置。env_id 标识连接到 AISIX Cloud 的 AISIX 网关所服务的环境;AISIX 网关未连接 AISIX Cloud 时其值为 unknown。status_class 为 2xx、3xx、4xx、5xx 或 other。为控制分桶序列数量,不包含按密钥和按用户的标签;这些维度请使用用量分析。
aisix_request_duration_seconds 。描述:兼容性序列中各代理端点的请求持续时间。HTTP 流式请求 记录到响应开始的时间;realtime 记录 WebSocket 会话关闭前的完整持续时间。 。类型:summary 。标签数量:3 个标签
标签
provider, model, status行为
摘要分位数由各 AISIX 实例计算,无法跨实例聚合。
aisix_llm_request_duration_seconds 。描述:模型推理端点的详细请求持续时间。HTTP 流式请求记录到响应开始的时间;realtime 记录 WebSocket 会话关闭前的完整持续时间。 。类型:summary 。标签数量:15 个标签
标签
endpoint, inbound_protocol, upstream_protocol, provider, model, upstream_model, provider_key_id, provider_key_name, api_key_id, team_id, user_id, user_name, stream, status, outcomeinbound_protocol 的值
openai, anthropic, realtimeupstream_protocol 的值
openai, anthropic, bedrock, vertex, azure-openai, unknown网关与上游通信所使用的协议,与 inbound_protocol 相互独立。unknown 表示该请求没有选中任何上游——在转发前被拒绝,或是不调用模型的路由。
stream 的值
false, trueoutcome 的值
success, client_error, rate_limited, upstream_errorsuccess 表示 HTTP 200–399;client_error 表示除 429 外的 HTTP 400–499;rate_limited 表示 HTTP 429;其他所有状态均映射为 upstream_error。
aisix_proxy_request_duration_seconds 。描述:所有代理流量的详细请求持续时间。HTTP 流式请求记录到响应开始的时间;realtime 记录 WebSocket 会话关闭前的完整持续时间。 。类型:summary 。标签数量:15 个标签
标签
endpoint, inbound_protocol, upstream_protocol, provider, model, upstream_model, provider_key_id, provider_key_name, api_key_id, team_id, user_id, user_name, stream, status, outcomeinbound_protocol 的值
openai, anthropic, mcp, a2a, realtime, passthroughupstream_protocol 的值
openai, anthropic, bedrock, vertex, azure-openai, unknown网关与上游通信所使用的协议,与 inbound_protocol 相互独立。unknown 表示该请求没有选中任何上游——在转发前被拒绝,或是不调用模型的路由。
stream 的值
false, trueoutcome 的值
success, client_error, rate_limited, upstream_errorsuccess 表示 HTTP 200–399;client_error 表示除 429 外的 HTTP 400–499;rate_limited 表示 HTTP 429;其他所有状态均映射为 upstream_error。
aisix_llm_time_to_first_token_seconds 。描述:流式聊天补全、消息和响应请求中,从上游尝试开始到首个流式帧的时间。 。类型:summary 。标签数量:12 个标签
标签
endpoint, inbound_protocol, upstream_protocol, provider, model, upstream_model, provider_key_id, provider_key_name, api_key_id, team_id, user_id, user_nameinbound_protocol 的值
openai, anthropicupstream_protocol 的值
openai, anthropic, bedrock, vertex, azure-openai, unknown网关与上游通信所使用的协议,与 inbound_protocol 相互独立。unknown 表示该请求没有选中任何上游——在转发前被拒绝,或是不调用模型的路由。
aisix_request_e2e_latency_seconds 。描述:客户端感知的聊天补全、消息和响应延迟,以及 A2A 的 Agent 调用延迟,包括完整的流式传输时长。 。类型:histogram 。标签数量:6 个标签
标签
env_id, endpoint, model, provider, status_class, streamingstatus_class 的值
2xx, 3xx, 4xx, 5xx, otherstreaming 的值
false, true行为
默认分桶范围为 5 毫秒到 600 秒,可通过 observability.metrics.buckets.request_e2e_latency 配置。较低边界用于记录缓存命中和分发前被拒绝的请求等快速响应。跨网关实例计算百分位数前,请先聚合 _bucket 序列。
每个纳入该指标的模型推理请求只观测一次。非流式请求和失败请求在处理程序返回时记录。流式请求在流结束时记录,包括客户端取消的情况;取消的模型流保留已提交的状态,并记录截至取消时的时长。
A2A 调用使用 endpoint="/a2a"。已下发的调用记录 Agent 调用的完整时长,包含完整的流。已进入 A2A 统计、但在下发之前被拒绝的调用记录为零时长,被放弃的 A2A 流在 4xx 状态类中记录为 499。在进入 A2A 统计之前就被拒绝的调用不会出现在该直方图中。
PromQL 示例
histogram_quantile(
0.90,
sum by (le) (rate(aisix_request_e2e_latency_seconds_bucket[5m]))
)aisix_request_ttft_seconds 。描述:流式聊天补全、消息和响应请求中,从上游尝试开始到首个流式帧的时间。 。类型:histogram 。标签数量:6 个标签
标签
env_id, endpoint, model, provider, status_class, streamingstatus_class 的值
2xx, 3xx, 4xx, 5xx, otherstreaming 的值
true行为
即使首帧不携带任何可见的生成输出——例如仅包含角色的起始帧或 Anthropic 的 message_start 事件——它也会停止计时。内容帧、推理帧和工具调用帧同样会停止计时。
默认分桶范围为 50 毫秒到 300 秒,可通过 observability.metrics.buckets.request_ttft 配置。当附近的模型服务器可以在 50 毫秒内生成输出时,请降低起始边界。只使用托管服务提供方的部署可以提高下限,移除始终为空的分桶。
PromQL 示例
histogram_quantile(
0.90,
sum by (le) (rate(aisix_request_ttft_seconds_bucket[5m]))
)用量与成本指标
测量 Token 用量、估算支出和标准化客户端用量。
哪些端点报告 Token
所有从上游接收 Token 数量的端点都会在此记录,包括聊天补全、补全、消息、响应、向量嵌入、重排序、音频转录路由、图像生成和 realtime 会话。
有两个模型推理端点不会报告 Token,因为其计费方式不同:/v1/audio/speech 按输入字符计费,/v1/videos 按视频计费。两者仍计为请求,因此只能在同一 endpoint 内用 Token 总数除以请求数,不能跨全部端点计算。
逐请求 Token 与支出序列(三个 aisix_llm_*_tokens_total 计数器和 aisix_llm_spend_micro_usd_total)使用与详细请求计数器相同的标签,因此查询可基于 endpoint、model、provider 和调用方身份标签关联 Token 用量与请求结果。另两个指标的标签不同:aisix_tokens_consumed_total 仅按 provider 和 model 标记;aisix_llm_tokens_by_client_total 仅按 client_type、model 和 token_type 标记。
另有三个计数器单独统计上游服务商用自身 Prompt Cache 提供的 Token。它们与上述 Token 计数器使用相同的标签,且仅在取值非零时才创建序列,因此不报告缓存明细的服务商不会产生任何序列。它们描述的是**上游服务商**的缓存,而不是 AISIX 响应缓存——后者是缓存指标中的 aisix_cache_requests_total,两者互不相关。
各服务商对缓存读取采用两种不同的计量口径,因此读取侧有两个计数器而非一个。aisix_llm_cached_input_tokens_total 对应 OpenAI 口径:缓存命中的 Token 本身就属于上报的 prompt Token,因此已经包含在 aisix_llm_input_tokens_total 之内。aisix_llm_cache_read_input_tokens_total 和 aisix_llm_cache_creation_input_tokens_total 对应 Anthropic 口径:它们与输入 Token 并列上报而非包含其中,因此位于 aisix_llm_input_tokens_total 之外、aisix_llm_total_tokens_total 之内。
把 两种口径分开正是跨协议查询能够成立的原因:请求实际消耗的输入为 aisix_llm_input_tokens_total + aisix_llm_cache_read_input_tokens_total + aisix_llm_cache_creation_input_tokens_total,其中由缓存提供的部分为 aisix_llm_cached_input_tokens_total + aisix_llm_cache_read_input_tokens_total。这两个表达式对任一服务商口径都成立。参见计算 Prompt Cache 命中率。
aisix_tokens_consumed_total 。描述:所有报告 Token 用量的端点的 Token 总数,属于覆盖范围最广的兼容性序列。 。类型:counter 。标签数量:2 个标签
标签
provider, modelaisix_llm_input_tokens_total 。描述:上游在所有报告 Token 用量的端点中报告的输入 Token 数。 。类型:counter 。标签数量:12 个标签
标签
endpoint, inbound_protocol, upstream_protocol, provider, model, upstream_model, provider_key_id, provider_key_name, api_key_id, team_id, user_id, user_nameinbound_protocol 的值
openai, anthropic, realtimeupstream_protocol 的值
openai, anthropic, bedrock, vertex, azure-openai, unknown网关与上游通信所使用的协议,与 inbound_protocol 相互独立。unknown 表示该请求没有选中任何上游——在转发前被拒绝,或是不调用模型的路由。
aisix_llm_output_tokens_total 。描述:上游在所有报告 Token 用量的端点中报告的输出 Token 数。 。类型:counter 。标签数量:12 个标签
标签
endpoint, inbound_protocol, upstream_protocol, provider, model, upstream_model, provider_key_id, provider_key_name, api_key_id, team_id, user_id, user_nameinbound_protocol 的值
openai, anthropic, realtimeupstream_protocol 的值
openai, anthropic, bedrock, vertex, azure-openai, unknown网关与上游通信所使用的协议,与 inbound_protocol 相互独立。unknown 表示该请求没有选中任何 上游——在转发前被拒绝,或是不调用模型的路由。
aisix_llm_total_tokens_total 。描述:上游在所有报告 Token 用量的端点中报告的 Token 总数。 。类型:counter 。标签数量:12 个标签
标签
endpoint, inbound_protocol, upstream_protocol, provider, model, upstream_model, provider_key_id, provider_key_name, api_key_id, team_id, user_id, user_nameinbound_protocol 的值
openai, anthropic, realtimeupstream_protocol 的值
openai, anthropic, bedrock, vertex, azure-openai, unknown网关与上游通信所使用的协议,与 inbound_protocol 相互独立。unknown 表示该请求没有选中任何上游——在转发前被拒绝,或是不调用模型的路由。
aisix_llm_cached_input_tokens_total 。描述:上游用其 Prompt Cache 提供、并计入 prompt Token 数量的输入 Token。 。类型:counter 。标签数量:12 个标签
标签
endpoint, inbound_protocol, upstream_protocol, provider, model, upstream_model, provider_key_id, provider_key_name, api_key_id, team_id, user_id, user_nameinbound_protocol 的值
openai, anthropic, realtimeupstream_protocol 的值
openai, anthropic, bedrock, vertex, azure-openai, unknown网关与上游通信所使用的协议,与 inbound_protocol 相互独立。unknown 表示该请求没有选中任何上游——在转发前被拒绝,或是不调用模型的路由。
行为
OpenAI 计量口径:OpenAI 及 OpenAI 兼容服务商的 prompt_tokens_details.cached_tokens、DeepSeek 的 prompt_cache_hit_tokens、Vertex AI 上 Gemini 的 cachedContentTokenCount。这些 Token 已计入 aisix_llm_input_tokens_total,两者相加会重复计算。
仅在上游报告该字段时记录。AISIX 不会依据响应耗时或提示词相似度推断缓存命中。
aisix_llm_cache_read_input_tokens_total 。描述:上游用其 Prompt Cache 提供、并与输入 Token 数量分开上报的输入 Token。 。类型:counter 。标签数量:12 个标签
标签
endpoint, inbound_protocol, upstream_protocol, provider, model, upstream_model, provider_key_id, provider_key_name, api_key_id, team_id, user_id, user_nameinbound_protocol 的值
openai, anthropic, realtimeupstream_protocol 的值
openai, anthropic, bedrock, vertex, azure-openai, unknown网关与上游通信所使用的协议,与 inbound_protocol 相互独立。unknown 表示该请求没有选中任何上游——在转发前被拒绝,或是不调用模型的路由。
行为
Anthropic 计量口径:Anthropic 的 cache_read_input_tokens 和 Amazon Bedrock 的 cacheReadInputTokens。这些 Token **不**包含在 aisix_llm_input_tokens_total 中,但包含在 aisix_llm_total_tokens_total 中。
aisix_llm_cache_creation_input_tokens_total 。描述:写入上游 Prompt Cache 的输入 Token。 。类型:counter 。标签数量:12 个标签
标签
endpoint, inbound_protocol, upstream_protocol, provider, model, upstream_model, provider_key_id, provider_key_name, api_key_id, team_id, user_id, user_nameinbound_protocol 的值
openai, anthropic, realtimeupstream_protocol 的值
openai, anthropic, bedrock, vertex, azure-openai, unknown网关与上游通信所使用的协议,与 inbound_protocol 相互独立。unknown 表示该请求没有选中任何上游——在转发前被拒绝,或是不调用模型的路由。
行为
对应 Anthropic 的 cache_creation_input_tokens 和 Amazon Bedrock 的 cacheWriteInputTokens。与同一口径下的缓存读取一样,这些 Token 位于 aisix_llm_input_tokens_total 之外、aisix_llm_total_tokens_total 之内。
各服务商对缓存写入的计费高于标准输入价格,对缓存读取的计费则远低于标准价格,因此写入远多于读取的工作负载反而比完全不用缓存更贵。将该计数器与 aisix_llm_cache_read_input_tokens_total 对比即可发现这种情况。
aisix_llm_spend_micro_usd_total 。描述:以微美元计的估算支出;1 美元等于 1,000,000 微美元。网关只要能够解析请求价格,就会记录该指标。 。类型:counter 。标签数量:12 个标签
标签
endpoint, inbound_protocol, upstream_protocol, provider, model, upstream_model, provider_key_id, provider_key_name, api_key_id, team_id, user_id, user_nameinbound_protocol 的值
openai, anthropic, realtimeupstream_protocol 的值
openai, anthropic, bedrock, vertex, azure-openai, unknown网关与上游通信所使用的协议,与 inbound_protocol 相互独立。unknown 表示该请求没有选中任何上游——在转发前被拒绝,或是不调用模型的路由。
aisix_llm_tokens_by_client_total 。描述:所有报告 Token 用量的端点中的 Token 用量,按标准化客户端、请求模型和 Token 类型分组。 。类型:counter 。标签数量:3 个标签
标签
client_type, model, token_typeclient_type 的值
openai-python, openai-node, anthropic-python, anthropic-typescript, claude-code, codex, cline, roo-code, kilocode, zoo-code, github-copilot, cursor, opencode, qwen-code, gemini-cli, crush, zed, aider, vercel-ai-sdk, langchain, llamaindex, litellm, curl, python-requests, httpx, aiohttp, okhttp, go-http-client, node, postman, browser, other, unknown无法识别的 User-Agent 映射为 other;缺少 User-Agent 时映射为 unknown。部署可通过管理员定义的映射规则(observability.metrics.client_type_rules)扩展此集合。完整的 User-Agent 字符串和版本仍会保留在请求日志和用量分析中。
token_type 的值
input, output, totaltotal 包含输入、输出以及 Anthropic 缓存创建和缓存读取 Token。
行为
model 是调用方请求的模型名称,与 aisix_llm_* Token 序列的 model 标签值相同。路由、语义、合议和故障转移分发会保留此别名,而不是报告所选直接模型。
有界的 client_type 白名单可防止客户端可控的 User-Agent 导致 Prometheus 基数无限增长。具体模型别名受已配置模型集合的限制,但通配符别名会记录通过该模式请求的每个具体模型名称。基数很重要时,请限制通配符访问并监 控标签增长。
管理员定义的映射规则(observability.metrics.client_type_rules)可对更多客户端进行分类。规则在内置白名单之前匹配,并输出固定且经过验证的标签值,因此标签集合保持有界。
在相同端点范围内跨所有标签聚合后,包含缓存的 total 与 aisix_llm_total_tokens_total 一致。由于两个指标系列使用不同的标签集合,单条序列并不对应;专用客户端类型序列避免为按密钥统计的 Token 序列再增加一个标签维度。
Anthropic 将缓存 Token 与输入 Token 分开报告,因此 total 可能大于 input 与 output 之和。
PromQL 示例
sum by (client_type, model, token_type) (
rate(aisix_llm_tokens_by_client_total[5m])
)限流与预算指标
监控每个标签集合的限流拒绝,以及最新配额或预算状态。
aisix_ratelimit_rejections_total 。描述:在各代理端点上被共享限流闸门拒绝的请求。 。类型:counter 。标签数量:3 个标签
标签
scope, layer, policy_idscope 的值
requests, tokens并发限制拒绝使用 requests;运行时不会发出单独的 concurrency 值。
layer 的值
api_key, model, mcp, policy行为
policy_id 在 layer="policy" 之外为空;在策略层上,该标签携带已配置的策略 ID。
aisix_ratelimit_remaining_requests 。描述:处理聊天补全请求时报告的剩余请求配额,按 API Key 和模型分组。 。类型:gauge 。标签数量:2 个标签
标签
api_key_id, model行为
model 是请求解析到的已配置模型——通配符别名报告的是该行本身(例如 openai/*),而不是调用方发来的具体名称。
在 API Key 被删除、或被改绑到其他团队或成员之后的数秒内退休为 NaN。用 NaN 而不是 0,是因为 0 在这个仪表上本身就是一个有意义的读数;任何与 NaN 的比较都为假,因此挂在退休序列上的告警会停止触发。对含有退休序列的指标族做聚合,结果同样是 NaN。