解析Cloudwatch日志已导出到S3

时间:2017-02-02 23:49:44

标签: amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

我需要手动浏览日志文件,并找到了一种方法:

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

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

  • 我的Cloudwatch日志组中的不同流来自具有不同时间戳格式的不同应用程序,因此请使用zgrep -r以递归方式格式化。{/ li>
  • 我的日志文件行如下所示:

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

感谢以下question有关sort的提示。