解析已导出到 S3 的云观察日志



我使用此处找到的过程将 Cloudwatch 日志导出到 S3:

http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/S3ExportTasks.html

现在我在 S3 中有大量较小的 Cloudwatch 日志文件。有没有一个工具可以用来一次性解析/搜索它们?我正在考虑用于从 Cloudwatch 下载它们的 awslogs 工具之类的东西,但找不到任何东西。

只要它们在 S3 中,你就无法对它们做太多事情。您可以使用 Athena 查询它们,但我不确定它们的格式是否正确。

您可以启动 Elastic MapReduce 集群来解析日志文件。您可以通过 EMR 运行查询,或者可能使用 EMR 将数据插入 Elasticsearch 或 Redshift 中,然后您可以在其中查询数据。

如果您只想对这些文件进行 grep 样式搜索,则需要首先下载所有文件,以便它们位于运行grep工具的计算机的本地文件。

我需要手动 grep 遍历日志文件,并找到了一种方法来做到这一点:

  • 递归方式将日志文件从 S3 下载到本地目录:

aws s3 cp --recursive s3://<bucket name>/<bucket subdir>/ ./

  • 我的 Cloudwatch 日志组中的不同流来自不同的应用程序,具有不同的时间戳格式,因此请使用 zgrep -r 递归地找出我想要的流。
  • 我的日志文件行如下所示:

api-api-0f73ed57-e0fc-4e69-a932-4ee16e28a9e6/000002.gz:2017-02-02T22:48:49.135Z [2017-02-02 22:48:49] Main.DEBUG: Router threshold 99.97 [] {"ip":"10.120.4.27"}

  • 所以使用 sort -sk<key 1>,<key 2> 对第二个和第三个空格分隔的字段([2017-02-0222:48:49] )进行排序
  • 这给了我以下命令:

zgrep -r api-api logfile* | grep "Main.DEBUG" | sort -sk2,3

感谢以下问题提供有关sort的提示。

最新更新