docker日志引擎说明

docker原生支持众多的日志引擎,适用于各种不同的应用场景,本篇文档对其作一个简单的说明。

Docker日志引擎说明

docker支持的日志引擎如下:

  • none:关闭docker的回显日志, docker logs 看不到任何输出。使用这种方式也就意味着无法查看任何容器输出的日志
  • json-file:把每个容器的回显日志打到每个容器的内部, 形式为json 文件。在实际使用中, 有些容器在启动后有大量的回显日志, 尤其在程序内部报错时打出的日志信息尤其巨大, 很可能会因为某几个容器的json 日志过大而撑爆整个宿主机的磁盘
  • syslog:把所有容器的回显日志打到系统的syslog中。

    目前harbor私有镜像仓库使用docker-compose方式启动的话,就默认使用的这种方式。将所有容器的日志都集中收集到一个harbor-log的容器中,在执行docker logs的时候会提示"logs" command is supported only for "json-file" and "journald" loggin drivers (got: syslog)

  • journald:把所有容器的回显日志打到系统的journald服务中,这是推荐的方式。
  • fluentd:把所有容器的回显日志打到fluentd服务中
  • gelf 把所有容器的回显日志打到支持 GELF(Graylog Extended Log Format) 格式的服务中, 比如Graylog或Logstash

修改docker日志引擎

  1. 修改docker配置文件/etc/docker/daemon.json如下:

    {
        "log-driver": "journald"
    }
  2. 在容器运行时指定其日志引擎:
    docker run --log-driver=journald alpint /bin/sh

journald配置说明

journald配置文件说明

# /etc/systemd/jornald.conf示例:

[Journal]
#Storage=auto  存储为自动模式, 其他模式有无日志模式, 纯内存模式和纯磁盘模式
#Compress=yes  默认启动压缩功能
#Seal=yes   默认加密, 日志文件为二进制文件, 无法 vim或tail 查看
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s
#RateLimitBurst=1000
#SystemMaxUse=  精确设置日志可以占用的最大磁盘空间
#SystemKeepFree=  保证系统剩余的空间大小
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=no
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg

journald 默认配置下, 默认日志最大限制为所在文件系统容量的 10%

默认配置下, journald 的日志存放在 /var/log/journal 下, 如果该目录在根分区下, 且根分区空间大小为10G, 那么 journald 存放日志最大的大小为1G, 超出1G 后将删除最早的日志

也可以精确指定占用的空间大小:

SystemMaxUse=50M

journalctl基本用法

  • journalctl 从头查看所有日志
  • journalctl -b 查看本次开机后的所有系统引导日志
  • journalctl -b -1 显示上次开机后的系统引导日志, 以此类推
  • journalctl -f 类似于 tail -f或tailf
  • journalctl /usr/bin/dockerd 后加程序的绝对路径,可以显示该程序的所有日志信息
  • journalctl -xe systemd 启动程序失败时会提示你使用这个命令查看错误信息, 其中x 表示在日志输出中增加一些解释性的短文本, e表示立即跳转至日志的尾部

journald注意事项

journald配置中,有两个非常重要的优化项目:

ForwardToSyslog=yes
ForwardToWall=yes

以上两个参数默认都是 yes 意味着 journald 收集日志后还会转发到 syslog 中

由此造成的影响是: journald 虽然可以乖乖的按照上面的配置进行日志的清理, 但是 syslog 却不在 journald 的控制范围之内

在日志量很大的情况下,syslog中的日志量也变得巨大,所以我们需要把上面两个参数的值改为no

重启journald服务:

systemctl restart systemd-journald.service

参考:https://docs.lvrui.io/2017/02/19/%E6%9B%B4%E6%94%B9docker%E7%9A%84%E6%97%A5%E5%BF%97%E5%BC%95%E6%93%8E%E4%B8%BA-journald/

原文地址:https://www.cnblogs.com/breezey/p/9131959.html

时间: 2024-11-08 22:10:34

docker日志引擎说明的相关文章

关于修改docker的日志引擎

在docker的1.12.3版本以前默认使用的日志引擎是json-file,而在1.12.6之后的版本却将默认日志引擎修改成了journald,这样虽然减少了container log对磁盘的占用,但是在某些时候也带来了一些不方便. CentOS7 docker-1.12.6修改日志引擎,具体修改地址 /etc/sysconfig/docker 打开后,在其中会看到一行 OPTIONS='--selinux-enabled --log-driver=journald --signature-ve

docker 日志分析

日志分两类,一类是 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)

Docker 存储引擎

可插拔存储引擎架构   这种可插拔式的存储架构.可以让你很灵活的去选择适合自己环境的存储引擎. 每个存储引擎都是以Linux 文件系统为基础的.此外,每个存储引擎都以自己的方式自由的管理image层,container层. 也就是说每个种存储引擎在特定的情况下,表现的比其他的更好. Docker只能运行一个存储引擎,所有的容器被daemon使用一样的存储引擎创建. Dcoker支持的存储引擎: docker info 命令查看daemon 中使用了哪个存储引擎: [email protected

阿里云主机部署Docker容器引擎

一.部分  通过阿里云软件市场一键部署 配置过程如下链接: https://market.aliyun.com/products/56014007/cmjj017110.html?spm=5176.2020520132.101.5.4MIrmY最终get到云主机+Docker容器引擎 云主机登录:ssh -p 22 [email protected]公网IP  user:root pass:[email protected] 容器远程登录:ssh –p9090 [email protected]

Centos7 修改docker文件系统引擎为overlayfs

查看默认docker文件系统引擎信息 [[email protected] ~]# docker info Containers: 19 Running: 16 Paused: 0 Stopped: 3 Images: 18 Server Version: 1.12.6 Storage Driver: devicemapper #默认为devicemapper 停止docker服务 [[email protected] ~]# service docker stop Redirecting to

ELK学习实验018:filebeat收集docker日志

Filebeat收集Docker日志 1 安装docker [[email protected] ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 [[email protected] ~]# yum update [[email protected] ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/d

docker日志处理

检查docker日志情况 容器日志一般存放在/var/lib/docker/containers/container_id/下面,以json.log结尾的文件(业务日志)很大,查看各个日志文件大小的脚本docker_log_size.sh,内容如下: #!/bin/sh echo "======== start clean docker containers logs ========" logs=$(find /var/lib/docker/containers/ -name *-j

Docker 日志位置

日志分两类,一类是 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)

运维之我的docker-使用ELK处理docker日志

因为docker产生的容器不是一个永久存储的文件,所以无法保证你的文件永久保存.建议大家把容器产生的日志通过fluentd,flume,logstash等工具传送到一个日志仓库,这样保证方便保证数据的安全和管理.由于docker官方的推荐,我们本次讲解是fluentd日志收集组件. 具体使用如下: 安装ES 1. 初始化环境 [[email protected] src]# vim /etc/sysctl.conf vm.max_map_count = 290000 [[email protec