こんにちは、インフラエンジニアのryuです。
今回は、KQL(キーワードクエリ言語)の使い方を説明します。使い方は、コマンドを入力するだけです。コマンドを入力し、見たいログを表示させましょう。KQLを使うとログの解析が捗ります。
目次
KQLの使い方は?LogAnalyticsでログを表示する
KQLの使い方がよくわからない・・・
KQLはSQLに似た文法で使えます!
今回の記事では、KQLの使い方について解説します。
KQLとは、キーワードクエリ言語の略で、Azureのlog analyticsでログを検索するときに使います。
今回はKQLを使って、LogAnalyticsでログを表示してみようと思います!
準備:LogAnalyticsにログを出力させる
まず、KQLの使い方の前にログをLogAnalyticsに収集する設定を行います。できている方は、先に進んでください。
今回はWebAppのログを表示したいと思います。
手順は下記の2点です。
- LogAnalyticsの作成
- Webappsの診断設定よりLogをLogAnalyticsに出力させる
こちらの記事で具体的な手順を解説しているので参考にしてください。
WebApps以外の他のサービスのログを収集する場合も、診断設定より、「LogAnalyticsへ送信」にチェックを入れるとLogAnalyticsにログが収集できます。
KQLを使ってみる
では、KQLを使いながら説明していきます。まずは簡単なコマンドでログを表示させてみましょう!
まず、「LogAnalytics」→「ログ」をクリックすると、KQLを入力できる画面が表示されます。
クエリを入力する部分に以下のクエリを入力してください。
search "*"
コマンドを入力すると、LogAnalyticsに収集されたログが全て表示されます。ここで注意点が一つあり、全て表示と言っても、過去24時間分しか表示されていません。
下記の「時間の範囲」をクリックして、いつの期間のログを収集したいか、編集してください。
「実行」を押すと、画面下側にログが表示されます。
まずは、簡単なKQLを使ってログを出力することができました。KQLはSQLのように、様々な条件を入力することで、特定のログを出力します。次はその方法を解説します。
KQLで良く使うコマンドを紹介
先ほどは、「search “*”」を使うことで、ログを全て表示できることを紹介しました。
ここからは、KQLに様々な条件を入力して、見たいログだけを出力させるようにしましょう!
whereを使って、条件検索
whereはSQLにもあるので、馴染みのある方が多いと思います。whereとは、 テーブルデータの検索条件を指定するためのものです。
では、使ってみましょう。まず、ログの左側の「v」を押してください。そうするとログの詳細情報が表示されます。
そして、検索したい項目の左側「・・・」をクリックします。そうすると、「・・・を含める」という言葉が表示されるので、そこをクリックします。
そうすると、クエリを入力する部分が以下のようになります。
search "*"
| where CsMethod == "GET"
//where 条件式
これで、GETメソッドのアクセスのみを表示させることができます。他にも、送信元IPで検索したり、エラーのみを検索したりすることができます。
ちなみに、条件式で使える演算子は以下のものを指定できます。
演算子演算子 | 意味 |
== | 等しい |
has | 含む |
<= | 以下 |
>= | 以上 |
distinctを使って、カラムの中身を表示
次は、distinctを使って、カラムの中身を表示する方法を解説します。
以下のように、KQLを入力します。
search "*"
| distinct CIp
CIpはクライアントのIPつまり、アクセスしてきたPCのIPアドレスのことです。これで、CIpの値を一覧で表示できます。
送信元のIPが分かることで、どのPCからアクセスされたか分かります。
その他の使い方については、こちらのドキュメントを参考にしてください。
https://docs.microsoft.com/ja-jp/azure/data-explorer/kusto/concepts/
KQLの勉強用サイト
MicrosoftはKQLの学習用サイトを無料で提供しています。英語ですが、興味のある方は、ぜひやってみてください。
https://azure.microsoft.com/ja-jp/updates/free-query-language-course-la-ai/
また、こちらのQiitaの記事も参考になります。
https://qiita.com/ykataoka/items/689bdec7c467edddc2fd
今回は、KQL(キーワードクエリ言語)の使い方を説明しました。KQLを使いこなせるようになると、ログの解析が捗ります。Azureを使う人はぜひ使ってみてください。