这个项目能做什么

ngtop 是一个基于 Go 的命令行实用程序,用于分析 nginx 访问日志。它将日志条目解析到 SQLite 数据库中,并允许用户运行过滤查询以获取请求统计信息。 ### 安装 从 releases 下载预构建的二进制文件,或通过 Go 安装:`go install github.com/facundoolano/ngtop@latest`。 ### 工作原理 每次运行时,ngtop 会发现 nginx 访问日志(默认为 `/var/log/nginx/access.log*`),使用组合日志格式解析它们,并将解析后的条目存储到 SQLite 数据库中(默认为 `./ngtop.db`)。后续运行仅处理尚未存储的新日志条目。 ### 查询功能 该工具支持在多个维度上进行过滤和聚合: - **路径**:热门请求的 URL,支持模式匹配(如 `/blog/%`) - **用户代理**:按浏览器、操作系统、设备或机器人检测进行分组 - **IP 地址**:热门请求 IP,或每个 IP 的热门 URL - **引用来源**:特定 URL 模式的热门引用来源 - **状态码**:按 HTTP 状态码统计响应数量,支持模式匹配(例如 `4%`、`5%`) - **时间范围**:使用 `--since`/`-s` 限制查询范围为最近的秒、分钟、小时、天、周或月,可选使用 `--until`/`-u` 定义窗口 - **过滤器**:使用 `--where`/`-w` 结合多个条件,操作符包括 `=`、`!=` 和 `LIKE` ### 配置 行为通过环境变量控制: - `NGTOP_LOGS_PATH`: 日志文件位置的 glob 模式 - `NGTOP_LOG_FORMAT`: 自定义的 nginx 日志格式字符串 - `NGTOP_DB`: SQLite 数据库的路径 - `NGTOP_DEBUG`: 启用内部日志 这使得 ngtop 成为一个轻量级、低开销的 nginx 部署分析层,适用于不需要完整日志聚合栈的场景。