尝试 Amazon CloudWatch Logs
目录
这是基础设施工程师指原!
AWS 有一项名为 CloudWatch 的服务,可以监控 CPU 使用情况等。
CloudWatch有各种各样的功能,但这次我尝试了CloudWatch Logs,我对此很感兴趣。
什么是 CloudWatch Logs?
该服务允许您监视 EC2 和其他应用程序的日志文件,并在确认特定字符串时生成警报。
现在,我将尝试发送EC2上的apache的访问日志。
创建 IAM 角色
创建 IAM 角色以将日志文件发送到 CloudWatch Logs。
由于日志文件将从 EC2 发送,因此选择 Amazon EC2 作为角色类型。
CloudWatch Logs 策略可用,因此我们这次将使用它。
选择 CloudWatchlogsFullAccess
这就是配置 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 [默认] 区域 = us-east-1 ⇒区域 = ap-northeast-1
启动代理并配置自动启动设置。
[ec2-user@ip-172-xxx-xxx-xxx ~]$ sudo /etc/init.d/awslogs start 启动 awslogs: [ OK ]
自动启动设置
[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 buffer_duration = 5000 log_stream_name = {主机名} 初始位置 = 文件起始位置 log_group_name = /var/log/httpd
这就是上面设置的内容。
文件
指定要推送到 CloudWatch Logs 的日志文件(也可以使用 /var/log/httpd/* 等通配符规范。)
缓冲区持续时间
指定日志事件的批量周期(5000是最小值和默认值)
日志流名称
日志流设置(默认是instance_id,但这次我将使用主机名)
初始位置
还有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来实现无服务器架构,这是一个热门话题!