Docker 17参考手册
引擎: 管理员指南 | Engine: Admin Guide
Amazon CloudWatch记录日志记录驱动程序(引擎) | Amazon CloudWatch logs logging driver (Engine)
awslogs
日志驱动程序发送集装箱日志亚马逊 CloudWatch 的日志。可以通过 AWS 管理控制台或 AWS 开发工具包和命令行工具检索日志条目。
用法
要将awslogs
驱动程序用作默认日志记录驱动程序,请将log-driver
和log-opt
键设置为daemon.json
位于 Linux 主机/etc/docker/
或 Windows Server 上C:\ProgramData\docker\config\daemon.json
的文件中的适当值。有关使用Docker 配置的更多信息daemon.json
,请参阅 daemon.json 。以下示例将日志驱动程序awslogs
设置为并设置该awslogs-region
选项。
{
"log-driver": "awslogs",
"log-opts": {
"awslogs-region": "us-east-1"
}
}
重新启动 Docker 以使更改生效。
您可以使用以下--log-driver
选项来设置特定容器的日志记录驱动程序docker run
:
docker run --log-driver=awslogs ...
Amazon CloudWatch Logs 选项
您可以添加日志记录选项以daemon.json
设置 Docker 范围的默认值,或者在启动容器时使用--log-opt NAME=VALUE
标志指定 Amazon CloudWatch Logs 日志记录驱动程序选项。
awslog-区域
awslogs
日志驱动程序发送您的 Docke 日志的特定区域。使用awslogs-region
日志选项或AWS_REGION
环境变量来设置区域。默认情况下,如果Docker守护进程在 EC2 实例上运行,并且没有设置区域,则驱动程序使用实例的区域。
docker run --log-driver=awslogs --log-opt awslogs-region=us-east-1 ...
awslog-组
您必须指定一个日志组为awslogs
日志驱动程序。您可以使用awslogs-group
日志选项指定日志组:
docker run --log-driver=awslogs --log-opt awslogs-region=us-east-1 --log-opt awslogs-group=myLogGroup ...
awslog-流
要配置应该使用哪个日志流,您可以指定awslogs-stream
日志选项。如果未指定,则将容器标识 ID 用作日志流。
注意:给定日志组内的日志流一次只能由一个容器使用。同时为多个容器使用相同的日志流可能会导致日志记录性能下降。
awslogs-创建-组
如果日志组不存在,日志驱动程序将默认返回错误。但是,您可以将根据awslogs-create-group
需要设置true
为自动创建日志组。awslogs-create-group
选项默认为false
。
$ docker run --log-driver=awslogs \
--log-opt awslogs-region=us-east-1 \
--log-opt awslogs-group=myLogGroup \
--log-opt awslogs-create-group=true \
...
注意:在尝试使用
awslogs-create-group
之前,您的 AWS IAM 策略必须包含logs:CreateLogGroup
权限。
awslogs-日期时间-格式
awslogs-datetime-format
选项定义了Python strftime
格式的多行起始模式。日志消息由与模式匹配的行和与模式不匹配的任何后续行组成。因此匹配的行是日志消息之间的分隔符。
使用此格式的用例的一个示例是解析输出,如堆栈转储,否则可能会记录在多个条目中。正确的模式允许它在一个条目中被捕获。
如果awslogs-datetime-format
和awslogs-multiline-pattern
两者都配置,则此选项始终优先。
注意:多行日志记录会执行所有日志消息的正则表达式解析和匹配,这可能会对日志记录性能产生负面影响。
考虑以下日志流,其中新的日志消息以时间戳开始:
[May 01, 2017 19:00:01] A message was logged
[May 01, 2017 19:00:04] Another multiline message was logged
Some random message
with some random words
[May 01, 2017 19:01:32] Another message was logged
格式可以表达为一个strftime
表达式[%b %d, %Y %H:%M:%S]
,并且awslogs-datetime-format
可以将该值设置为该表达式:
$ docker run --log-driver=awslogs \
--log-opt awslogs-region=us-east-1 \
--log-opt awslogs-group=myLogGroup \
--log-opt awslogs-datetime-format='[%b %d, %Y %H:%M:%S]' \
...
这会将日志解析到以下 CloudWatch 日志事件中:
# First event
[May 01, 2017 19:00:01] A message was logged
# Second event
[May 01, 2017 19:00:04] Another multiline message was logged
Some random message
with some random words
# Third event
[May 01, 2017 19:01:32] Another message was logged
支持以下strftime
代码:
代码 |
含义 |
示例 |
---|---|---|
%a |
平日缩写名称。 |
Mon |
%A |
平日全名。 |
Monday |
%w |
平日为十进制数字,其中0表示星期日,6表示星期六。 |
0 |
%d |
一个月中的一天作为零填充的十进制数字。 |
08 |
%b |
月缩写名称。 |
Feb |
%B |
月份全名。 |
February |
%M |
月份作为零填充十进制数字。 |
02 |
%Y |
世纪作为十进制数字。 |
2008 |
%y |
没有世纪的一年是一个零填充的十进制数。 |
08 |
%H |
小时(24小时制)作为零填充十进制数字。 |
19 |
%I |
小时(12小时制)作为零填充的十进制数字。 |
07 |
%p |
上午或下午。 |
AM |
%M |
分钟作为零填充的十进制数字。 |
57 |
%S |
其次作为零填充十进制数。 |
04 |
%L |
毫秒为零填充的十进制数字。 |
123 |
%f |
微秒作为零填充的十进制数字。 |
000345 |
%z |
UTC偏移量格式为+ HHMM或-HHMM。 |
+1300 |
%Z |
时区名称。 |
PST |
%j |
一年中的一天为零填充的十进制数字。 |
363 |
awslogs-多-模式
awslogs-multiline-pattern
选项使用正则表达式定义多行开始模式。日志消息由与模式匹配的行和与模式不匹配的任何后续行组成。因此匹配的行是日志消息之间的分隔符。
如果awslogs-datetime-format
还配置了此选项,则忽略此选项。
注意:多行日志记录对所有日志消息执行正则表达式解析和匹配。这可能会对记录性能产生负面影响。
例如,要处理以下日志流,新的日志消息从模式开始INFO
*
考虑以下日志流,其中每条日志消息应以 pattherINFO
开头:
INFO A message was logged
INFO Another multiline message was logged
Some random message
INFO Another message was logged
你可以使用^INFO
正则表达式:
$ docker run --log-driver=awslogs \
--log-opt awslogs-region=us-east-1 \
--log-opt awslogs-group=myLogGroup \
--log-opt awslogs-multiline-pattern='^INFO' \
...
这会将日志解析到以下 CloudWatch 日志事件中:
# First event
INFO A message was logged
# Second event
INFO Another multiline message was logged
Some random message
# Third event
INFO Another message was logged
标签
指定tag
为选项的替代awslogs-stream
选项。tag
解释模板标记(例如{{.ID}}
,{{.FullID}}
或{{.Name}}
docker.{{.ID}}
)。有关所有支持的模板替换的详细信息,请参阅标记选项文档。
当两个awslogs-stream
和tag
被指定,提供的awslogs-stream
值将覆盖与指定的tag
模板。
如果未指定,则将容器标识 ID 用作日志流。
注意:CloudWatch 日志 API 不支持
:
日志名称。这可能会导致一些问题时使用{{ .ImageName }}
作为标记,因为泊坞窗图像具有格式IMAGE:TAG
,如alpine:latest
。模板标记可用于获取正确的格式。要获取图像名称和容器ID的前12个字符,可以使用:--log-opt tag='{{ with split .ImageName ":" }}{{join . "_"}}{{end}}-{{.ID}}'
输出结果如下所示:alpine_latest-bf0072049c76
证书
您必须向 Docker 守护程序(daemon)提供 AWS 凭证才能使用awslogs
日志记录驱动程序。您可以提供这些凭证用AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
以及AWS_SESSION_TOKEN
环境变量,默认的 AWS 共享的凭证文件(~/.aws/credentials
根用户),或(如果正在运行在 Amazon EC2 实例泊坞窗守护进程)的 Amazon EC2 实例配置文件。
凭证必须应用允许logs:CreateLogStream
和logs:PutLogEvents
采取的操作,如以下示例所示。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
AWS, Amazon, CloudWatch, logging, driver
引擎: 管理员指南 | Engine: Admin Guide相关
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
主页 | https://docker.com/ |
源码 | https://github.com/docker/docker |
版本 | 17 |
发布版本 | 17.06 |