使用 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 地址和访问目标。实际使用时,请合理设置文件权限和保留时间,不要公开包含真实用户信息的日志内容。



