3x-ui 访问日志怎么长期保存?按用户筛选并自动归档的简单方案

使用 3x-ui 一段时间后,我遇到了一个比较实际的问题:面板里的访问日志适合临时查看,但不方便长期保存。

随着日志轮换或清理,之前的访问记录可能会消失。如果服务器上有多个用户,直接保存完整的 access.log 不仅文件大,后续查找某个用户的记录也很麻烦。

为了解决这个问题,我做了一个轻量级的 3x-ui 用户日志采集器。它可以从 Xray 的访问日志中精确筛选指定用户,把匹配到的记录保存到独立文件,并按周自动归档。

项目地址:3x-ui 用户日志采集器

它是怎么工作的?

采集器会以独立的 systemd 服务运行,持续读取 3x-ui 的访问日志。发现指定用户的新记录后,就会把这一行写入单独的日志文件。

3x-ui access.log
        ↓
按用户 Email 精确筛选
        ↓
保存到独立日志文件
        ↓
按周归档

整个过程只是旁路读取日志,不需要修改 3x-ui 或 Xray 配置。即使采集器停止运行,也不会影响原有节点和面板。

主要功能

  • 按照用户 Email 精确筛选访问日志
  • 兼容带空格和不带空格的 Email 日志格式
  • 不会匹配名称相似的其他用户
  • 使用独立的 systemd 服务运行
  • 服务器重启后自动恢复采集
  • 日志和相关文件集中保存到 /opt 目录
  • 当前日志按周自动归档
  • 不需要时可以完整卸载

适用环境

这个项目以 Debian 和 MHSanaei/3x-ui v3.6.0 为基准开发和测试。

其他具备 systemd、Bash、GNU tail 和 awk 的 Linux 系统理论上也可能运行,但目前没有逐一验证。3x-ui 升级后,建议先检查采集服务状态和日志输出是否正常。

安装方法

在 Debian 服务器上执行下面的命令:

curl -fsSL https://raw.githubusercontent.com/allury/3x-ui-user-log-collector/v1.0.0/install-online.sh | sudo bash -s -- --email demo-user

把命令中的 demo-user 替换成 3x-ui 里实际使用的用户 Email。

安装脚本使用固定的 v1.0.0 版本,安装完成后会自动清理下载过程中产生的临时文件。

版本发布页面:3x-ui 用户日志采集器 v1.0.0

检查服务是否正常

安装完成后,执行:

sudo systemctl is-active 3x-ui-child-log.service

如果返回下面的结果,说明服务已经正常运行:

active

需要查看详细状态时,可以执行:

sudo systemctl status 3x-ui-child-log.service

查看采集到的日志

当前日志保存在:

/opt/3x-ui-child-log/daughter-access.log

实时查看日志:

sudo tail -f /opt/3x-ui-child-log/daughter-access.log

采集器会把历史日志按周归档,相关脚本、配置、当前日志和归档文件都集中放在:

/opt/3x-ui-child-log/

这样做的好处是文件位置比较清楚,备份、检查和卸载都比较方便。

用户 Email 是怎么匹配的?

3x-ui 的访问日志中,用户字段可能采用下面这种格式:

email: demo-user

也可能没有中间的空格:

email:demo-user

采集器兼容这两种格式,并且按照完整的用户标识进行匹配。

例如监控用户是 demo-user,采集器不会把 demo-user-2 或其他相似名称当成同一个用户。

会不会影响原来的 3x-ui?

不会。采集器只是读取 3x-ui 产生的访问日志,不会修改面板配置、Xray 配置、入站、出站、订阅信息或用户流量限制。

服务器重启后,systemd 会自动启动采集服务。即使以后删除这个采集器,原来的 3x-ui 也可以继续正常运行。

如何完整卸载?

如果以后不再需要,可以执行:

sudo /opt/3x-ui-child-log/remove.sh purge

这条命令会停止并删除采集器创建的服务,同时删除采集脚本、配置文件、当前日志和归档文件。

它不会卸载系统的 systemd,也不会删除或修改 3x-ui。日志一旦清理无法恢复,如果里面还有需要保留的记录,卸载前应先做好备份。

这个工具能看到哪些内容?

采集器保存的是 Xray access.log 中已经产生的连接记录,通常可以看到连接时间、客户端地址、目标域名或 IP、目标端口、入站、出站和用户 Email。

它不能查看 HTTPS 连接中的完整网址路径,也不能查看网页内容、聊天内容或其他加密数据。

另外,如果某条记录在采集器读取之前就已经被原日志删除,那么这条历史记录无法恢复。这个工具解决的是从安装完成后开始,把指定用户的新日志及时保存下来。

写在最后

如果只是偶尔查看连接情况,3x-ui 自带的访问日志已经够用。

如果需要把某个用户的记录单独保存,或者担心日志轮换后无法继续查询,可以使用这个采集器进行独立保存和按周归档。

项目源码和详细说明:https://github.com/allury/3x-ui-user-log-collector

访问日志可能包含用户标识、IP 地址和访问目标。实际使用时,请合理设置文件权限和保留时间,不要公开包含真实用户信息的日志内容。

赞(0) 打赏
未经允许不得转载:Kelro Blog » 3x-ui 访问日志怎么长期保存?按用户筛选并自动归档的简单方案

评论 抢沙发