跳到主要内容

监控与日志

系统状态

通过 GET /admin/system/statusadmin:system:status)查看各服务的健康状态,包括 MySQL、Redis、Asynq 等组件的连接状态。

Prometheus 指标

平台在 /metrics 端点暴露 Prometheus 格式的指标数据。

访问控制

通过 gin.metrics.whitelist 配置允许访问的 IP:

gin:
metrics:
whitelist:
- 127.0.0.1
- 10.0.0.0/8 # Prometheus 所在网段

未在白名单内的 IP 访问 /metrics 会返回 403 Forbidden

指标内容

  • HTTP 请求数和延迟(按路由、方法、状态码分类)
  • Asynq 任务队列深度和处理速率
  • 作弊检测计数
  • 活跃靶机数量

日志系统

平台使用 Logrus 记录日志,支持文件轮转。

日志级别

通过 log.level 配置,支持 DEBUG INFO WARNING ERROR

日志持久化

设置 log.save: true 后,日志持久化到 {path}/logs/ 目录下,自动按日期轮转。

在线查看日志

通过 GET /admin/logsadmin:log:read)在管理后台查看日志内容,无需登录服务器。

访问日志

Gin 框架记录每个 HTTP 请求的访问日志,包含请求方法、路径、状态码、耗时等。

排除噪声路径

通过 gin.log.whitelist 排除不需要记录的路径:

gin:
log:
whitelist:
- /metrics
- /platform/*filepath

文件管理

通过 GET /admin/filesadmin:file:list)查看和管理平台上所有已上传的文件,包括:

  • 题目附件(attachment.zipgenerator.zip
  • 流量捕获文件(.pcap
  • 选手 Writeup(PDF/ZIP)

支持在线下载(admin:file:read)和删除(admin:file:delete)。

系统配置在线更新

无需重启服务器即可更新配置:

# 读取当前配置
GET /admin/system/config # 需 admin:system:read

# 更新配置
PUT /admin/system/config # 需 admin:system:update

# 应用配置(热重启)
POST /admin/system/restart # 需 admin:system:restart
警告

热重启会短暂中断服务(通常 1-2 秒)。正式比赛期间谨慎使用。