Docker 内置日志驱动的使用说明(local,logentries,json-file,gelf)

22 篇文章 0 订阅
11 篇文章 0 订阅

更多文章:WorkMap技术博客

Docker内置日志驱动

local

local日志驱动程序,捕获容器的标准输出/标准错误输出,并将它们写入为性能和磁盘使用进行了优化的内部存储。

默认情况下,本地驱动程序保留每个容器的100MB日志消息(5个轮换日志文件,每个20M),并使用自动压缩来减小磁盘上的大小。

注意:本地记录驱动程序使用基于文件的存储。文件格式和存储机制设计为仅由Docker守护程序访问,不应由外部工具使用,因为实现方式可能在未来版本中发生更改。

使用方法

  • 修改daemon.json
    Linux:/etc/docker/
    Windows Server:C:\ProgramData\docker\config\daemon.json
    {
      "log-driver" : "local" ,
      "log-opts" : {
        "max-size" : "10m"
        }
      }
    
  • 重新启动Docker以使新创建的容器生效。(现有容器不使用新的日志记录配置)。
    docker run \
       --log-driver local --log-opt max-size = 10m \
    	alpine echo hello world
    

参数

  • max-size
    滚动日志之前的最大大小。正整数加上表示度量单位(k、m或g)的修饰符。默认为20m。
    –log-opt max-size=10m

  • max-file
    可以存在的日志文件的最大数量。如果滚动日志创建了多余的文件,则删除最旧的文件。正整数。默认为5。
    –log-opt max-file=3

  • compress
    切换旋转日志文件的压缩。默认启用。
    –log-opt compress=false

示例

启动了一个alpine容器,该容器最多可以有3个大小不超过10兆字节的日志文件。

docker run -it --log-driver local --log-opt max-size=10m --log-opt max-file=3 alpine ash

logentries

logentries日志驱动程序将容器日志发送到Logentries服务器。

使用方法

  • 修改默认日志记录驱动程序
    dockerd --log-driver = logentries
    
  • 要为特定容器指定日志记录驱动程序(在Logentries Web界面中创建一个新的日志集,并获取token)
    docker run --log-driver = logentries --log-opt logentries-token = abcd1234-12ab-34cd-5678-0123456789ab
    

在使用此日志记录驱动程序之前,您需要在Logentries Web界面中创建一个新的日志集,并将该日志集的令牌传递给Docker:

参数

使用–log-opt NAME = VALUE,指定Logentries日志记录驱动程序的参数。

  • logentries-token

    logentries驱动程序的日志集令牌

  • line-only

    是否将日志消息包装到容器数据中(默认)或发送原始日志行

json-file

默认情况下,Docker 捕获所有容器的标准输出(和标准错误),并使用 JSON 格式将它们写入文件中。JSON 格式为每一行注释了它的来源(stdout 或 stderr)和时间戳。每个日志文件仅包含一个容器的信息。

{ “log” : "Log line is here \n " , “stream” : “stdout” , “time” : “2019-01-01T11:11:11.111111111Z” }

警告:json-file 日志驱动程序使用基于文件的存储。这些文件被设计为仅由 Docker 守护进程访问。使用外部工具与这些文件交互可能会干扰 Docker 的日志记录系统并导致意外行为,因此应该避免。

使用方法

  • 修改daemon.json
    Linux:/etc/docker/
    Windows Server:C:\ProgramData\docker\config\daemon.json
    {
      "log-driver" : "json-file" ,
      "log-opts" : {
        "max-size" : "10m",
        "max-file" : "3"
        }
      }
    
  • 重新启动 Docker 以使新创建的容器生效更改。现有容器不使用新的日志配置。
    docker run \
    	--log-driver json-file --log-opt max-size = 10m \
    	alpine echo hello world
    

参数

  • max-size

    日志滚动之前的最大大小。正整数加上表示度量单位(k、m或g)的修饰符。默认为-1(无限制)。

  • max-file

    可以存在的最大日志文件数。如果滚动日志创建了过多的文件,则会删除最旧的文件。仅当也设置了 max-size 时才有效。默认值为 1。

  • labels

    在启动 Docker 守护程序时应用。用于高级日志标签选项。

    –log-opt labels=production_status,geo

  • labels-regex

    类似于标签,与标签兼容。用于匹配与日志记录相关的标签的正则表达式。用于高级日志标签选项。

    –log-opt labels-regex=^(production_status|geo)

  • env

    在启动 Docker 守护程序时应用。用于高级日志标签选项。

    –log-opt env=os,customer

  • env-regex

    类似于env,与 env 兼容。用于匹配与日志记录相关的环境变量的正则表达式。用于高级日志标签选项。

    –log-opt env-regex=^(os|customer)

  • compress

    切换旋转日志的压缩。默认情况下禁用。

    –log-opt compress=true

示例

启动一个 alpine 容器,最多可以有 3 个大小不超过 10 兆字节的日志文件。

docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash

gelf

gelf日志驱动程序是一种方便的格式,兼容许多工具,例如Graylog、Logstash和Fluentd。在GELF中,每个日志消息都是一个字典,具有以下字段:版本、主机(最初发送消息的人)、时间戳、消息的短版本和长版本以及您自己配置的任何自定义字段。

使用方法:

  • 修改daemon.json
    Linux:/etc/docker/
    Windows Server:C:\ProgramData\docker\config\daemon.json
    {
      “log-driver”:“gelf”,
      “log-opts”:{
        “gelf-address”:“udp://1.2.3.4:12201”
        }
      }
    
  • 重新启动 Docker 以使新创建的容器生效更改。现有容器不使用新的日志配置。
    docker run \
    	--log-driver gelf --log-opt gelf-address = udp://1.2.3.4:12201 \
    	alpine echo hello world
    

参数

  • gelf-address

    必需

    GELF服务器的地址。 支持tcp和udp,必须指定端口。

    –log-opt gelf-address=udp://192.168.0.42:12201

  • gelf-compression-type

    可选 UDP Only

    压缩类型。参数值可以是gzip、zlib和none。默认值为gzip。注意,启用压缩会导致过多的CPU使用率,因此强烈建议将其设置为none。

    –log-opt gelf-compression-type=gzip

  • gelf-compression-level

    可选 UDP Only

    当gelf-compression-type为gzip或zlib时的压缩级别。范围为-1到9(BestCompression)的整数。默认值为1(BestSpeed)。较高的级别提供更低速度的更多压缩。-1或0都会禁用压缩。

    –log-opt gelf-compression-level=2

  • gelf-tcp-max-reconnect

    可选 TCP Only

    连接断开时重新连接尝试的最大次数。正整数。默认值为3。

    –log-opt gelf-tcp-max-reconnect=3

  • gelf-tcp-reconnect-delay

    可选 TCP Only

    重新连接尝试之间等待的秒数。正整数。默认值为1。

    –log-opt gelf-tcp-reconnect-delay=1

  • tag

    可选

    附加到gelf消息中APP-NAME的字符串。默认容器ID的前12个字符来标记日志消息。

    –log-opt tag=mailer

  • labels

    可选

    启动Docker守护程序时配置。用于配置日志格式。参考 自定义日志tag

    –log-opt labels=production_status,geo

  • labels-regex

    可选

    –log-opt labels-regex=^(production_status|geo)

  • env

    可选

    启动Docker守护程序时应用。

    –log-opt env=os,customer

  • env-regex

    可选

    用于匹配与日志记录相关的环境变量的正则表达式。

    –log-opt env-regex=^(os|customer)

示例

配置容器以使用运行在192.168.0.42端口12201上的GELF服务器。

docker run -dit \
    --log-driver=gelf \
    --log-opt gelf-address=udp://192.168.0.42:12201 \
    alpine sh
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值