zoukankan      html  css  js  c++  java
  • 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/更改docker的日志引擎为-journald/

  • 相关阅读:
    引用与指针的区别联系
    单链表热点面试题
    C语言实现的单链表
    C语言实现的顺序表
    自己实现的库函数2(memset,memcmp,memcpy,memmove)
    自己实现的库函数1(strlen,strcpy,strcmp,strcat)
    Python文件练习_注册
    Python文件练习_自动生成密码文件
    Python文件练习_读取文件并计算平均分
    Python学习笔记七_文件读写
  • 原文地址:https://www.cnblogs.com/breezey/p/9131959.html
Copyright © 2011-2022 走看看