2017-10-28 2 views
0

나는 여기 뉴비 (newbee)이고 영어 불쌍한 영어를 기쁘게 해드 리고있다.aws EC2 서버를 테스트하고 있습니다. 나는 cloudWatch를 구성했다. 파이썬 boto에서 get_log_events를, aws cli에서 get-log-events 명령으로 그렇게 할 수 있음을 알고있다. 그러나 이것들은 부분적으로 만 로그 이벤트를 얻을 수 있습니다 (3 ~ 4 일만). 모든 이벤트를 프로그래밍 방식으로 가져 오려고합니다. 나는 며칠 동안 수색했지만 나는 할 수 없다. 도와주세요. 미리 감사드립니다.cloudWatch에서 모든 일정을 가져 오는 방법은 무엇입니까?

fyi, 내 파이썬 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

documentation for get_log_events()에는 응답의 페이지가 매겨집니다. 결과가 많으면 후속 요청이 필요합니다.

기본적으로이 작업은 응답 크기가 1MB (최대 10,000 개의 로그 이벤트)에 들어갈 수있는 로그 이벤트를 반환합니다. 후속 호출에서 토큰 중 하나를 지정하여 추가 로그 이벤트를 가져올 수 있습니다.

+0

감사합니다. 그러나, 나는 또한 당신이 나에게 준 링크를 보았다. 토큰을 사용하여 전체 로그를 얻는 방법을 모르겠습니다. 토큰은 어디에 있습니까? 어떻게 만들거나 시작할 수 있습니까? 너 나 좀 도와 줄 수있어? – bsofte

+0

logs.get_log_events (logGroupName = a1name, logStreamName = a2name)에서 a3을 반복하는 방법으로 토큰을 삭제합니다. [ 'events']'... '전체 응답을 캡처하여 검사해야합니다. get_log_events()', 실제 이벤트의 배열뿐만 아니라. –

+0

죄송합니다. 의견에 늦었습니다. 당신 덕분에, 나는 길을 발견했습니다. get_log_events의 첫 번째 결과에서 nextBackWardToken 또는 nextForWardToken 정보에 따라 'get_log_events'메소드를 반복해서 실행해야했습니다. 수정 된 코드를 게시하고 싶지만 댓글에서 수정할 수는 없습니다. 마이클 감사합니다! – bsofte

관련 문제