aws

CloudWatchのクエリの使い方とは?CloudWatchのを使ってログを解析してみよう【AWS】

こんにちは、フルスタックエンジニアの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時間完全コース-

こちらの参考書もオススメです。

About me
大手メーカのIT部門→上場ベンチャーでインフラエンジニアやってます。エンジニア歴は8年目。 サーバ、ネットワーク、セキュリティ、クラウドについて投稿します。 AI、ARも勉強中です! youtubeでも技術ネタを発信していきます。↓のアイコンよりご覧ください!