こんにちは、フルスタックエンジニアのryuです。
今回の記事では、CloudWatchのクエリの使い方を解説します。CloudWatchのクエリを使うことで、ログの解析が簡単になります。サーバーのログを解析したい方必見の内容です。
目次
CloudWatchのクエリの使い方とは?
AWSでサーバーのログはどうやって確認するの?
今回の記事では、CloudWatchのクエリの使い方について解説します。ログの解析では、CloudWatch Logs Insightsを使います。クエリを使って、ログの検索を行います。
CloudWatchにログを出力する
まず、CloudWatchにログを出力させます。これは、AWSのサービスごとでやり方が変わります。自動的にログが出力されるものや設定が必要な物もあります。
EC2では、サーバーの状態は自動的にCloudWatchに送信されます。EC2のメトリクスについては、こちらの記事を参考にして下さい。
【AWS】EC2の状態をモニタリングする方法について解説【なぜモニタリングが重要なのか?】
また、サーバーのログを出力させるためには、サーバー内でモジュールをインストールする必要があります。
yum install awslogs
CloudWatchでログを確認する
ログの出力設定が完了したら、CloudWatchでログを確認してみましょう。
まず、CloudWatchのコンソール画面に移動します。
https://console.aws.amazon.com/cloudwatch/home
画面左の「インサイト」を選択します。
こちらが、CloudWatch Logs Insightsの画面になります。
クエリの実行をすることで、ログやグラフを表示することができます。
ログを確認するには、ロググループを選択します。
そして、クエリ構文を入力して「クエリの実行」をクリックします。
「可視化」を押すと、ログが表示されます。ここまでがログの表示方法です。
CloudWatchのクエリ構文
ここかはら、ClouWatchのクエリ構文の使い方について解説します。
基本的なクエリ構文
まず、基本的なクエリ構文です。
fields @timestamp, @message
「@~」で列を指定します。今回はタイムスタンプとメッセージを表示しています。ログを表示したいときは、基本的にはこの2つの列があれば大丈夫ですが、その他のフィールドを指定したいときは、”@”を使ってしてしましょう。
その他のフィールドについては、こちらのドキュメントを参考にしてください。
サポートされるログと検出されるフィールド – Amazon CloudWatch Logs
フィルターを使ってクエリの条件を指定する
次に紹介するのは、フィルターです。以下のように入力します。
fields @timestamp, @message
| filter @message like /検索したい文字/
これで、検索したい文字列が含んでいるログを抽出します。
また、このような書き方もできます。ステータスコードの300,400,500のものを抽出します。”in”を使って以下のように記入します。
fields @timestamp, @message
| filter statusCode in [300,400,500]
フィルターでは”>”などの比較演算子や”or”ブール演算子も使用することができます。さらに正規表現を使うことでさらに細かい制御が可能です。
詳しくはこちらの記事をご覧ください。
CloudWatch Logs Insights クエリ構文 – Amazon CloudWatch Logs
クエリを使ってログをグラフ化する
クエリを使ってログをグラフ化することも可能です。グラフ化するためには、ログを集計する必要があるため、”stats”文を使用します。下記のようにクエリを入力しましょう。
stats avg(myfield) by bin(5m)
5分間隔でmyfieldの平均値を求めます。フィールドを指定することで、フィールドの値をグラフ化することが可能です。
avg()以外にも、sum()、count()、min()、max()などで集計することができます。
こちらのチュートリアルでグラフ化の詳細の方法が記載されています。
チュートリアル: 時系列の視覚化を生成するクエリを実行する – Amazon CloudWatch Logs
CloudWatchのクエリの使い方まとめ
今回の記事では、CloudWatchのクエリの使い方について解説しました。まとめると以下のようになります。
- CloudWatchにログを出力する設定
- fields文を使ってログを出力
- filterなどを使ってログを絞り込む
- statsを使うとログを集計できる
今回は基礎的な部分のみ紹介したので、興味のある方は自分でさまざまなログ解析をしてみましょう。
当ブログでは、AWSやAzureなどクラウド技術やインフラ技術を解説しています!興味のある方は是非ご覧ください。
さらにAWSについて学びたいという方は、こちらの講座がオススメです。初心者の方向けにAWSについて幅広く学ぶことが可能です。
AWS認定ソリューションアーキテクト アソシエイト試験突破講座 – 初心者向け20時間完全コース-
こちらの参考書もオススメです。