尝试 Amazon CloudWatch Logs

AWS

我是佐佐木,一名基础设施工程师!

AWS 提供一项名为 CloudWatch 的服务,用于监控 CPU 使用率等指标。CloudWatch
功能丰富,但这次我决定试用一下我特别感兴趣的 CloudWatch Logs。

什么是 CloudWatch Logs?

这项服务可以监控 EC2 和其他应用程序的日志文件,并在发现特定字符串时生成警报。

日志文件监控 - Amazon CloudWatch

目前,我将尝试发送 EC2 上的 Apache 访问日志。

创建 IAM 角色

创建 IAM 角色,将日志文件发送到 CloudWatch Logs。

由于我们将从 EC2 发送日志文件,请选择 Amazon EC2 作为角色类型。

2016-07-13_12h12_44

由于有 CloudWatch Logs 策略可用,所以这次我们将使用它。

选择 CloudWatch 日志完全访问权限
2016-07-13_12h13_13

这就是配置 IAM 所需的全部内容。

然后创建一个分配了 IAM 角色的 EC2 实例。

安装 awslogs

登录到已启动的实例后,安装专用代理 awslogs。

[ec2-user@ip-172-xxx-xxx-xxx ~]$ sudo yum install awslog

接下来,我们将修改配置文件。
默认设置使用北弗吉尼亚区域(us-east-1)的 CloudWatch,因此我们将把它更改为东京区域(ap-northeast-1)。

[ec2-user@ip-172-xxx-xxx-xxx ~]$ sudo vim /etc/awslogs/awscli.conf [default] region = us-east-1 ⇒region = ap-northeast-1

配置代理启动和自动启动设置。

[ec2-user@ip-172-xxx-xxx-xxx ~]$ sudo /etc/init.d/awslogs start 启动 awslogs:[确定]

自动启动设置

[ec2-user@ip-172-xxx-xxx-xxx ~]$ sudo chkconfig awslogs on

现在应该已经发送了!
我们来确认一下!

检查日志传输

如果您查看控制台,您会发现已创建了一个名为“/var/log/messages”的日志组。
2016-07-13_17h42_26

点击后,实例 ID 将输出到日志流中。
2016-07-13_17h01_03

点击此处查看邮件内容。
2016-07-13_17h02_46

你做到了!

为什么要将消息写入 CloudWatch Logs?

这是因为消息功能是默认开启的。

配置信息写在 /etc/awslogs/awslogs.conf 中。

[/var/log/messages] datetime_format = %b %d %H:%M:%S file = /var/log/messages buffer_duration = 5000 log_stream_name = {instance_id} initial_position = start_of_file log_group_name = /var/log/messages

发送 Apache 访问日志

现在让我们尝试将 Apache 访问日志输出到 CloudWatch Logs!

修改服务器上的配置文件。

[ec2-user@ip-172-xxx-xxx-xxx ~]$ sudo vim /etc/awslogs/awslogs.conf

以下内容将陆续添加。

[/var/log/httpd/] 文件 = /var/log/httpd/access_log 缓冲持续时间 = 5000 日志流名称 = {主机名} 初始位置 = 文件开头 日志组名称 = /var/log/httpd

以上设置如下。

文件

指定要推送到 CloudWatch Logs 的日志文件(允许使用通配符,例如 /var/log/httpd/*)。

缓冲持续时间

指定日志事件的批处理周期(最小值和默认值为 5000)

日志流名称

日志流设置(默认值为 instance_id,但这次我们将尝试使用 hostname)

初始位置

您还可以指定数据读取位置 end_of_file,但默认的 start_of_file 通常就足够了。

日志组名称

指定目标日志组。

重启 awslogs 服务以使设置生效。

[ec2-user@ip-172-xxx-xxx-xxx ~]$ sudo /etc/init.d/awslogs restart

检查日志传输

我们现在就检查一下!
再从控制台检查一遍……
2016-07-13_17h42_09

“/var/log/httpd”已添加!
请再次点击它……

2016-07-13_15h13_46

已使用主机名创建日志流!

我还可以查看 Apache 访问日志!
2016-07-13_17h29_03

太简单了!
这次我们只发送了 Apache 访问日志,但也可以监控 HTTP 状态码,并在出现 40x 错误时发出警报。

您还可以将其与 ElasticSearch 结合使用来分析日志。

概括

  • CloudWatch Logs 是一种日志收集服务
  • awslogs代理可用于此目的。
  • 发送起来非常简单。

接下来,我们将尝试使用 AWS Lambda 创建无服务器架构,这目前是一个热门话题!

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
7,029
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者