LoginSignup
0
0

More than 1 year has passed since last update.

Cloudwatch Logs上のVPCフローログ解析(Cloudwatch Logs insights)

Posted at

まえがき

仕事でCloudwatch Logs上に出力したVPCフローログから必要な情報を抽出したい、という要望がありました。

S3のフローログを整理したことはありましたが、CWLではやったことなかったので個人的なメモ。
Cloudwatch logs insightsを使用します。

手順

まずquery-idを変数に格納。
開始時間、終了時間はそれぞれUNIXTIMEで指定します。

--query-stringでフィルタパターンを使用します。
詳しくはドキュメント参照。

ID取得
$ query_id=`aws logs start-query \
   --log-group-name {Log_Group_Name} \
   --start-time 1234567890 \
   --end-time 1234567890 \
   --query-string "fields @message | filter @message like /NODATA/" \
   --output text`

取得したquery-idを使用して、出力結果を確認します。
jqで不要な情報(@ptrとか)は無くしました。

ID取得
$ aws logs get-query-results --query-id $query_id | jq -r '.results[] | .[] | select(.field == "@message") | .value'
実行結果
2 123456789123 eni-123456789abcdef - - - - - - - 1234567890 1234567890 - NODATA
2 unknown eni-123456789abcdef - - - - - - - 1234567890 1234567890 - NODATA
2 123456789123 eni-123456789abcdef - - - - - - - 1234567890 1234567890 - NODATA

jqについて

.results[] | .[] は不要じゃね?って感じですが、入れないとエラーになります。
もう少しキレイに書ける方法あれば教えてください。

エラー
$ aws logs get-query-results --query-id $query_id | jq -r '.results[] | select(.field == "@message")'
jq: error (at <stdin>:820): Cannot index array with string "field"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0