如何查找Docker环境下portainer.io的UI连接等运行日志
Portainer 2.6.3 访问日志查找与配置方案
针对获取Portainer UI连接日志配置fail2ban的需求,不需要进入容器内部,可按以下步骤操作:
1. 先读取容器默认标准输出日志
Portainer 2.6.3默认会将所有运行日志、访问日志(如果开启)输出到容器标准输出/标准错误流,直接通过docker命令即可读取,无需进入容器:
- 首先获取Portainer容器ID:
docker ps | grep portainer - 直接输出容器日志:
docker logs <替换为上一步拿到的Portainer容器ID>
如果日志中已经能看到来源IP、请求路径、响应状态码等内容,可直接提取使用。
2. 开启访问日志(默认未开启时)
2.6.3版本默认不会输出UI访问日志,需要添加启动参数开启,不需要修改容器内部文件,只需重建容器时添加--access-log参数即可:
示例启动命令:
docker run -d \ -p 9000:9000 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ --name portainer \ portainer/portainer-ce:2.6.3 \ --access-log
开启后再次通过docker logs命令即可看到所有UI访问请求记录,包含登录请求的来源IP、响应状态码,完全满足fail2ban的规则匹配需求。
3. 持久化日志到宿主机方便fail2ban读取
如果需要将日志固定输出到宿主机文件,可通过以下两种方式实现:
- 方式一:后台持续导出容器日志到指定文件
nohup docker logs -f <Portainer容器ID> >> /var/log/portainer_access.log 2>&1 & - 方式二:启动容器时配置日志驱动直接输出到宿主机文件
docker run -d \ -p 9000:9000 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ --name portainer \ --log-driver json-file \ --log-opt path=/var/log/portainer_access.log \ --log-opt max-size=10m \ --log-opt max-file=3 \ portainer/portainer-ce:2.6.3 \ --access-log
4. 适配fail2ban的日志匹配说明
开启访问日志后,失败的登录请求会包含/api/auth路径、401状态码、请求来源IP三个核心字段,可直接基于这些特征编写fail2ban的正则匹配规则即可。
内容的提问来源于stack exchange,提问作者Systemack
相关产品推荐
相关产品推荐

