Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
如何将 Amazon EMR 应用程序日志推送到 CloudWatch?
我想将 Amazon EMR 版本 5.30.0 及更高版本的 Amazon EMR 应用程序日志推送到 Amazon CloudWatch。
简短描述
使用 CloudWatch 代理从 Amazon Elastic Compute Cloud (Amazon EC2) 实例收集指标和日志。然后,配置 Amazon EMR 集群实例以将应用程序日志发布到 CloudWatch。
解决方法
先决条件:
创建配置文件
要从您的 Amazon EMR 实例推送特定的应用程序日志,请使用以下示例之一创建配置文件。
在所有节点上推送 YARN 应用程序的日志
以下示例配置文件从每个 Amazon EMR 实例推送容器日志:
{ "agent": { "metrics_collection_interval": 300, "run_as_user": "yarn" }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/var/log/hadoop-yarn/containers/application_*/container*/*", "log_group_name": "/emr/applications/", "log_stream_name": "{instance_id}-{ip_address}", "publish_multi_logs" : true } ] } } } }
**注意:**将 /var/log/hadoop-yarn/containers/application_*/container*/* 替换为您的文件路径位置。
在主节点上推送 YARN 和 Hive Server 2 应用程序的日志
以下示例配置文件从 EMR 主节点推送 Yarn 资源管理器日志和 Hive 服务器日志:
{ "agent": { "metrics_collection_interval": 300, "run_as_user": "hadoop" }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/mnt/var/log/hadoop-yarn/hadoop-yarn-resourcemanager-*", "log_group_name": "/emr/master/logs", "log_stream_name": "{instance_id}-{ip_address}-resourcemanager.log" }, { "file_path": "/mnt/var/log/hive/hive-server2.log", "log_group_name": "/emr/master/logs", "log_stream_name": "{instance_id}-{ip_address}-hive-server2.log" } ] } } } }
**注意:**将 /mnt/var/log/hadoop-yarn/hadoop-yarn-resourcemanager-* 替换为您的文件路径位置。
将配置文件上传到 S3 存储桶
将配置文件上传到 Amazon Simple Storage Service (Amazon S3) 存储桶。
**注意:**Amazon EMR 集群必须拥有 AWS Identity and Access Management (IAM) 权限才能访问 S3 存储桶。
启动 Amazon EMR
作为 Amazon EMR 引导操作的一部分,运行以下脚本来配置 CloudWatch 代理并启动 CloudWatch 代理进程:
# == Install CloudWatch Agent == echo "=================== BootstrapActions: Install CloudWatch Agent ===================" sudo yum install amazon-cloudwatch-agent -y sudo amazon-linux-extras install collectd -y # Copy config file on the instance sudo aws s3 cp s3://<your-s3-path>/config.json /opt/aws/amazon-cloudwatch-agent/bin/config.json # Start the agent with the created config file sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -s -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json # Status CW Agent echo "Status CW Agent" sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
**注意:**将 s3://<your-s3-path>/config.json 替换为您的环境路径。
(可选)提交 Spark 应用程序
要生成示例应用程序日志,请从 Amazon EMR 集群领导者节点运行以下命令以启动 Spark 应用程序:
spark-submit --executor-memory 1g --class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 10
使用 CloudWatch 控制台监控 CloudWatch Logs
- 打开 CloudWatch 控制台。
- 在导航窗格中的 Logs(日志)下,选择 Log groups(日志组)。
- 根据配置文件选择要查看的日志组。
- 如果您使用前面示例中的示例 config.json 文件,请完成以下任务之一:
要查看应用程序日志,请选择 /emr/applications。
要查看领导者日志,请选择 /emr/master/logs。
**注意:**仅当您在日志组上配置留存策略时,CloudWatch 事件日志才会自动删除。您还可以配置留存设置以优化成本。有关详细信息,请参阅更改 CloudWatch Logs 中的日志数据留存。
(可选)使用 Systems Manager 在 Amazon EMR 上安装 CloudWatch 代理
**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
使用 AWS Systems Manager 存储代理文件内容。然后,在启动 CloudWatch 代理时引用 Systems Manager 文件。
-
使用 Systems Manager 控制台或 AWS CLI 创建 Systems Manager 参数。然后,存储代理文件内容。以下示例使用 AWS CLI 创建参数:
aws ssm put-parameter \ --name "AmazonCloudWatch-Config.json" \ --value "{ "agent": { "metrics_collection_interval": 300, "run_as_user": "yarn" }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/var/log/hadoop-yarn/containers/application_*/container*/*", "log_group_name": "/emr/applications/", "log_stream_name": "{instance_id}", "publish_multi_logs" : true } ] } } } }" \ --type String
**注意:**将 /var/log/hadoop-yarn/containers/application_*/container*/* 替换为您的文件路径位置。在前面的示例中,配置文件推送来自每个 Amazon EMR 实例的容器日志。有关 Systems Manager 参数的详细信息,请参阅创建 Systems Manager 参数。
-
更新引导操作脚本以引用参数:
# Start the agent with the created config file sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -s -m ec2 -c ssm:AmazonCloudWatch-Config.json
相关信息

相关内容
- AWS 官方已更新 10 个月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 个月前
- AWS 官方已更新 5 个月前