DEVELOPER BLOG

開発者ブログ

HOME > 開発者ブログ > 【分析入門】CloudWatch Logs insightでアクセス分析をやってみる - PrismScaler

【分析入門】CloudWatch Logs insightでアクセス分析をやってみる - PrismScaler

1. はじめに

こんにちは!株式会社Definerの阪本です!
今回は、CloudWatch Logs insightでログを用いたアクセス分析を行う方法をご紹介したいと思います。

2. 目的・ユースケース

この記事では、CloudWatch Logs insightでログを用いたアクセス分析をしたいときに、参考になる情報やプラクティスをまとめています。

3. セットアップ

まずは、Cloudwatch Logs Insightを用いてWebサーバのログを分析するためのセットアップをしていきます。
Webサーバはnginxを使っているものとします。
 
①Cloudwatch logs agentのインストール
以下コマンドで、エージェントをインストールします。
 
②設定ファイルの作成
コマンドでウィザードを起動し、設定することもできます。
今回は、以下のようなJsonファイルを直接「/opt/aws/amazon-cloudwatch-agent/bin/config.json」に作成しました。
 
これでセットアップは完了です!
 
## エージェントのインストール
wget https://s3.<region>.amazonaws.com/amazoncloudwatch-agent-<region>/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
sudo rpm -U ./amazon-cloudwatch-agent.rpm

## 設定ファイル作成用のウィザード実行
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard                
 

設定ファイル
{
   "agent": {
      "metrics_collection_interval": 60,
      "region": "ap-northeast-1"
   },
   "logs": {
      "logs_collected": {
         "files": {
            "collect_list": [
               {
                  "file_path": "/var/log/nginx/access.log",
                  "log_group_name": "nginx",
                  "log_stream_name": "accessLog"
               }
            ]
         }
      }
   }
}                  

4. Cloudwatch Logs Insightを用いたログ分析

それでは早速、Cloudwatch Logs Insightでアクセスログを分析してみます。
 
①Cloudwatch Logs Insightへのアクセス
Cloudwatchの画面へ移動し、「ログ」→「ログのインサイト」へ移動します。
 
②取得するログの時間範囲指定
右上のカレンダーマークから、時間範囲を指定します。
 
③nginxログの取得
まずは、対象範囲内の全てのnginxログを表示してみます。
以下クエリを実行しました!
fields @timestamp, @message
| sort @timestamp desc
| parse @message '* - - [*] "* * *" * * "*" "*" "*" "*" "*"' as host, ts, method, path, http, code, size, referer, ua, restime, forwarded, schema
| fields @host,@ts,@method,@path,@code,@referer,@size,@restime                
 

また、以下コマンドでは40X系のエラーごとに集計ができます。
fields @timestamp, @message
| sort @timestamp desc
| parse @message '* - - [*] "* * *" * * "*" "*" "*" "*" "*"' as host, ts, method, path, http, code, size, referer, ua, restime, forwarded, schema
| fields @host,@ts,@method,@path,@code,@referer,@size,@restime
| filter code like /40*/
| stats count(host) by code                  

5. 引用・参考記事

6. 独自ソリューション「PrismScaler」について

・ PrismScalerは、開発・運用を要さずにたった3ステップで、AWSやAzure、GCPなどのマルチクラウド基盤構築を実現するWebサービスです。
・ クラウド基盤にまつわる「自動構築」「自動監視」「問題検知」「構成可視化」などの効率化を実現し、クラウドエンジニア、SRE/DevOpsエンジニアが行う泥臭く大変な作業を肩代わりするソリューションです。
・ クラウド基盤構築/クラウド移行や、クラウドの保守運用・コスト最適化など幅広い利用シーンを想定しており、IaaSやPaaSを適切に組み合わせた数百を超える高品質な汎用クラウド基盤を容易に実現できます。
 

7. お問合せ

本記事では、入門編として有益な情報を無料公開しています。ご相談やお問い合わせは「株式会社Definer」へ。

8. Definerに関して。

・ Definer Incは、ITの上流から下流まで一気通貫のワンストップソリューションをご提供しております。
・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。
・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。
・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。