2017-10-28 52 views
0

我在这里是一个新手,并请我可怜的英语。 我正在测试aws EC2服务器。我配置了cloudWatch 我知道python boto中的get_log_events或aws cli中的get-log-events命令可以做到这一点。但这些只能部分获取日志事件(仅限3〜4天)。 我想以编程方式获取所有事件。 我一直在寻找几天,但我不能。 请帮帮我。提前致谢。如何获取cloudWatch中的所有事件?

fyi,让我告诉你我的python boto3代码。

enter code here 
logs = boto3.client('logs', 'ap-northeast-2') 
for a1 in logs.describe_log_groups()['logGroups']: 
    a1name = a1['logGroupName'] 
    for a2 in logs.describe_log_streams(logGroupName=a1name)['logStreams']: 
     a2name = a2['logStreamName'] 
     for a3 in logs.get_log_events(logGroupName=a1name, logStreamName=a2name)['events']: 
      lmf = str.split(str(a3['message']), ' ') # log message field 
      print a1name, a2name, lmf[0], lmf[1], lmf[2], lmf[3], lmf[4], lmf[5], lmf[6], lmf[7], lmf[8], lmf[9], lmf[10], lmf[11], lmf[12] 

回答

0

您会在​​中找到响应是分页的。更多结果需要后续请求。

默认情况下,此操作会返回尽可能多的日志事件,以适应1MB的响应大小(最多10,000个日志事件)。您可以通过在随后的调用中指定其中一个令牌来获取其他日志事件。

+0

谢谢你的回答。不过,我也看到了你给我的链接。我不知道如何使用令牌来获得完整的日志。令牌在哪里?我如何创建或启动它?你可以帮我吗? – bsofte

+0

您在logs.get_log_events(logGroupName = a1name,logStreamName = a2name)['events']''中为a3迭代的方式放弃了令牌...您需要捕获并检查* entire *对' get_log_events()',而不仅仅是实际事件的数组。 –

+0

对不起,我迟到了。 感谢你,我找到了方法。 我必须根据get_log_events的第一个结果中的nextBackWardToken或nextForWardToken信息重复执行'get_log_events'方法。 我想发布修改后的代码,但我不能在评论中这样做。 谢谢Michael! – bsofte

相关问题