快速入门:启动时在 EC2 Linux 实例上安装和配置 CloudWatch 日志代理 - Amazon CloudWatch 日志
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

快速入门:启动时在 EC2 Linux 实例上安装和配置 CloudWatch 日志代理

提示

本节中讨论的较旧 CloudWatch 的 Logs 代理即将被弃用。我们强烈建议您改用可以收集日志和指标的新统一 CloudWatch 代理。此外,较旧的 CloudWatch 日志代理需要 Python 3.3 或更早版本,默认情况下,这些版本不会安装在新的 EC2 实例上。有关统一 CloudWatch 代理的更多信息,请参阅安装代 CloudWatch 理

本节的其余部分将介绍使用较旧的 CloudWatch Logs 代理。

启动时在 EC2 Linux 实例上安装较旧的 CloudWatch 日志代理

您可以使用 Amazon EC2 用户数据(Amazon EC2 的一项功能,允许在启动时将参数信息传递给实例)在该实例上安装和配置 CloudWatch 日志代理。要将 CloudWatch 日志代理安装和配置信息传递给 Amazon EC2,您可以在网络位置(例如 Amazon S3 存储桶)中提供配置文件。

不支持配置多个日志源将数据发送到单个日志流。

先决条件

创建用于描述所有日志组和日志流的代理配置文件。这是一个文本文件,描述要监控的日志文件以及要将这些文件上传到的日志组和日志流。代理使用此配置文件并开始监控并上传其中描述的所有日志文件。有关代理配置文件中的设置的更多信息,请参阅 CloudWatch Logs 代理参考

以下是适用于 Amazon Linux 2 的一个示例代理配置文件

[general] state_file = /var/lib/awslogs/state/agent-state [/var/log/messages] file = /var/log/messages log_group_name = /var/log/messages log_stream_name = {instance_id} datetime_format = %b %d %H:%M:%S

以下是适用于 Ubuntu 的一个示例代理配置文件

[general] state_file = /var/awslogs/state/agent-state [/var/log/syslog] file = /var/log/syslog log_group_name = /var/log/syslog log_stream_name = {instance_id} datetime_format = %b %d %H:%M:%S
配置您的 IAM 角色
  1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在导航窗格中,选择 Policies(策略)Create Policy(创建策略)

  3. Create Policy(创建策略)页面上,对 Create Your Own Policy(创建您自己的策略)选择 Select(选择)。有关创建自定义策略的更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的 Amazon EC2 IAM policy

  4. Review Policy(查看策略)页面上,为 Policy Name(策略名称)键入策略的名称。

  5. 对于 Policy Document(策略文档),粘贴以下策略:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::myawsbucket/*" ] } ] }
  6. 选择 Create Policy(创建策略)

  7. 在导航窗格中,选择 Roles(角色)Create New Role(创建新角色)

  8. Set Role Name(设置角色名称)页面上,请键入角色名称,然后选择 Next Step(下一步)

  9. Select Role Type(选择角色类型)部分,选择 Amazon EC2 旁的 Select(选择)

  10. Attach Policy(附加策略)页面的表标题中,依次选择 Policy Type(策略类型)Customer Managed(客户托管)

  11. 选择您创建的 IAM policy,然后选择 Next Step(下一步)

  12. 选择 Create role(创建角色)

    有关用户和策略的更多信息,请参阅 IAM 用户指南中的 IAM 用户和组以及管理 IAM policy

启动新实例并启用 CloudWatch 日志
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 选择 Launch Instance(启动实例)

    有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的启动实例

  3. Step 1: Choose an Amazon Machine Image (AMI)(步骤 1:选择 Amazon Machine Image (AMI))页面上,选择要启动的 Linux 实例类型,然后在 Step 2: Choose an Instance Type(步骤 2:选择实例类型)页面上,选择 Next: Configure Instance Details(下一步:配置实例详细信息)

    确保 Amazon Machine Image (AMI) 中包含了 cloud-init。亚马逊 Linux AMI 以及 Ubuntu 和 RHEL 的 AMI 已经包含云初始化,但是 CentOS 和其他 AMI 可能不包含云初始化。 Amazon Web Services Marketplace

  4. Step 3: Configure Instance Details(步骤 3:配置实例详细信息)页面上,为 IAM role(IAM 角色)选择您创建的 IAM 角色。

  5. Advanced Details(高级详细信息)下,将以下脚本粘贴到 User data(用户数据)的框中。然后,通过将 -c 选项的值更改为您的代理配置文件的位置来更新该脚本:

    #!/bin/bash curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O chmod +x ./awslogs-agent-setup.py ./awslogs-agent-setup.py -n -r us-east-1 -c s3://DOC-EXAMPLE-BUCKET1/my-config-file
  6. 对实例进行任何其他更改,检查启动设置,然后选择 Launch(启动)

  7. 代理运行一段时间后,您应该会在 CloudWatch 控制台中看到新创建的日志组和日志流。

    有关更多信息,请参阅 查看发送到日志的 CloudWatch 日志数据