Docker 日志管理、监控与生产部署全解析
1. Docker 日志管理
在 Docker 中,日志管理是确保应用程序可维护性和可监控性的重要环节。以下是几种常见的日志管理方法:
-使用进程管理器中继日志:可以在容器中使用进程管理器(如 systemd、upstart、supervisor 或 runit)来中继日志。New Relic 为 supervisor 发布了一个日志插件,能将输出捕获并定向到中央日志服务。不过,使用此方法需要安装 Python。
-运行日志中继器:在容器中运行日志中继器,包装容器的 stdout/stderr。Spotify 发布了一个简单的静态链接 Go 中继器,用于将容器内一个进程的 stderr 和 stdout 记录到 syslog,通常在 Dockerfile 的 CMD 行中运行,由于是静态编译,无依赖关系,非常灵活。
-将 Docker JSON 日志中继到 syslog:可以从服务器将 Docker JSON 日志本身中继到 syslog。
-使用 Logspout:如果希望有一个系统支持所有容器,可以使用 Logspout。它在单独的容器中运行,与 Docker 通信,并将所有容器日志记录到 syslog(仅 UDP)。但此方法需要设置日志轮转,且不能解决 Docker 守护进程被大量日志需求压垮的问题。
-关闭日志记录:在极少数情况下,如果不想进行任何日志记录,可以使用--log-driver=no