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。