LoginSignup
1
0

More than 3 years have passed since last update.

cloudwatch logsに吐き出したapache logをいい感じに集計する

Last updated at Posted at 2019-06-21

はじめに

だいぶ前の話ですが、2018年11月に「Amazon CloudWatch Logs Insights」がリリースされました。
ざっくりいうと、SQLっぽいクエリでCloudWatch Logsを集計できる。というものです。

使い方

AWSブログより
https://aws.amazon.com/jp/blogs/news/new-amazon-cloudwatch-logs-insights-fast-interactive-log-analytics/

  • AWS CloudWatchの右メニューから「インサイト」を選択
  • ページトップにある虫眼鏡テキストから対象ログを選択、その右から期間を指定
  • クエリ入力欄に集計条件を入力
  • 「クエリの実行」ボタンを押下

今回はWebサーバのApacheログを指定し、実際に集計してみます。

fields @message
| parse '* * - - [*] "* * *" * * "*" "*" "*" "*" "*"' as ip1, ip2, time, httpVerb, url, protcol, statusCode, size, refer, ua, nanka1, nanka2, nanka3
| filter statusCode != 200
| stats count(*) as cnt by statusCode
| sort cnt desc
  • 対象ログによって、フィールドが定義されています。利用できるフィールドは画面右側の「クエリのヘルプ」から確認できます。今回はApacheログそのものが入っている @message をfields句で指定します。
  • 指定したフィールドのフォーマットをparse句で指定します。サーバーによってログフォーマットが異なると思いますのでご注意を。
  • filter句で抽出条件があるなら指定します。
  • stats句で集計方法および集計対象(SQLで言うところのgroup by句)を指定します。
  • ソート指定があればsort句で。limitも使えます。

実行結果はこんな感じ
指定した時間内でHTTPステータス(200以外)の件数を集計しています。
image.png

おわりに

APIも提供されているので応用すれば、Lambdaとかと組み合わて色々できるハズです!

1
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
1
0