Dashboard 功能
使用日志
使用日志页面提供了完整的 API 请求历史记录查询功能,让管理员和用户能够追踪、分析和排查所有通过 Claude Code Hub 的请求。
功能概述
使用日志记录了每一次 API 请求的详细信息,包括:
- 请求元数据:时间、用户、API Key、供应商、模型
- Token 统计:输入 Token、输出 Token、缓存 Token
- 成本信息:请求费用(支持多货币显示)
- 性能数据:请求耗时
- 状态信息:HTTP 状态码、错误详情、供应商决策链
权限说明
- 管理员:可查看所有用户的日志,并按用户、供应商等维度筛选
- 普通用户:仅能查看自己的日志记录
页面布局
统计卡片
页面顶部显示四个统计卡片,汇总当前筛选条件下的数据:
| 卡片 | 说明 |
|---|---|
| 总请求数 | 符合筛选条件的请求总数 |
| 总金额 | 累计费用(按系统设置的货币显示) |
| 总 Token 数 | 输入 Token + 输出 Token 的总和 |
| 缓存 Token | 缓存写入 Token + 缓存读取 Token |
筛选器
筛选器区域支持多维度组合查询:
| 筛选项 | 说明 | 权限 |
|---|---|---|
| 日期范围 | 紧凑型日期范围选择器,支持快速选择和前后翻页 | 所有用户 |
| 用户 | 按用户筛选 | 仅管理员 |
| API Key | 按密钥筛选(联动用户选择) | 所有用户 |
| 供应商 | 按供应商筛选 | 仅管理员 |
| 模型 | 按模型名称筛选 | 所有用户 |
| Endpoint | 按 API 端点筛选 | 所有用户 |
| 状态码 | 按 HTTP 状态码筛选 | 所有用户 |
日期范围选择器
日期筛选器支持以下操作:
- 快速选择:点击「今日」「昨日」「近7天」「近30天」快捷按钮,一键设置日期范围
- 点击选择:打开双月日历视图,选择起始和结束日期
- 前后翻页:使用左右箭头按钮快速切换相同长度的时间段
- 重置:点击重置按钮清空日期筛选条件
日期使用本地时间,系统会根据服务器配置的 TZ 环境变量进行时区转换。
数据导出
筛选器区域右侧提供「导出 CSV」按钮,可将当前筛选条件下的日志导出为 CSV 文件。
导出权限
| 用户角色 | 导出范围 |
|---|---|
| 管理员 | 可导出所有用户的日志(最多 10,000 条) |
| 普通用户 | 仅可导出自己的日志记录 |
CSV 文件内容
导出的 CSV 文件包含以下列:
| 列名 | 说明 |
|---|---|
| Time | 请求时间(ISO 格式) |
| User | 用户名称 |
| Key | API 密钥名称 |
| Provider | 供应商名称 |
| Model | 实际使用的模型 |
| Original Model | 原始请求的模型(如有重定向) |
| Endpoint | API 端点 |
| Status Code | HTTP 状态码 |
| Input Tokens | 输入 Token 数量 |
| Output Tokens | 输出 Token 数量 |
| Cache Write 5m | 5 分钟缓存写入 Token |
| Cache Write 1h | 1 小时缓存写入 Token |
| Cache Read | 缓存读取 Token |
| Total Tokens | Token 总数 |
| Cost | 费用(固定使用美元计价) |
| Duration (ms) | 请求耗时(毫秒) |
| Session ID | 会话 ID |
| Retry Count | 重试次数 |
导出说明
- CSV 文件添加了 BOM 标记,确保在 Excel 中打开时能正确识别 UTF-8 编码
- 费用列固定使用美元(USD)计价,与页面显示的货币设置无关
- 单次导出最多 10,000 条记录
日志表格
v0.3.38 新增
日志表格采用虚拟化渲染技术(use-virtualizer hook),仅渲染可视区域内的行,显著提升大数据量下的滚动性能和页面响应速度。
表格展示每条请求的详细信息,共 12 列:
| 列名 | 说明 |
|---|---|
| 时间 | 相对时间显示(如「2 分钟前」) |
| 用户 | 发起请求的用户名称 |
| Key | 使用的 API 密钥名称 |
| 供应商 | 实际处理请求的供应商(支持决策链展示) |
| 模型 | 请求使用的模型(支持重定向显示) |
| 输入 Token | 请求的输入 Token 数量 |
| 输出 Token | 响应的输出 Token 数量 |
| 缓存写入 | Cache Creation Input Tokens |
| 缓存读取 | Cache Read Input Tokens |
| 成本 | 请求费用(6 位小数精度),鼠标悬停显示计费详情 |
| 耗时 | 请求处理时间(ms 或 s) |
| 状态 | HTTP 状态码(点击查看详情) |
计费详情
鼠标悬停在「成本」列时,会显示详细的计费明细 Tooltip,包括:
| 项目 | 说明 |
|---|---|
| 输入 tokens | 基础输入 Token 费用 |
| 输出 tokens | 基础输出 Token 费用 |
| 缓存写入 5m | 5 分钟缓存创建 Token(按 1.25 倍计费) |
| 缓存写入 1h | 1 小时缓存创建 Token(按 2 倍计费) |
| 缓存读取 | 缓存读取 Token(按 0.1 倍计费) |
| 供应商倍率 | 供应商设置的成本系数(costMultiplier),不为 1.0 时显示 |
缓存计费说明
Anthropic 的提示缓存功能根据 TTL 时长采用不同计费策略:
- 5 分钟缓存:创建时按输入价格的 1.25 倍计费
- 1 小时缓存:创建时按输入价格的 2 倍计费
- 缓存读取:命中缓存时按输入价格的 0.1 倍计费
合理使用缓存可以显著降低长上下文对话的成本。
自动刷新
页面默认启用自动刷新功能:
- 刷新间隔:每 3 秒自动获取最新数据
- 新增高亮:新增的日志记录会短暂高亮显示(800ms 动画)
- 手动刷新:点击刷新按钮可立即获取最新数据
- 暂停刷新:可通过开关暂停自动刷新
供应商决策链
当请求经历了故障转移或重试时,「供应商」列会显示完整的决策链信息。
单次请求成功
直接显示供应商名称。如果供应商配置了成本倍率(costMultiplier),会显示对应的倍率标签:
- 橙色标签:倍率 > 1.0(成本增加)
- 绿色标签:倍率 < 1.0(成本降低)
多次请求(故障转移)
显示供应商链路,点击可查看详细的决策过程:
Provider1(✗) → Provider2(✗) → Provider3(✓)
决策链记录包括:
- 会话复用判断
- 首次供应商选择逻辑
- 请求失败原因
- 重试选择过程
- 最终成功/失败状态
- 错误规则匹配详情
v0.3.37 新增
决策链现在会记录错误规则的匹配详情,包括匹配的规则名称、规则类型和触发条件,便于排查错误处理逻辑。
错误详情弹窗
点击「状态」列的状态码,可打开详情弹窗查看完整信息。
状态码颜色
| 状态码范围 | 颜色 | 说明 |
|---|---|---|
| 2xx | 绿色 | 请求成功 |
| 3xx | 蓝色 | 重定向 |
| 4xx | 黄色 | 客户端错误 |
| 5xx | 红色 | 服务器错误 |
| 进行中 | 灰色 | 请求尚未完成 |
弹窗内容
拦截信息(如果被拦截)
- 拦截类型:
sensitive_word(敏感词) - 拦截原因:匹配的敏感词、匹配类型
- 拦截类型:
Session 信息
- Session ID
- 「查看详情」按钮:跳转到 Session 消息详情页
请求信息
- Messages 数量
- User-Agent
- Endpoint
模型重定向(如果发生重定向)
- 原始模型 → 重定向后模型
- 计费模型标注
错误消息
- 格式化的错误详情
- 限流错误特殊样式
- 被过滤的供应商列表
供应商决策链时间线
- 完整的请求处理过程
- 每个步骤的时间戳
[0000ms] - 供应商选择逻辑
- 熔断器状态
- 错误详情
时间线示例
[0000ms] 开始处理请求
[0005ms] 检查会话绑定:无已绑定供应商
[0010ms] 首次选择供应商
- 选择方式:加权随机
- 候选池大小:3
- 选中:Provider-A (权重: 50, 优先级: 1)
[0015ms] 向 Provider-A 发起请求
[1234ms] Provider-A 请求失败
- 状态码:429
- 错误:Rate limit exceeded
[1240ms] 触发故障转移,重新选择供应商
- 排除:Provider-A
- 选中:Provider-B (权重: 30, 优先级: 1)
[1245ms] 向 Provider-B 发起请求
[2500ms] Provider-B 请求成功
- 状态码:200
---
总耗时:2500ms
错误请求详情
当请求发生错误时(供应商错误、系统错误、HTTP/2 协议回退等),时间线中会显示该次请求的详细信息,便于问题排查。
可查看的信息
| 信息类型 | 说明 |
|---|---|
| 请求方法 | HTTP 方法(GET、POST 等) |
| 请求 URL | 实际发送的上游请求地址 |
| 请求头 | 发送给上游的 HTTP 头部 |
| 请求体 | 发送给上游的请求内容(限制 2000 字符) |
敏感信息脱敏
为保护安全,请求详情中的敏感信息会自动脱敏处理:
请求头脱敏
以下请求头的值会被部分遮罩:
Authorization:保留认证类型前缀(如Bearer),令牌只显示前后各 4 字符X-API-Key、API-Key、Anthropic-API-Key等 API 密钥头Cookie、Set-CookieProxy-Authorization、X-Auth-Token等认证相关头部
遮罩示例:
Bearer sk-ant-api...****...xyz123- 长令牌部分遮罩[REDACTED]- 短于 8 字符的值完全遮罩Basic [REDACTED]- Basic 认证完全遮罩(包含用户名密码)
URL 参数脱敏
以下 URL 查询参数的值会被替换为 [REDACTED]:
api_key、api-key、apiKey、keytoken、access_token、auth_tokensecret、client_secret、password
请求体截断
- 请求体最大显示 2000 字符
- 超出部分会被截断,并标注「已截断」提示
- 在时间线详情展示时进一步限制为 500 字符预览
请求详情用途
请求详情主要用于排查以下问题:
- 验证请求是否正确转发到上游供应商
- 检查请求头是否符合预期
- 对比不同供应商的请求差异
- 分析网络层错误的原因
特殊标记
非计费端点
某些端点(如 /v1/messages/count_tokens)不产生费用,这类请求在表格中以置灰背景显示。
被拦截请求
被敏感词过滤等规则拦截的请求,供应商列显示橙色「已拦截」标记。
模型重定向
当模型发生重定向时,可点击模型名称旁的箭头图标查看重定向详情:
- 原始请求模型
- 实际使用模型
- 计费依据模型(根据
billingModelSource配置)
相关配置
以下系统设置影响日志显示:
| 配置项 | 说明 |
|---|---|
TZ | 时区设置,影响时间筛选的时区转换 |
currencyDisplay | 货币显示设置(USD/CNY 等) |
billingModelSource | 计费模型来源(original/redirected) |
使用场景
费用审计
通过时间范围和用户筛选,查看特定时段或用户的 API 使用费用。
问题排查
当用户反馈请求异常时,可通过以下方式定位问题:
- 按用户和时间筛选相关请求
- 查看状态码和错误详情
- 分析供应商决策链,了解故障转移过程
- 跳转到 Session 详情查看完整请求内容
性能分析
通过耗时列和供应商决策链,分析请求的性能瓶颈:
- 单次请求耗时
- 故障转移带来的额外延迟
- 不同供应商的响应速度对比
供应商监控
结合供应商筛选和状态码筛选,监控特定供应商的服务质量:
- 错误率统计
- 常见错误类型
- 故障转移频率
下一步
- 活跃 Session - 查看当前正在进行的会话
- 排行榜 - 查看用户使用排名
- 日志设置 - 配置日志保留策略
