2017-10-28 6 views
0

私はここの初心者で、私の貧しい英語をお待ちしています。私はaws EC2サーバーをテストしています。私はcloudWatchを設定しました 私は知っているpython botoのget_log_eventsまたはaws cliのget-log-eventsコマンドはそれを行うことができます。これらはログイベントを部分的にしか取得できません(3〜4日間のみ)。 すべてのイベントをプログラムで取得したい。 私は数日間探していますが、私はできません。 私を助けてください。前もって感謝します。どのようにcloudWatchのすべてのイベントを取得するには?

ちなみに、私はあなたに私の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ログイベント)に収まるログイベントが返されます。後続の呼び出しでトークンの1つを指定すると、追加のログイベントを取得できます。

+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

関連する問題