Docker 内置日志驱动的使用说明(syslog,fluentd)

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

syslog

syslog日志驱动程序将日志路由到syslog服务器。

syslog协议使用原始字符串作为日志消息并支持有限的元数据集。

syslog消息必须按特定方式格式化才能有效。

  • 优先级:日志级别,例如debug,warning,error,info。
  • 时间戳:事件发生的时间。
  • 主机名:事件发生的位置。
  • 设施:记录消息的子系统,例如邮件或内核。
  • 进程名称和进程ID(PID):生成日志的进程的名称和ID。

日志格式如下所示:

2017-04-01T17:41:05.616647+08:00 a.vm {taskid:aa,version:} 1787791 {taskid:aa,version:}

使用方法

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

参数

  • syslog-address

    外部syslog服务器的地址。

    URI说明符可以是[tcp | udp | tcp + tls]:// host:port (默认端口是514)
    unix:// path或unixgram:// path。
    –log-opt syslog-address = tcp + tls://192.168.1.3:514,–log-opt syslog-address = unix:///tmp/syslog.sock

  • syslog-facility

    要使用的syslog子系统。

    –log-opt syslog-facility = daemon

  • syslog-tls-ca-cert

    由CA签署的信任证书的绝对路径。如果地址协议不是tcp + tls,则忽略。

    –log-opt syslog-tls-ca-cert = / etc / ca-certificates / custom / ca.pem

  • syslog-tls-cert

    TLS证书文件的绝对路径。如果地址协议不是tcp + tls,则忽略。

    –log-opt syslog-tls-cert = / etc / ca-certificates / custom / cert.pem

  • syslog-tls-key

    TLS密钥文件的绝对路径。如果地址协议不是tcp + tls,则忽略。

    –log-opt syslog-tls-key = / etc / ca-certificates / custom / key.pem

  • syslog-tls-skip-verify

    如果设置为true,则连接到syslog守护程序时跳过TLS验证。默认为false。如果地址协议不是tcp + tls,则忽略。

    –log-opt syslog-tls-skip-verify = true

  • tag

    附加到syslog消息中APP-NAME的字符串。默认情况下,Docker使用容器ID的前12个字符来标记日志消息。

    –log-opt tag = mailer

  • syslog-format

    要使用的syslog消息格式。如果未指定,则使用本地UNIX syslog格式,没有指定主机名。指定rfc3164以获取与RFC-3164兼容的格式。

  • labels

    在启动Docker守护进程时应用。

    –log-opt labels=production_status,geo

  • labels-regex

    在启动Docker守护进程时应用。用于匹配与日志相关的标签的正则表达式。

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

  • env

    在启动Docker守护进程时应用。

    –log-opt env=os,customer

  • env-regex

    在启动Docker守护进程时应用。

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

fluentd

Fluentd 日志驱动程序将容器日志作为结构化日志数据发送到 Fluentd 收集器,然后用户可以使用 Fluentd 的各种输出插件将这些日志写入各种目的地。除了日志消息本身外,fluentd 日志驱动程序还在结构化日志消息中发送以下元数据:

  • container_id

    完整的 64 个字符的容器 ID。

  • container_name

    容器名称在启动时的名称。如果使用 docker rename 重命名容器,则新名称不会反映在日志条目中。

  • source

    stdout 或 stderr。

  • log

    容器日志。

使用方法

  • 写fluentd的配置文件

    <source>
     @type forward
    </source>
    
    <match *>
     @type stdout
    </match>
    
  • 启动fluentd容器

    docker run -it -p 24224:24224 -v /path/to/conf/test.conf:/fluentd/etc/test.conf -e FLUENTD_CONF=test.conf fluent/fluentd:latest
    
  • 启动容器,试用fluentd日志驱动

    docker run --log-driver=fluentd your/application
    
  • 配置fluentd为默认日志驱动程序
    Linux:/etc/docker/
    Windows Server:C:\ProgramData\docker\config\daemon.json

    {
      "log-driver" : "fluentd" ,
      "log-opts" : {
        "fluentd-address" : "fluentdhost:24224"
        }
    }
    
  • 重新启动 Docker 以使新创建的容器生效更改。现有容器不使用新的日志配置。

  • 创建新的使用fluent的容器

    docker run --log-driver=fluentd --log-opt fluentd-address=fluentdhost:24224
    

参数

用户可以使用 --log-opt NAME=VALUE 标志指定其他 Fluentd 日志驱动程序选项。

  • fluentd-address
    默认情况下,日志驱动程序连接到 localhost:24224。提供 fluentd-address 选项以连接到不同的地址。支持 tcp(默认)和 unix sockets。
    docker run --log-driver=fluentd --log-opt fluentd-address=fluentdhost:24224
    docker run --log-driver=fluentd --log-opt fluentd-address=tcp://fluentdhost:24224
    docker run --log-driver=fluentd --log-opt fluentd-address=unix:///path/to/fluentd.sock
    
  • tag

    默认情况下,Docker 使用容器 ID 的前 12 个字符来标记日志消息。

  • labels、labels-regex、env 和 env-regex

    同上

  • fluentd-async

    Docker 在后台连接到 Fluentd。消息会缓冲,直到建立连接。默认为 false。

  • fluentd-buffer-limit

    设置内存中缓冲的事件数。记录将存储在内存中,直到达到此数字。如果缓冲区已满,则记录日志的调用将失败。默认值为 8192。

  • fluentd-retry-wait

    重试之间等待的时间。默认为 1 秒。

  • fluentd-max-retries

    最大重试次数。默认值为 4294967295(2**32 - 1)。

  • fluentd-sub-second-precision

    以纳秒分辨率生成事件日志。默认为 false。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值