使用 awslogs 日誌驅動程式 - AWS Batch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 awslogs 日誌驅動程式

根據預設, 會 AWS Batch 啟用awslogs日誌驅動程式將日誌資訊傳送至 CloudWatch Logs。您可以使用此功能,在一個方便的位置檢視與容器不同的日誌,並防止容器日誌佔用容器執行個體上的磁碟空間。本主題可協助您在任務定義中設定awslogs日誌驅動程式。

注意

在 AWS Batch 主控台中,您可以在建立任務定義時,在記錄組態區段中設定日誌awslogs驅動程式。

注意

任務中容器記錄的資訊類型,主要取決於其ENTRYPOINT命令。根據預設,擷取的日誌會顯示您本機執行容器時通常在互動式終端機中看到的命令輸出,也就是 STDOUTSTDERR I/O 串流。awslogs 日誌驅動程式只會將這些日誌從 Docker 傳遞至 CloudWatch Logs。如需 Docker 日誌處理方式 (包括擷取不同檔案資料或串流的替代方法) 的詳細資訊,請參閱 Docker 文件中的檢視容器或服務的日誌

若要將系統日誌從容器執行個體傳送至 CloudWatch Logs,請參閱 搭配 使用 CloudWatch Logs AWS Batch。如需 CloudWatch Logs 的詳細資訊,請參閱 《Amazon CloudWatch Logs 使用者指南》中的監控日誌檔案CloudWatch Logs 配額

AWS Batch JobDefiniton 資料類型中的 awslogs 日誌驅動程式選項

awslogs 日誌驅動程式支援 AWS Batch 任務定義中的下列選項。如需詳細資訊,請參閱 Docker 文件中的 CloudWatch Logs 記錄驅動程式

awslogs-region

必要:否

指定awslogs日誌驅動程式應傳送 Docker 日誌的區域。根據預設,使用的 區域與任務的區域相同。您可以選擇從不同區域中的任務,將所有日誌傳送到 CloudWatch Logs 中的單一區域。這樣做可讓它們從一個位置全部可見。或者,您可以依區域分隔它們,以更精細的方法。不過,當您選擇此選項時,請確定指定的日誌群組存在於您指定的區域中。

awslogs-group

必要:選用

使用 awslogs-group選項,您可以指定日誌驅動程式傳送其日誌串流的目標awslogs日誌群組。如果未指定,aws/batch/job則會使用 。

awslogs-stream-prefix

必要:選用

使用 awslogs-stream-prefix選項,您可以將日誌串流與指定的字首,以及容器所屬 AWS Batch 任務的 Amazon ECS 任務 ID 建立關聯。如果您使用此選項指定前綴,則日誌串流會使用下列格式:

prefix-name/default/ecs-task-id
awslogs-datetime-format

必要:否

此選項會以 Python strftime 格式定義多行開始模式。日誌訊息包含符合模式的行,以及不符合模式的任何下列行。因此,符合的行是日誌訊息之間的分隔符號。

使用此格式的一個使用案例範例是用於剖析輸出,例如堆疊傾印,在其他情形下這可能會記錄在多個項目中。正確的模式可允許將它擷取在單一項目中。

如需詳細資訊,請參閱 awslogs-datetime-format

如果 awslogs-datetime-formatawslogs-multiline-pattern 都設定,則一律以此選項優先。

注意

多行記錄會執行常規表達式剖析並比對所有日誌訊息。這可能會對記錄效能造成負面影響。

awslogs-multiline-pattern

必要:否

此選項使用規則表達式來定義多行開始模式。日誌訊息包含符合模式的行,以及不符合模式的任何下列行。因此,相符的行是日誌訊息之間的分隔符號。

如需詳細資訊,請參閱 Docker 文件中的 awslogs-multiline-pattern

如果同時設定 awslogs-datetime-format,會忽略此選項。

注意

多行記錄會執行常規表達式剖析並比對所有日誌訊息。這可能會對記錄效能造成負面影響。

awslogs-create-group

必要:否

指定您是否希望自動建立日誌群組。若未指定此選項,則預設為 false

警告

不建議使用此選項。我們建議您在每個任務嘗試建立日誌群組時,使用 CloudWatch Logs CreateLogGroup API 動作事先建立日誌群組,增加任務失敗的機會。

注意

執行角色的 IAM 政策必須包含 logs:CreateLogGroup 許可,您才嘗試使用 awslogs-create-group

在任務定義中指定日誌組態

根據預設, 會 AWS Batch 啟用awslogs日誌驅動程式。本節說明如何自訂任務的awslogs日誌組態。如需詳細資訊,請參閱建立單一節點任務定義

下列日誌組態 JSON 程式碼片段具有為每個任務指定的logConfiguration物件。一個是 WordPress 任務將日誌傳送至名為 的日誌群組awslogs-wordpress,另一個是 MySQL 容器將日誌傳送至名為 的日誌群組awslogs-mysql。兩個容器使用的日誌串流前綴皆為 awslogs-example

"logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "awslogs-wordpress", "awslogs-stream-prefix": "awslogs-example" } }
"logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "awslogs-mysql", "awslogs-stream-prefix": "awslogs-example" } }

在 AWS Batch 主控台中,wordpress任務定義的日誌組態指定如下圖所示。

Log configuration interface showing awslogs driver with group and stream prefix options.

在任務定義日誌組態中向awslogs日誌驅動程式註冊任務定義後,您可以提交具有該任務定義的任務,以開始將日誌傳送至 CloudWatch Logs。如需詳細資訊,請參閱教學課程:提交任務