AWS CloudWatch |将日志导出到EC2服务器

时间:2017-10-16 11:00:15

标签: amazon-web-services command-line-interface amazon-cloudwatch amazon-cloudwatchlogs

我有" cloudwatch"用于监视我的EC2运行实例的日志的服务。但ColudWatch Web控制台似乎没有允许您从中下载/导出日志数据的按钮。

我是如何通过CLI或GUI实现这一目标的?

2 个答案:

答案 0 :(得分:0)

以编程方式,使用boto3(Python),

log_client=boto3.client('logs')
result_1=log_client.describe_log_streams(logGroupName='<NAME>')

(我不知道EC2实例的日志组名称是什么样的;对于Lambda,它们的格式为'/aws/lambda/FuncName'。尝试抓住您在控制台中看到的名称。

result_1包含两个有用的密钥:logStreams(您想要的结果)和nextToken(对于分页,我会让您查看用法)。

现在result_1['logStreams']是包含logStreamName的对象列表。同样有用的是firstEventTimestamplastEventTimestamp

现在您有了日志流名称,您可以使用

log_client.get_log_events(logGroupName='<name>',logStreamName='<name>'

回复包含nextForwardTokennextBackwardToken用于分页,events用于所需的日志事件。每个活动都包含timestampmessage

我会留给您查找API以查看其他参数可能对您有用。顺便说一句,控制台可以让您将日志流式传输到S3存储桶或AWS的ElasticSearch服务。 ElasticSearch使用起来非常快乐,而Kibana的UI非常直观,即使不学习查询语言也能获得结果。

答案 1 :(得分:0)

您可以使用控制台或AWS CLI将CloudWatch日志下载到Amazon S3。您需要知道日志组名称,来自&amp;到日志,目标存储桶和前缀中的时间戳。亚马逊建议为您的日志使用单独的S3存储桶。创建导出任务后,在(在控制台中)导航 - 日志 - 选择日志组 - 操作 - 将数据导出到S3 - 填写导出详细信息 - 选择导出数据。亚马逊的文档很好地解释了它:http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/S3Export.html。如果您想使用CLI指令,也可以使用CLI指令。我想用CLI你也可以编写你的导出脚本,但你必须以某种方式定义变量,这样你就不会覆盖现有的导出。

如果这是整体AWS灾难恢复计划的一部分,您可能需要查看一些提示&amp;最佳实践,例如亚马逊关于AWS灾难恢复的白皮书,以及NetApp关于使用cloud for disaster recovery的讨论。