2017-01-17 18 views
0

私はメールで受信CloudWatchの中にラムダ関数ログのこの行があります解析のCloudWatchのログ

/aws/lambda/sns-function | 2017/01/10/[$LATEST]425d9138c8d54ab57l0766ba74fdfd4p | 2017-01-10T00:04:30.734Z | 2017-01-10 00:04:30,734 :: ERROR :: error creating /tmp/tmpkRWp3S_20170110/file20170115.tar.gz: Command `['/bin/tar', '--create', '-z', '--file', u'/tmp/tmpkRWp3S_20170110/file20170115.tar.gz', '--', './']' returned non-zero exit status 1 

として、私は唯一の重要なデータを取得するためにフィルタパターンを置きたい、このdocで説明を。私にとっては、私は上記の行で、私は二回、この情報を持っているので、一度だけの日付を取得したい:2017-01-10T00:04:30.734Z 私はこのようなパターンを使用してみました:

[...,timestamp,level,message=*ERROR*,...] 

をしかし、私はこのエラーを得た:

2017-01-17 10:45:58,091 :: ERROR :: logGroup: '/aws/lambda/sns-function' - logStream: 'None' 
2017-01-17 10:45:58,091 :: ERROR :: An error occurred (InvalidParameterException) when calling the FilterLogEvents operation: Duplicate field '...' 

ログを解析して日付を取得するにはどうすればよいですか?

答えて

1

メトリックフィルタを使用すると、ログイベントの用語、フレーズ、または値を検索して一致させることができます。それらはログイベント(タイムスタンプあなたの場合)から値を削除しないでください。スクリプトから、タイムスタンプを出力から除外することができます(既に含まれているため)。

また、スペース区切りのログイベントにメトリックフィルタを使用しています。デリミタは::と思われますが、この場合は動作しません。メトリックフィルタは、これを単一のフィールドとして解釈します。このメトリックフィルタを使用する場合は、各フィールドを角括弧[]または二重引用符""で囲むことができます。例えば

、次のログイベントのために、このパターン[timestamp, result=ERROR, message, exit_status=*1*]を使用することができます。

[2017-01-10 00:04:30,734] [ERROR] "error creating /tmp/tmpkRWp3S_20170110/file20170115.tar.gz: Command `['/bin/tar', '--create', '-z', '--file', u'/tmp/tmpkRWp3S_20170110/file20170115.tar.gz', '--', './']' returned non-zero" "exit status 1" 

:エラーの原因は、省略記号は一度だけのパターンで起こるべきであるということです。

+0

ありがとうございます。どうすれば '| 'で区切られたpythonで' event [' message '] 'の各フィールドを表示できますか? ? – JavaQueen

+0

それはあなたのコードスニペットを含む新しい質問を投稿し、Pythonのためにそれをタグ付けする方が良いです:) –

+0

いいえ。ここ:http://stackoverflow.com/questions/41697901/format-the-message-of-cloudwatch-logs – JavaQueen