Amazon CloudWatch Logs 記錄檔驅動程式
awslogs
記錄驅動程式會將容器記錄傳送到 Amazon CloudWatch Logs
awslogs
記錄驅動程式會將容器記錄傳送到 Amazon CloudWatch Logs
若要設定應使用哪個 記錄串流 指定記錄群組內的記錄串流一次只能由一個容器使用。同時將相同的記錄串流用於多個容器可能會降低記錄效能。 如果記錄群組不存在,記錄驅動程式預設會傳回錯誤。但是,您可以將 在您嘗試使用 預設情況下,日誌驅動程式會建立用於儲存容器日誌的 AWS CloudWatch Logs 串流。 將 如果 使用此格式的一個用例範例是解析輸出(例如堆疊傾印),否則可能會記錄在多個條目中。正確的模式允許將其捕獲在單個條目中。 如果同時設定了 多行日誌記錄會對所有日誌訊息執行正規表達式解析和匹配,這可能會對日誌記錄效能產生負面影響。 考慮以下日誌串流,其中新的日誌訊息以時間戳記開頭 該格式可以表示為 這會將日誌解析為以下 CloudWatch 日誌事件 支援以下 如果也設定了 多行日誌記錄會對所有日誌訊息執行正規表達式解析和匹配。這可能會對日誌記錄效能產生負面影響。 考慮以下日誌串流,其中每個日誌訊息都應以模式 您可以使用正規表達式 這會將日誌解析為以下 CloudWatch 日誌事件 指定 當同時指定 如果未指定,則容器 ID 將用作日誌串流。 CloudWatch 日誌 API 不支援在日誌名稱中使用 輸出類似於: 預設值為 5 秒。 預設值為 4K。 您必須向 Docker daemon 提供 AWS 憑證才能使用 憑證必須套用允許 awslogs-create-group
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-create-stream
awslogs-create-stream
設定為 false
可停用日誌串流建立。停用後,Docker daemon 會假設日誌串流已存在。這種設定在另一個程序處理日誌串流建立,以避免冗餘的 AWS CloudWatch Logs API 呼叫時很有用。awslogs-create-stream
設定為 false
且日誌串流不存在,則在容器執行期間將日誌儲存到 CloudWatch 將會失敗,並在 daemon 日誌中產生 Failed to put log events
錯誤訊息。$ docker run \
--log-driver=awslogs \
--log-opt awslogs-region=us-east-1 \
--log-opt awslogs-group=myLogGroup \
--log-opt awslogs-stream=myLogStream \
--log-opt awslogs-create-stream=false \
...
awslogs-datetime-format
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 multi-line 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\]' \
...
# First event
[May 01, 2017 19:00:01] A message was logged
# Second event
[May 01, 2017 19:00:04] Another multi-line message was logged
Some random message
with some random words
# Third event
[May 01, 2017 19:01:32] Another message was logged
strftime
代碼代碼 意義 範例 %a
星期幾的縮寫名稱。 週一 %A
星期幾的全名。 星期一 %w
星期幾的十進制數字,其中 0 是星期日,6 是星期六。 0 %d
月份中的日期,以零填充的十進制數字表示。 08 %b
月份的縮寫名稱。 二月 %B
月份的全名。 二月 %m
月份,以零填充的十進制數字表示。 02 %Y
帶世紀的年份,以十進制數字表示。 2008 %y
不帶世紀的年份,以零填充的十進制數字表示。 08 %H
小時(24 小時制),以零填充的十進制數字表示。 19 %I
小時(12 小時制),以零填充的十進制數字表示。 07 %p
上午或下午。 上午 %M
分鐘,以零填充的十進制數字表示。 57 %S
秒,以零填充的十進制數字表示。 04 %L
毫秒,以零填充的十進制數字表示。 .123 %f
微秒,以零填充的十進制數字表示。 000345 %z
UTC 偏移量,格式為 +HHMM 或 -HHMM。 +1300 %Z
時區名稱。 PST %j
一年中的日期,以零填充的十進制數字表示。 363 awslogs-multiline-pattern
awslogs-multiline-pattern
選項使用正規表達式定義多行起始模式。日誌訊息由符合模式的一行和任何不符合模式的後續行組成。因此,匹配的行是日誌訊息之間的分隔符。awslogs-datetime-format
,則會忽略此選項。INFO
開頭INFO A message was logged
INFO Another multi-line 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' \
...
# First event
INFO A message was logged
# Second event
INFO Another multi-line message was logged
Some random message
# Third event
INFO Another message was logged
標籤
tag
作為 awslogs-stream
選項的替代方案。 tag
解釋 Go 模板標記,例如 {{.ID}}
、{{.FullID}}
或 {{.Name}}
docker.{{.ID}}
。有關支援的模板替換的詳細資訊,請參閱 tag 選項文件。awslogs-stream
和 tag
時,為 awslogs-stream
提供的值會覆蓋使用 tag
指定的模板。:
。當使用 {{ .ImageName }}
作為標籤時,這可能會導致一些問題,因為 Docker 鏡像的格式為 IMAGE:TAG
,例如 alpine:latest
。可以使用模板標記來取得正確的格式。要取得映像名稱和容器 ID 的前 12 個字元,您可以使用--log-opt tag='{{ with split .ImageName ":" }}{{join . "_"}}{{end}}-{{.ID}}'
alpine_latest-bf0072049c76
awslogs-force-flush-interval-seconds
awslogs
驅動程式會定期將日誌刷新到 CloudWatch。awslogs-force-flush-interval-seconds
選項會更改日誌刷新間隔秒數。awslogs-max-buffered-events
awslogs
驅動程式會緩衝日誌。awslogs-max-buffered-events
選項會更改日誌緩衝區大小。憑證
awslogs
日誌驅動程式。您可以使用 AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
和 AWS_SESSION_TOKEN
環境變數、預設的 AWS 共享憑證檔案(root 使用者的 ~/.aws/credentials
)或如果您在 Amazon EC2 執行個體上執行 Docker daemon,則可以使用 Amazon EC2 執行個體設定檔來提供這些憑證。logs:CreateLogStream
和 logs:PutLogEvents
操作的策略,如下例所示。{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["logs:CreateLogStream", "logs:PutLogEvents"],
"Effect": "Allow",
"Resource": "*"
}
]
}