Bla*_*laM 25 log-files apache-2.2 docker
我刚刚开始使用 Docker 和 Richt,现在我正试图弄清楚如何设置我的第一个 dockerized Apache 2 / PHP 环境。到目前为止,我一直在使用完整的 Linux VM,其中我使用将日志文件写入 /var/log/apache2,然后每天使用“logrotate”跳转到一个新文件。
日志文件主要用于即时错误检测(即登录服务器并使用less 打开当前的access.log 和error.log 文件)和fail2ban。
如果我是对的,那在 Docker 环境中是不可行的——主要是因为您通常无法登录到容器来查看日志。如果容器被移除,日志也会丢失。
那么:在这种情况下,使用/模拟/替换 access.log/error.log 的最常用方法是什么?生产和开发环境的常见解决方案是什么?
到目前为止,我的想法包括使用 NFS 共享(速度慢,如果不小心可能会导致文件名冲突)和logstash(不确定它是否值得付出努力并且对于较小的站点甚至开发环境是否可行?)但我相信聪明的人有没有想出更好的解决方案?
不确定它是否有所作为,但目前我将我的 Docker 映像基于php:5.6-apache。
Fon*_*Lew 15
您仍然可以使用docker exec -it <your container name> /bin/bash命令进入您的容器并完成您的常规工作。或者,也许您可以更改/bin/bash为您的命令或命令脚本.sh来执行它。
使您的文件脱离容器使用 docker cp <container name:/path/to/file> </your local machine/path/>
对于您的日常工作,您可以使用croncronjob 这些命令。我强烈建议您为常用的 docker 命令设置别名。这样我就可以通过几个键愉快地使用docker。
该docker logs <container name/id>命令用于查看 docker 镜像的执行日志。它显示重定向输出到标准输出。
如何将访问和错误日志写入 stderr 和 stdout?
https://gist.github.com/afolarin/a2ac14231d9079920864
运行 ln -sf /dev/stdout /var/log/nginx/access.log
运行 ln -sf /dev/stderr /var/log/nginx/error.log
不过,使用ELK进行集中日志记录将允许进行更主动的监控。但是你自己已经想到了那个。
小智 6
在apache配置文件中可以添加:
CustomLog /dev/stdout
ErrorLog /dev/stderr
并使用以下命令查看日志:
docker logs container_id
小智 5
root@my_docker:~ # ls -l /var/log/apache2/
total 0
lrwxrwxrwx 1 root root 11 Jul 17 04:55 access.log -> /dev/stdout
lrwxrwxrwx 1 root root 11 Jul 17 04:55 error.log -> /dev/stderr
lrwxrwxrwx 1 root root 11 Jul 17 04:55 other_vhosts_access.log -> /dev/stdout
root@my_docker:~ #
Run Code Online (Sandbox Code Playgroud)
我选择的 docker 镜像只是将所有 *.log 文件链接到 /dev/stdout 和 /dev/stderr,所以我无法读取它们。
删除文件并重新启动 apache 后,我可以从 docker 中的 /var/log/ 获取日志。
docker-compose exec apache bash -c "tail -f /var/log/apache2/*.log"
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现“ docker log ”被多次提及。
我是一个绝对的 Docker 新手,所以这可能能解决我的问题 - 但到目前为止我还没有完全理解该命令背后的概念。
Docker 似乎将所有标准输出输出保存在/var/lib/docker/containers/ 中的JSON 文件中,并让我有机会通过日志命令访问它们。
到目前为止,我不确定如何实际使用输出。
| 归档时间: |
|
| 查看次数: |
47175 次 |
| 最近记录: |