2015-12-01 9 views

答えて

4

awslogsをご覧ください。

ラムダ/ APIゲートウェイで具体的に作業する場合は、apilogsをご覧ください。

+0

awslogsパッケージは素晴らしいです。今朝、ビジネスチームメンバーが「ログを収集してアイテムを探したい」という問題を解決しました。間違いなく簡単な解決策に行く方法。 –

1

を見ることができるようにtail -fのような機能を取得するためのコマンドが何であるかを

aws logs get-log-events --log-group-name groupName --log-stream-name streamName limit 100 

。あなたはかなり自明シェルスクリプトで機能をエミュレートできます。

#! /bin/sh 

end_time=$(($(date +"%s") * 1000)) 
aws logs get-log-events --log-group-name groupName --log-stream-name streamName --end-time $end_time 

while : 
do 
    start_time=$end_time 
    end_time=$(($(date +"%s") * 1000)) 
    aws logs get-log-events --log-group-name groupName --log-stream-name streamName --start-time $start_time --end-time $end_time 
    sleep 1 
done 

は免責事項:これはWindows上で動作しませんし、ミリ秒単位で時間を得るためのより良い方法があるかもしれません。

+0

あなたの答えをありがとう。サーバー時間と私のローカルマシン時間が異なるので、これは役に立ちましたが、この仕事は私のためのものでした。私は現地時間を変更しようとしましたが、まだそれは正しく同期しません。 – LynAs

+0

CloudWatchログはタイムゾーンと共に保存され、CloudWatch APIはタイムスタンプ(UNIXエポックはミリ秒単位)にUTCを使用します。これは、システムがGMTの東側のタイムゾーンを使用している場合にのみ過去のイベントを取得しますGMTの西側)。また、CloudWatchのログはほとんどの場合、数秒遅れるので、UTCへの時刻を修正してもイベントが返される可能性はかなり低いです(私の経験では)。 –

5

CloudWatchのログを遅延させることができるので(正確な定義によって、すなわちない「リアルタイム」)あなたは、最後のタイムスタンプのために以前のイベントを解析し、そこに次の繰り返しを開始します。

#!/bin/bash 

group_name='<log-group-name>' 
stream_name='<log-stream-name>' 
start_seconds_ago=300 

start_time=$((($(date -u +"%s") - $start_seconds_ago) * 1000)) 
while [[ -n "$start_time" ]]; do 
    loglines=$(aws --output text logs get-log-events --log-group-name "$group_name" --log-stream-name "$stream_name" --start-time $start_time) 
    [ $? -ne 0 ] && break 
    next_start_time=$(sed -nE 's/^EVENTS.([[:digit:]]+).+$/\1/ p' <<< "$loglines" | tail -n1) 
    [ -n "$next_start_time" ] && start_time=$(($next_start_time + 1)) 
    echo "$loglines" 
    sleep 15 
done 

それとも、テールANにしたい場合全体のログ・グループ、ストリーム名なしfilter-log-eventsを使用します。https://gist.github.com/tekwiz/964a3a8d2d84ff4c8b5288d9a703fbce

#!/bin/bash 

group_name='<log-group-name>' 
start_seconds_ago=300 

start_time=$((($(date -u +"%s") - $start_seconds_ago) * 1000)) 
while [[ -n "$start_time" ]]; do 
    loglines=$(aws --output text logs filter-log-events --log-group-name "$group_name" --interleaved --start-time $start_time) 
    [ $? -ne 0 ] && break 
    next_start_time=$(sed -nE 's/^EVENTS.([^[:blank:]]+).([[:digit:]]+).+$/\2/ p' <<< "$loglines" | tail -n1) 
    [ -n "$next_start_time" ] && start_time=$(($next_start_time + 1)) 
    echo "$loglines" 
    sleep 15 
done 

また、私はGitHubのの要点として使用するスクリプトを設置しました。

警告:上記のコード&は、自作のmacOSシステム用に作成されています。私のmacOSシステム用に作成されたもので、ホームブリューとGNU coreutilsでカスタマイズされているので、いくつかのコマンドオプションを調整する必要があります。編集は歓迎です:)

3

ちょうどcwtailが見つかりました。ラムダ関数のCloudWatchログを見るためにはうまくいきます。

は、インストールするには:

npm install -g cwtail 

は、ログ・グループを一覧表示するには:

cwtail -l 

を次に、あなたが選んだ後、 'テール' にグループを記録している:私が作成した

cwtail -f /aws/lambda/ExampleFunction 
関連する問題