尝试 Amazon CloudWatch Logs

目录
我是佐佐木,一名基础设施工程师!
AWS 提供一项名为 CloudWatch 的服务,用于监控 CPU 使用率等指标。CloudWatch
功能丰富,但这次我决定试用一下我特别感兴趣的 CloudWatch Logs。
什么是 CloudWatch Logs?
这项服务可以监控 EC2 和其他应用程序的日志文件,并在发现特定字符串时生成警报。
目前,我将尝试发送 EC2 上的 Apache 访问日志。
创建 IAM 角色
创建 IAM 角色,将日志文件发送到 CloudWatch Logs。
由于我们将从 EC2 发送日志文件,请选择 Amazon EC2 作为角色类型。

由于有 CloudWatch Logs 策略可用,所以这次我们将使用它。
选择 CloudWatch 日志完全访问权限

这就是配置 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”的日志组。

点击后,实例 ID 将输出到日志流中。

点击此处查看邮件内容。

你做到了!
为什么要将消息写入 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
检查日志传输
我们现在就检查一下!
再从控制台检查一遍……

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

已使用主机名创建日志流!
我还可以查看 Apache 访问日志!

太简单了!
这次我们只发送了 Apache 访问日志,但也可以监控 HTTP 状态码,并在出现 40x 错误时发出警报。
您还可以将其与 ElasticSearch 结合使用来分析日志。
概括
- CloudWatch Logs 是一种日志收集服务
- awslogs代理可用于此目的。
- 发送起来非常简单。
接下来,我们将尝试使用 AWS Lambda 创建无服务器架构,这目前是一个热门话题!
0