如何将日志文件发送到 AWS CloudWatch

可以使用 AWS CloudWatch 从 AWS EC2 实例中收集日志。如 Web 服务器上常见的 Apache2 访问和错误日志等文件,或者任何日志文件。如果你在负载平衡器后面有一组扩展的实例,这特别有用。CloudWatch 不需要连接到每个实例并使用 grep 手动搜索日志,而是将日志集中到一个日志流中,允许你从一个地方搜索所有日志文件。例如,我们在负载均衡器后面有几个 EC2 实例来运行我们的主平台 API,它们都运行 Apache2,此时我们将 Apache2 错误日志的内容发送给 CloudWatch。即使只有几台服务器,也比单独登录每台服务器并使用 grep 命令搜索每个文件要容易得多。如果发生问题,我们能够在 AWS 控制台中看到所有的日志,而不需要浪费时间登录所有的服务器。要在Ubuntu 上设置 CloudWatch,需要做以下工作。

  • 创建一个新的 IAM 角色(仅此一次)
  • 将 IAM 角色附加到 EC2 实例上。
  • 安装并配置 CloudWatch 代理

创建一个新的 IAM 角色

要允许 EC2 实例与 CloudWatch 通信,您首先需要创建一个 IAM 角色。只需要做一次这个操作,可以在创建后跳过此步骤。

  1. 打开 IAM 控制台。从菜单中,选择角色,然后点击创建角色按钮
  2. 选择将使用此角色的服务下,选择 EC2 并点击 Next: Permissions 按钮。
    在这里插入图片描述
  3. 搜索CloudWatchAgentServerPolicy策略,选中复选框并单击Next: Tags
    在这里插入图片描述
  4. 如果需要,可以添加标签。点击 Next: Review
  5. 输入角色名称(例如:CloudWatchAgentServerRole)。然后
    单击创建角色

附加 IAM 角色

要将IAM角色附加到 EC2 实例,您可以通过AWS 控制台或通过 AWS 命令行接口(CLI)来完成:
1.使用 AWS 控制台
转到 EC2仪表板,从菜单中选择实例,并选中要从 EC2 实例流转日志旁边的复选框。要附加 IAM 角色,请单击"操作"下拉菜单,然后选择实例设置 > 附加/替换 IAM 角色。
在这里插入图片描述
搜索并选择上面创建的 IAM 角色(例如CloudWatchAgentServerRole),然后单击应 用以附加 IAM 角色。
在这里插入图片描述
2.使用的 AWS CLI命令是在1.11.46版本中添加到 AWS CLI 中的,所以要确保使用正确的版本(可以用aws --version检查版本)。

$ aws ec2 associate-iam-instance-profile --instance-id YourInstanceId --iam-instance-profile Name=CloudWatchAgentServerRole

安装 CloudWatch 代理

现在一切就绪,连接到要记录数据的 EC2 实例,并运行以下几个命令。首先是从 S3 下载 CloudWatch Agent(以下是针对 AMD64 Ubuntu 的,如果想下载Centos、Debian等,请在这里查看完整列表)。

$ wget https://s3.amazonaws.com/amazoncloudwatchagent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb

使用下面的命令安装:

$ sudo dpkg -i -E ./amazon-cloudwatch-agent.deb

安装好后,在启动之前需要进行配置。有两种方法可以实现,使用向导,向导会询问一系列问题并生成配置文件,或者手动添加配置文件。由于这里只是为了验证将一个文件记录到 CloudWatch,而且每个 EC2 实例上的文件都是一样的,手动添加配置文件很简单。

1 手动创建 config.json

日志 agent 使用的配置文件在/opt/aws/amazon-cloudwatchagent/bin/config.json。使用编辑器(如 vim)来创建和编辑一个包含以下内容的文件,如:

sudo vim /opt/aws/amazon-cloudwatch-agent/bin/config.json
{
     "agent": {
         "run_as_user": "root"
     },
     "logs": {
         "logs_collected": {
             "files": {
                 "collect_list": [
                     {
                         "file_path": "/var/log/apache2/error.log",
                         "log_group_name": "apache-error-log",
                         "log_stream_name": "{instance_id}"
                     }
                 ]
             }
         }
     }
 }

配置文件中最重要的部分是 file_path。这是服务器上你想收集数据的日志文件的路径。/var/log/apache2/error.log 是 Ubuntu 上 Apache 的默认错误日志。log_group_namelog_stream_name 选项只是用来分别命名 CloudWatch 中的日志组和日志流。我建议在log_stream_name 中保留{instance_id},这有助于识别是哪个 EC2 实例发送的日志数据。

2 向导

启动向导:

$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agentconfig-wizard

日志代理可以用来收集系统级指标,会被问到这些问题,可以忽略这些问题,因为它们与收集日志无关。如果确实使用了向导,你可以随时生成配置文件,随后手动将其添加到任何其他实例中(按照上面的步骤)。

开启 agent

运行以下命令来运行 agent。CloudWatch Agent 与 systemd 集成,因此它将在重启后自动启动。

$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s

查看日志

一旦正在查看的日志文件中写入了数据,我们就可以在 CloudWatch 中找到。转到 CloudWatch 概述 并从菜单中选择日志。应该可以看到在配置中使用的日志组的标签(例如:apache-error-log)。
在这里插入图片描述
点击日志组名称查看日志流。每个日志流都使用 EC2 实例 ID,从而可知是哪个 EC2 实例记录了数据:
在这里插入图片描述
要搜索日志,单击搜索日志组按钮。在过滤器文本框中,输入一个检索条件以一次性搜索 所有 日志文件:
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AWS CloudWatch是一项监控和管理AWS资源和应用程序的服务。它可以收集来自AWS资源和应用程序的指标和日志数据,以及监控AWS资源的状态和性能。以下是AWS CloudWatch的详细说明: 1. 监控:CloudWatch可以监控AWS资源(例如EC2实例,RDS数据库实例等)的状态和性能,并生成指标数据。这些指标数据可以用来观察系统运行状况,识别和解决问题。 2. 日志CloudWatch Logs可以收集、监控和存储应用程序和系统日志。用户可以使用CloudWatch Logs来分析日志数据,查找故障和安全事件,以及生成指标数据。 3. 仪表板:用户可以使用CloudWatch仪表板创建自定义可视化仪表板,以查看指标数据和日志数据。用户可以将多个指标数据和日志数据放在同一个仪表板上,以便更轻松地监控系统状态和性能。 4. 报警:用户可以使用CloudWatch报警创建自定义报警,以在系统状态或性能出现异常时接收通知。用户可以定义报警触发条件,并选择通知方式(例如电子邮件、SMS等)。 5. 事件:CloudWatch Events可以监视AWS资源的状态和性能,并在特定事件发生时触发自定义操作。例如,用户可以配置CloudWatch Events在EC2实例启动时自动运行脚本。 总之,AWS CloudWatchAWS资源和应用程序的全面监控和管理服务,它可以收集、监控和存储指标数据和日志数据,并帮助用户识别和解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值