32
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CloudWatch Logs Insightsを試す

Last updated at Posted at 2018-11-28

CloudWatch Logs Insights

今年のRe;Inventで公開されました。
New – Amazon CloudWatch Logs Insights – Fast, Interactive Log Analytics | Amazon Web Services

簡単にまとめると、CloudWatch Logsのロググループに対してSQLを用いたクエリーを投げ、ログを集計することができるサービスです。
今まで、CloudwatchLogs見れたものではなかったのでとても素晴らしいアップデートだと思います。

東京リージョンでもう使えるようになってます。
お値段についてですが

you pay $0.005 per GB in US East (N. Virginia), with similar prices in the other regions.

とあるので、Athena等を使用するときと同様期間で区切って不要なログの走査をしないように気をつける必要があります。

サンプル画面から試すと一瞬なのが

  • VPCフローログ
  • CloudTrailログ

なんかです。

今回はRDSの監査ログを参考に設定を入れてみたので紹介します。

Aurora監査ログの仕様

監査ログの詳細

上記ドキュメントに記載されている通りの形式でログファイルがCloudWatchLogsに連携されます。

今回は連携されたログのObjectセクションに記載されているQueryのうちSELECTの件数を5分毎に集計してダッシュボードに表示してみます。

# 手順
マネジメントコンソールからCloudwatchへ移動し、[ログ - インサイト]を選択する。
スクリーンショット 2018-11-28 18.01.46.png

上部の検索窓から対象のロググループを選択する
今回は監査ログを使用したのでデフォルトだと/aws/rdsからはじまるロググループです。

スクリーンショット_2018-11-28_18_02_53.jpg

Query
fields @message
  | parse "*,*,*,*,*,*,*,*,'*',*" as timestamp, serverhost, username, host, connectionid, queryid, operation, database, object,retcode
    | filter object like /SELECT/
    | fields username, object, timestamp
    | stats count(*) by bin(5m)

もともと入ってきたCloudWatchLogsのフィールドが自動的に
@logStream
@message
@timestamp

と解析されます。その中からログ本文である@messageparseを使用してパースしていきます。
,で区切られてobjectフィールドのみ''でくくられているので、それがわかるように記載します。また、各フィールドの名前をつけます。
その後、objectに対して文字列のパターンマッチングを行い、5分感覚で件数を集計しました。

スクリーンショット 2018-11-28 18.09.43.png

可視化のタブを押すとグラフが表示されます。
Alertの実装なんかは現状ひと手間加えないと無理そうですが、今後拡張されてそのままSNSに通知できるとかになれば手軽でいいですね。

limit of four concurrent CloudWatch Logs Insights queries.

Queryは同時に4つまでしかダメっぽいです

ドキュメント記載が見当たりませんが(2018/11/28 18時現在)
logs配下のstart-queryがAPIエンドポイントになっているようです。CLIを更新したところhelpで確認できました

command
aws logs start-query \ # クエリを開始する時間。
  --log-group-name \ # 対象のロググループ名
  --end-time \ # このクエリがまだ実行されている場合は、このクエリを終了する時間。UNIX秒の秒数で指定
  --query-string # Query文字列(UNIXタイム) 

参考

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/AnalyzingLogData.html
https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_StartQuery.html

32
16
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
32
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?