本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要在 EMR Serverless 上監控您的任務進度並故障診斷任務失敗,您可以選擇 EMR Serverless 如何存放和提供應用程式日誌。當您提交任務執行時,您可以將受管儲存、Amazon S3 和 Amazon CloudWatch 指定為記錄選項。
使用 CloudWatch,您可以指定要使用的日誌類型和日誌位置,或接受預設類型和位置。如需 CloudWatch 日誌的詳細資訊,請參閱使用 Amazon CloudWatch 記錄 EMR Serverless。使用受管儲存和 S3 記錄,下表顯示如果您選擇受管儲存、Amazon S3 儲存貯體或兩者,您可以預期的日誌位置和 UI 可用性。
選項 | 事件日誌 | 容器日誌 | 應用程式 UI |
---|---|---|---|
受管儲存 |
存放在受管儲存體 |
存放在受管儲存體 |
支援 |
受管儲存和 S3 儲存貯體 |
存放在兩個位置 |
存放在 S3 儲存貯體 |
支援 |
Amazon S3 儲存貯體 |
存放在 S3 儲存貯體 |
存放在 S3 儲存貯體 |
不支援1 |
1 建議您保持選取受管儲存選項。否則,您無法使用內建應用程式 UIs。
使用受管儲存體記錄 EMR Serverless
根據預設,EMR Serverless 會將應用程式日誌安全地存放在 Amazon EMR 受管儲存體中,最長可達 30 天。
注意
如果您關閉預設選項,Amazon EMR 無法代表您對任務進行故障診斷。
若要從 EMR Studio 關閉此選項,請在提交任務頁面的其他設定區段取消選取允許 AWS 保留日誌 30 天核取方塊。
若要從 關閉此選項 AWS CLI,請在提交任務執行時使用 managedPersistenceMonitoringConfiguration
組態。
{
"monitoringConfiguration": {
"managedPersistenceMonitoringConfiguration": {
"enabled": false
}
}
}
使用 Amazon S3 儲存貯體記錄 EMR Serverless
您必須先在任務執行時間角色的許可政策中包含下列許可,您的任務才能將日誌資料傳送至 Amazon S3。
將 取代為記錄儲存貯體的名稱。amzn-s3-demo-logging-bucket
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-logging-bucket
/*"
]
}
]
}
若要設定 Amazon S3 儲存貯體以儲存來自 的日誌 AWS CLI,請在開始任務執行時使用 s3MonitoringConfiguration
組態。若要這樣做,請在組態--configuration-overrides
中提供下列項目。
{
"monitoringConfiguration": {
"s3MonitoringConfiguration": {
"logUri": "s3://amzn-s3-demo-logging-bucket
/logs/"
}
}
}
對於未啟用重試的批次任務,EMR Serverless 會將日誌傳送至下列路徑:
'/applications/<applicationId>/jobs/<jobId>'
EMR Serverless 7.1.0 版和更新版本支援串流任務和批次任務的重試嘗試。如果您在啟用重試的情況下執行任務,EMR Serverless 會自動將嘗試次數新增至日誌路徑字首,以便您更清楚區分和追蹤日誌。
'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/'
使用 Amazon CloudWatch 記錄 EMR Serverless
當您將任務提交至 EMR Serverless 應用程式時,您可以選擇 Amazon CloudWatch 作為儲存應用程式日誌的選項。這可讓您使用 CloudWatch Logs Insights 和 Live Tail 等 CloudWatch Logs 分析功能。您也可以將日誌從 CloudWatch 串流到 OpenSearch 等其他系統,以進行進一步分析。
EMR Serverless 提供驅動程式日誌的即時記錄。您可以使用 CloudWatch 即時尾部功能或透過 CloudWatch CLI 尾部命令即時檢視日誌。
預設會停用 EMR Serverless 的 CloudWatch 記錄。若要啟用它,請參閱 中的組態AWS CLI。
注意
Amazon CloudWatch 會即時發佈日誌,因此從工作者產生更多資源。如果您選擇較低的工作者容量,可能會對任務執行時間造成的影響增加。如果您啟用 CloudWatch 記錄,我們建議您選擇更大的工作者容量。如果 的交易每秒 (TPS) 率太低,日誌發佈也可能會調節PutLogEvents
。CloudWatch 限流組態適用於所有 服務,包括 EMR Serverless。如需詳細資訊,請參閱 re:post 上的如何判斷 CloudWatch 日誌中的限流?
使用 CloudWatch 記錄所需的許可
您必須先在任務執行時間角色的許可政策中包含下列許可,您的任務才能將日誌資料傳送至 Amazon CloudWatch。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:DescribeLogGroups"
],
"Resource": [
"arn:aws:logs:AWS 區域
:111122223333
:*"
]
},
{
"Effect": "Allow",
"Action": [
"logs:PutLogEvents",
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:DescribeLogStreams"
],
"Resource": [
"arn:aws:logs:AWS 區域
:111122223333
:log-group:my-log-group-name
:*"
]
}
]
}
AWS CLI
若要設定 Amazon CloudWatch 從 存放 EMR Serverless 的日誌 AWS CLI,請在開始任務執行時使用 cloudWatchLoggingConfiguration
組態。若要執行此操作,請提供下列組態覆寫。您也可以選擇性地提供日誌群組名稱、日誌串流字首名稱、日誌類型和加密金鑰 ARN。
如果您未指定選用值,則 CloudWatch 會使用預設日誌串流 /aws/emr-serverless
將日誌發佈至預設日誌群組 /applications/
。applicationId
/jobs/jobId
/worker-type
EMR Serverless 7.1.0 版和更新版本支援串流任務和批次任務的重試嘗試。如果您啟用任務的重試,EMR Serverless 會自動將嘗試次數新增至日誌路徑字首,以便您更清楚區分和追蹤日誌。
'/applications/
<applicationId>
/jobs/<jobId>
/attempts/<attemptNumber>
/worker-type'
以下顯示使用 EMR Serverless 預設設定開啟 Amazon CloudWatch 記錄所需的最低組態:
{
"monitoringConfiguration": {
"cloudWatchLoggingConfiguration": {
"enabled": true
}
}
}
下列範例顯示您在為 EMR Serverless 開啟 Amazon CloudWatch 記錄時,可以指定的所有必要和選用組態。支援logTypes
的值也會列在此範例下方。
{
"monitoringConfiguration": {
"cloudWatchLoggingConfiguration": {
"enabled": true, // Required
"logGroupName": "Example_logGroup", // Optional
"logStreamNamePrefix": "Example_logStream", // Optional
"encryptionKeyArn": "key-arn", // Optional
"logTypes": {
"SPARK_DRIVER": ["stdout", "stderr"] //List of values
}
}
}
}
根據預設,EMR Serverless 只會將驅動程式 stdout 和 stderr 日誌發佈至 CloudWatch。如果您想要其他日誌,您可以使用 logTypes
欄位指定容器角色和對應的日誌類型。
下列清單顯示您可以為logTypes
組態指定的支援工作者類型:
- Spark
-
-
SPARK_DRIVER : ["STDERR", "STDOUT"]
-
SPARK_EXECUTOR : ["STDERR", "STDOUT"]
-
- Hive
-
-
HIVE_DRIVER : ["STDERR", "STDOUT", "HIVE_LOG", "TEZ_AM"]
-
TEZ_TASK : ["STDERR", "STDOUT", "SYSTEM_LOGS"]
-