我在 Amazon Web Services 中创建了一个启用 Auto Scaling 的 EC2 实例 - 根据 Webload 实例自动创建和终止。如何从自动创建的实例中获取日志?
4 回答
这是 AWS 开发人员论坛上的一个主题,其中包含一些建议:
https://forums.aws.amazon.com/message.jspa?messageID=183672
因为您使用的是 Auto Scaling,所以我认为NFS
和syslog
方法的高可用性不足以处理您的日志负载。
该线程的共识是 S3 是保证存储的最佳选择。如果你走这条路,处理/搜索你的日志可能会变得有点麻烦。
一个创造性的选择是创建一个 MongoDB 服务器/集群,可能通过一个简单的 Web 服务公开,以聚合来自您的n 个应用服务器的大量日志条目。我使用 MongoDB 来存储和分析一些非常庞大的指标/事务数据集(每天数千万到数亿条记录),它的表现令人钦佩。
我个人按照以下方式获取自动缩放实例的日志。
我已经在 ec2 实例上安装了 AWS cloudwatch 代理并将所有日志发送到 aws cloudwatch 日志。根据环境创建了 cloudwatch 日志组。
https://medium.com/tensult/to-send-linux-logs-to-aws-cloudwatch-17b3ea5f4863
另一种方法是您可以配置 AWS 生命周期挂钩。您可以在其中设置挂钩并根据以下 EC2 状态发送日志。
autoscaling:EC2_INSTANCE_LAUNCHING
autoscaling:EC2_INSTANCE_TERMINATING
https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-lifecycle-hook.html
您还可以使用 AWS EFS(弹性文件系统)。创建 aws EFS 并使用 AWS userdata(bootstrap) 将其安装在自动缩放实例上,并提及您的日志路径到您的 Web 服务器中已安装的 AWS EFS 目录。
另一种选择是 AWS s3fs 。上面已经提到过。(但请确保 AWS 不为 s3fs 等第三方工具提供任何支持。)
如果您使用 s3 获取日志文件,如果您期望大量的日志文件,我建议您使用 EMR 在 s3 上根据需要或通过弹性数据管道作为计划作业来搅动日志文件。
最好的方法是在您的实例上安装和配置 aws cloudwatch 日志代理,这是最佳实践,我已经多次实施 ir,它支持自动缩放实例
安装它https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html
这是一个 ubuntu 教程