1. Docker 日志
- 当启动一个容器的时候,它其实是 docker daemon 的一个子进程,docker daemon 可以拿到你容器里面进程的标准输出,拿到标准输出后,它会通过自身的一个 LogDriver 模块来处理,LogDriver 支持的方式很多,可以写到本地的文件(默认方式),可以发送到 syslog 等。
- Docker 会默认收集应用程序的标准输出存储到一个 json.log 文件中。
- Docker 日志存储方式是可配置的,具体参数可以在执行 run 启动容器的时候通过 log-driver 进行配置,具体配置参考 log-driver(https://docs.docker.com/config/containers/logging/configure/#supported-logging-drivers)。
2. Graylog
- graylog 和 ELK 非常的相似,算是后起之秀。
选择 graylog 的原因
- Docker 原生支持 graylog 协议,直接将日志发送到 graylog(通过 gelf 协议)。
- graylog 官方提供了将本身部署在 Docker 的支持。
3. Graylog 部署
graylog 官方提供了 Dockerfile 供我们快速的在 Docker 上部署日志系统,在这个 Docker Hub 的地址中,也提供了 docker-compose.yml 来快速部署整个 graylog 栈,包含了 mongodb、ElasticSearch,而不需要分别单独进行部署。
官方地址:https://hub.docker.com/r/graylog/graylog/
4. Graylog 系统配置
input 配置
- graylog 的日志收集是通过定义 input 对象来完成的。
- 选择
System
->Inputs
->GELF UDP
。 - 填写相关属性,保存。