添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
文雅的开心果  ·  Rkt容器介绍·  2 周前    · 
深沉的黄瓜  ·  适用于 Azure Kubernetes ...·  2 月前    · 

日志分两类,一类是 Docker 引擎日志 ;另一类是 容器日志

Docker 引擎日志

Docker 引擎日志 一般是交给了 Upstart (Ubuntu 14.04) 或者 systemd (CentOS 7, Ubuntu 16.04)。前者一般位于 /var/log/upstart/docker.log 下,后者一般通过 jounarlctl -u docker 来读取。不同系统的位置都不一样,SO上有人总结了一份列表,我修正了一下,可以参考:

系统 日志位置
Ubuntu(14.04) /var/log/upstart/docker.log
Ubuntu(16.04) journalctl -u docker.service
CentOS 7/RHEL 7/Fedora journalctl -u docker.service
CoreOS journalctl -u docker.service
OpenSuSE journalctl -u docker.service
OSX ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/log/d‌​ocker.log
Debian GNU/Linux 7 /var/log/daemon.log
Debian GNU/Linux 8 journalctl -u docker.service
Boot2Docker /var/log/docker.log

容器的日志 则可以通过 docker logs 命令来访问,而且可以像 tail -f 一样,使用 docker logs -f 来实时查看。如果使用 Docker Compose,则可以通过 docker-compose logs <服务名> 来查看。

如果深究其日志位置,每个容器的日志默认都会以 json-file 的格式存储于 /var/lib/docker/containers/<容器id>/<容器id>-json.log 下,不过并不建议去这里直接读取内容,因为 Docker 提供了更完善地日志收集方式 - Docker 日志收集驱动

关于日志收集, Docker 内置了很多日志驱动,可以通过类似于 fluentd , syslog 这类服务收集日志。无论是 Docker 引擎,还是容器,都可以使用日志驱动。比如,如果打算用 fluentd 收集某个容器日志,可以这样启动容器:

$ docker run -d \ log-driver=fluentd \ log-opt fluentd-address=10.2.3.4:24224 \ log-opt tag= ”docker.{ {.Name}}” \ nginx

其中 10.2.3.4:24224 fluentd 服务地址,实际环境中应该换成真实的地址。

dockerd 日志配置

要改变dockerd的日志为debug,可以重启dockerd,并提供启动参数-D或–debug,示例如下:

dockerd -D

dockerd的日志文件,默认为/var/log/messages,也可以重定向到其他日志文件,示例如下:

dockerd -D >> log_file 2>&1

方法二:
vi /etc/docker/daemon.json

" debug ": true

重启docker daemon

systemctl stop docker
systemctl daemon-reload
systemctl start docker

dockerd的日志级别

dockerd支持的日志级别debug, info, warn, error, fatal,默认的日志级别为info。必要的情况下,还需要设置日志级别,这也可以通过配置文件,或者通过启动参数-l或–log-level。
方法一:配置文件/etc/docker/daemon.json

" log-level ": "debug"
dockerd --log-level debug  
dockerd -l debug 

tail -f /var/log/messages

watch -d -n 1 cat /var/log/messages

-d表示高亮不同的地方,-n表示多少秒刷新一次。
该指令,不会直接返回命令行,而是实时打印日志文件中新增加的内容,这一特性,对于查看日志是非常有效的。如果想终止输出,按 Ctrl+C 即可

日志源码分析:
https://blog.csdn.net/zyqduron/article/details/54614461

Docker 容器 日志 是指容器在运行过程中产生的各种 日志 信息,包括错误、警告、信息等。 Docker 将所有容器的 日志 统一管理,方便用户对容器进行监控、故障排查和性能分析。 Docker 容器 日志 是容器在运行过程中产生的各种 日志 信息,包括错误、警告、信息等。 Docker 容器 日志 Docker 的一个重要特性,它可以帮助用户监控容器的运行状态、分析容器的性能,并收集容器 日志 ,方便后续分析。 云栖TechDay31期,阿里云容器服务技术专家戒空给大家带来 Docker 日志 收集最佳实践的演讲。本文主要从传统 日志 处理开始谈起,接下来着重分析 Docker 日志 处理,包括stdout和文件 日志 ,其中还有fluentd-pilot,接着分享了 日志 存储方案Elasticsearch、graylog2和SLS,最后对正确写 日志 给出了建议。以下是精彩内容整理:说到 日志 ,我们以前处理 日志 的方式如下: 日志 写到本机磁盘上通常仅用于排查线上问题,很少用于数据分析需要时登录到机器上,用grep、awk等工具分析那么,这种方式有什么缺点呢?第一,它的效率非常低,因为每一次要排查问题的时候都要登到机器上去,当有几十 高效的监控和 日志 管理对保持生产系统持续稳定的运行以及排查问题至关重要。 在微服务架构中,由于容器的数量众多以及快速变化的特性使得记录 日志 和监控变得越来越重要。考虑到容器短暂和不固定的生命命周期,当我们需要debug问题时有些容器可能不存在了。因此,一套集中式的 日志 管理系统是生产环境中不可缺的组成部分 一、 docker logs 默认配置下的 docker 日志 功能。对于一个运行的容器, docker 会将 日志 发送到容器的标准输出设备STDOUT和标准错误设备(STDERR),stdout... 容器目录挂载到宿主机目录 docker run -it -d --name tomcat5_gz -v /home/jyapp/:/home/jyapp/ tomcat_image /bin/bash 其中:tomcat5_gz容器名 tomc... --details 显示更多的信息 -f, --follow 跟踪实时 日志 --since string 显示自某个timestamp之后的 日志 ,或相对时间,如42m(即42分钟) CnitchCnitch,又名Snitch或Container Snitch,它是一款针对 Docker 引擎的运行进程权限检测工具。Cnitch本质上来说是一个简单的框架和命令行工具,该工具可以帮助研究人员监控 Docker 容器内的运行进程,如果有进程是以root权限的话,研究人员将第一时间收到Cnitch的通知。为什么我们需要去识别 Docker 引擎内以root权限运行的进程呢?如果你还不知... 这是一个在工作中遇到的问题,有一个项目是用 docker 部署的,然后线上跑了一段时间之后, docker 挂载目录磁盘空间满了,导致一些其他问题。 我们的解决方案是:1、扩容;2、清理磁盘;由于扩容要跟客户申请,所以就选择了清理磁盘。 【解决思路】 1.查看磁盘使用情况 注解:使用【df -h】命令查看磁盘使用情况,这里说的磁盘对于linux系统来说,就是整个内存,linux系统没有像windows那样d盘、f盘的概念,linux是整个就是一个盘,而图片里的每一行是目录; 查询结果从左到