Log Analyticsは、Azure Monitor Logs によって収集されたデータのクエリと分析を行うAzure ポータルのツールです。 問題のトラブルシューティング、パフォーマンス傾向の調査、またはAzure リソースの動作を理解する必要がある場合は、Log Analyticsを使用して log クエリを記述して実行します。
このチュートリアルでは、サンプル データを使用して Log Analytics インターフェイスについて説明します。 テーブル スキーマを調べ、基本的なクエリを記述して実行し、結果を操作します。
このチュートリアルでは、次の操作を行います。
- ログ データのスキーマを確認します。
- 単純なクエリを記述して実行し、クエリの時間範囲を変更します。
- クエリ結果のフィルター処理、並べ替え、グループ化を行います。
- クエリ結果のビジュアルの表示、変更、共有を行います。
- クエリと結果の読み込み、エクスポート、コピーを行います。
前提条件
- Azure ポータルにアクセスできるMicrosoft アカウントまたはMicrosoft Entra ID ID。
- Log Analyticsデモ環境 (推奨)。 デモ環境には、このチュートリアルのクエリをサポートするサンプル データが含まれています。 Azureサブスクリプションは必要ありません。
- デモ環境ではなく独自のサブスクリプションを使用する場合は、データを含むLog Analyticsワークスペースが必要です。 テーブルがデモ データと一致しない可能性があります。
注
Log Analyticsには、単純クエリ言語と Kusto クエリ言語 (KQL) の 2 つのモードがあります。 このチュートリアルでは、主に KQL モードを使用します。 KQL クエリを記述する代わりにポイント アンド セレクト インターフェイスを使用する場合は、「
このチュートリアルでは、Log Analytics機能を使用してクエリを作成し、クエリの例を使用します。 クエリの構文を学習し、クエリ自体の直接編集を開始する準備ができたら、 Kusto クエリ言語 (KQL) チュートリアルをお試しください。 そのチュートリアルでは、Log Analytics 内で編集して実行できるサンプル クエリについて説明しています。 これは、このチュートリアルで学習する機能のいくつかを使用しています。
Log Analytics を開く
Log Analytics のデモ環境を開くか、ご自分のサブスクリプションの Azure Monitor メニューから [ログ] を選択します。 この手順により、初期のスコープが Log Analytics ワークスペースに設定されるため、クエリではそのワークスペース内のすべてのデータから選択されます。 Azure リソースのメニューから Logs を選択すると、スコープはそのリソースのレコードのみに絞り込まれます。 詳細については、「 ログ クエリスコープ」を参照してください。
現在のクエリの省略記号を選択して、現在のスコープを検索します。 独自の環境を使用している場合は、別のスコープを選択するオプションが表示されます。 このオプションはデモ環境では使用できません。
検証: クエリ エディターが表示され、スコープにワークスペース名または "Demo" が左上隅に表示されていることを確認します。
テーブル情報の表示
画面の左側には[ テーブル ]タブがあり、現在のスコープで使用できるテーブルを調べます。 これらのテーブルは、既定でソリューション別にグループ化されていますが、グループを変更したり、フィルター処理したりできます。
ログ管理ソリューションを展開し、AppRequests テーブルを見つけます。 テーブルを展開してスキーマを表示するか、名前の上にマウス ポインターを合わせると、そのテーブルに関する詳細情報が表示されます。
[便利なリンク] (この例では AppRequests) の下にあるリンクを選択して、テーブルとその列を文書化する参照を表示します。
AppRequests テーブルにカーソルを合わせ、[実行] を選択すると、テーブル内の過去 24 時間のレコードが表示されます。 このプレビューは、より広範なクエリを実行する前にデータを確認するのに役立ちます。
検証: プレビュー ウィンドウには、 名前、 URL、 DurationMs、 ResultCode、 ClientCity などの列を含むレコードが表示されます。 AppRequests テーブルが ログ管理の下に表示されない場合は、ワークスペースに Application Insights データが構成されていない可能性があります。
クエリを記述する
AppRequests テーブルを使用してクエリを記述します。
テーブル名をダブルクリックするか、テーブル名をポイントして [ エディターで使用 ] を選択してクエリ ウィンドウに追加します。 または、ウィンドウに直接「
AppRequests」と入力します。 IntelliSense は、現在のスコープと KQL コマンドのテーブルの名前を完成するのに役立ちます。[実行] ボタンを選択するか、Shift キーを押しながら Enter キーを押し、クエリ テキスト内の任意の場所にカーソルを置きます。 このクエリは、可能な限り最も簡単で、テーブル内のすべてのレコードを 結果の表示 の制限まで返します。
検証: 結果ウィンドウの右下隅を確認します。 レコード数が 0 より大きいことを確認できるはずです。 結果の最大数については、「 クエリ結果の制限の構成」を参照してください。
独自のクエリを作成する方法については、「 Azure Monitor ログでのログ クエリの概要」を参照してください。
クエリの時間範囲を設定する
すべてのクエリで、設定された時間範囲以内に生成されたレコードが返されます。 既定では、タイム ピッカーは [過去 24 時間] に設定されています。 プレビューの実行後、クエリは明示的に時間範囲を 24 時間に設定します。画面の上部にある [時間範囲 ] ドロップダウンを使用して別の時間範囲を設定するか、クエリの where 演算子 を編集します。 両方の方法を使用する場合、Log Analyticsは 2 つの時間範囲の和集合を適用します。 詳細については、「 時間範囲の指定」を参照してください。
[時間範囲] ドロップダウンから [過去 12 時間 ] を選択して 、時間範囲 を変更します。
where演算子が存在する場合は、クエリから削除します。[実行] を選択すると、結果が返されます。
検証: 右下隅のレコード数は、 表示 制限が構成されているため、前の 24 時間の結果よりも小さくない場合があります。
複数のクエリ フィルターを適用する
フィルター条件を追加して、結果をさらに減らします。 クエリには、必要なレコードを正確に対象とするフィルターをいくつでも含めることができます。
クエリ エディターの右上にあるモード ドロップダウンを選択して、 KQL モード から 単純 モードに切り替えます。 単純モードでは、KQL 構文を記述せずにフィルターを追加します。
[制限の表示] の右側にある [フィルターの追加] アイコンを選択します。
名前フィルターを選択します。 既定の演算子は Select from リスト で、現在の結果のレコードに基づいて値が表示されます。
[ GET Home/Index]\(ホーム/インデックスの取得\) を選択します。 予想される値が表示されない場合は、時間範囲を拡張し、表示制限を増やすか、他のフィルターを削除して、それらのレコードが結果に含まれていることを確認してください。
KQL モードに戻り、適用したフィルターの KQL 構文を表示します。 クエリには、
where列の条件を持つName演算子が含まれるようになりました。
検証: レコード数は、フィルター処理されていないクエリと比較して減少します。 [名前] 列に表示されるすべてのレコードには、GET Home/Index が表示されます。
クエリ結果の分析
Log Analyticsは、クエリの実行以外に結果を操作するための機能を提供します。
レコードを展開して並べ替える
行の左側にあるシェブロン (>) を選択して、レコードを展開してそのすべての列の値を表示します。
任意の列ヘッダーを選択して、その列で結果を並べ替えます。 同じヘッダーをもう一度選択して、昇順、降順、既定の順序を切り替えます。
列ヘッダーからフィルター
結果テーブルでは、列ヘッダーからのExcelのようなフィルター処理がサポートされています。 このメソッドを使用して、迅速な対話型分析を行います。
DurationMs 列ヘッダーの横にある省略記号(...)を選択します。 この選択により、フィルター タブと列オプション タブが表示されます。ここで構成されたフィルターは、クエリを再実行するとクリアされます。
150 ミリ秒を超えるアプリケーション要求にレコードを制限するようにフィルターを設定します。
検証: DurationMs フィルターを適用すると、表示されているすべてのレコードに 150 を超える DurationMs 値が 表示されます。 レコード数が減少します。
クエリ結果の検索
結果ウィンドウの右上にある検索ボックスを使用して、クエリ結果を検索します。
クエリ結果の検索ボックスに「 Texas 」と入力します。
下向き矢印を選択して、検索結果でこの文字列の次のインスタンスを見つけます。
検証: 一致するテキストが結果で強調表示されます。 矢印によるナビゲーションには、一致件数の総数(たとえば「2/12」)が表示されます。
注
検索ボックスは、ブラウザーに表示される結果のみをフィルター処理し、KQL クエリを変更したり、サーバーからデータを再フェッチしたりすることはありません。
データの再構成と集計
視覚化を向上させるために、クエリ結果のデータを再構成して集計します。
結果ペインの右側にある[列] を選択して、[列] サイドバーを開きます。
「Url」 列を 「行グループ」 セクションにドラッグします。 結果はその列ごとに整理され、各グループを折りたたむことができます。
このアクションは、元のクエリから返されたデータを処理します。サーバーからデータを再フェッチすることはありません。 クエリを再実行すると、Log Analyticsは元のクエリに基づいてデータを取得します。
検証: 結果は折りたたみ可能なグループに表示され、各グループの URL ヘッダーが表示されます。 グループ ヘッダーを選択して展開または折りたたみします。
ピボット テーブルを作成する
ページのパフォーマンスを分析するには、ピボット テーブルを作成します。
[列] サイド バーで、[ピボット モード] を選択します。
[Url] と [DurationMs] を選択して、各 URL へのすべての呼び出しの合計時間を表示します。
各 URL の最大呼び出し期間を表示するには、 sum(DurationMs) を選択し、[ 最大] を選択します。
結果ウィンドウで max(DurationMs) 列ヘッダーを選択して、最大呼び出し期間で結果を並べ替えます。
検証: ピボット テーブルには、 最大 (DurationMs) 値を持つ URL ごとに 1 行が表示されます。 結果は、継続時間の長い順に並べ替えられます。
クエリ結果をグラフとして視覚化する
数値データをグラフとして使用するクエリを表示します。 クエリを作成する代わりに、組み込みのクエリ ライブラリのクエリの例を使用します。
既存のテキストのクエリ エディターをクリアするか、現在のクエリ タブの横にあるプラス アイコンを選択して新しいクエリ タブを開きます。
左側のペインで、 [クエリ] を選択します。 このペインには、クエリ エディターに読み込むクエリの例が含まれています。 独自のワークスペースを使用している場合は、複数のカテゴリのさまざまなクエリが表示されます。
[アプリケーション] カテゴリで応答時間傾向クエリを見つけます。 読み込むには、クエリをダブルクリックするか、クエリ名をポイントして詳細情報を表示し、[ エディターに読み込む] を選択します。 空白行は、新しいクエリを以前のクエリから分離します。 KQL では、空白行でクエリの末尾がマークされるため、エディター内の各クエリは個別に実行されます。
新しいクエリ内の任意の場所にカーソルを置き、[ 実行] を選択します。
[結果] タブを切り替えるか、グラフの書式設定を変更して他のオプションを調べます。
検証: グラフには、時間単位のデータ ポイントを含む時系列折れ線グラフが表示されます。 Y 軸には、平均応答時間 (ミリ秒単位) が表示されます。 データに急増が見られた場合は、時間範囲を調整してさらに調査します。
急増が発生したときに通知を受け取るには、アラート ルールを作成します。 アクション バーの [クエリ] ハブの横にある (...) を開き、[+ 新しいアラート ルール] を選択します。 詳細については、「 チュートリアル: Azure リソースのログ検索アラートを作成する」を参照してください。 アラート ルールの作成はデモ環境ではサポートされていませんが、そのしくみを確認するオプションを引き続き確認できます。
結果のエクスポートとコピー
クエリを実行した後、Log Analyticsの外部で使用するために結果をエクスポートまたはコピーします。 アクション バーの [共有 ] メニューから次の操作を行います。
- クエリへのリンクをコピーします。 同じワークスペースにアクセスできる他のユーザーと共有できる現在のクエリへのリンクを作成します。
- クエリ テキストをコピーする: エディターのクエリ テキストをクリップボードに選択します。
デモには一意の URL や保存クエリがないため、デモ環境ではこれらの機能は機能しませんが、独自の環境で試すことができます。
- 結果をコピーする: 結果ウィンドウで行を選択し、右クリックして [ コピー ] を選択するか、 Ctrl + C キーを押します。 スプレッドシートまたはテキスト エディターにデータを貼り付けます。
- [CSV にエクスポート] - [すべての列] または [CSV にエクスポート] - 表示された列を使用してデータをダウンロードします。
- Power BI にエクスポート (M クエリとして) または Power BI にエクスポート (新しいデータセット) を選択すると、データが Power BI で開かれ、さらに分析および視覚化できます。
- Excel で開く: データをエクスポートし、Excel で開きます。 このオプションは、コンピューターにExcelインストールされている場合にのみ使用できます。
アクション バーの [保存] メニューには、クエリを保存したり、ビジュアルをダッシュボードにピン留めしたりするためのオプションがあります。 共有ダッシュボードにビジュアルをピン留めする方法については、Azure Monitor Logs のデータを視覚化するダッシュボードを作成して共有するを参照してください。
一般的な問題のトラブルシューティング
| 問題 | 考えられる原因 | Solution |
|---|---|---|
| デモ環境が読み込まれない | ブラウザーは、ポップアップまたはサード パーティの Cookie をブロックします。 |
portal.azure.comのポップアップを許可します。 プライベートまたはシークレットのブラウザー ウィンドウを試してください。 |
| AppRequests テーブルが表示されない | ワークスペースには Application Insights データがありません。 | デモ環境を使用するか、 Application Insights リソース をワークスペースに接続します。 |
| クエリから 0 個の結果が返される | 選択した時間範囲にデータがないか、フィルターが狭すぎます。 | 時間範囲を展開します (例: 過去 7 日間)。 フィルターを削除して、データが存在することを確認します。 |
| ワークスペースでの "アクセスなし" エラー | アカウントにワークスペースに対する読み取りアクセス許可がありません。 | 管理者に、Log Analytics 閲覧者 ロールを割り当てるように依頼します。 ログ データとワークスペースへのアクセスの管理を参照してください。 |
| [グラフ] タブに [グラフなし] が表示される | クエリは、グラフ化に適した時系列データや数値データを返しません。 | クエリに、summarize句を含むbin(TimeGenerated, ...)演算子が含まれていることを確認します。 |
| [フィルター] タブが空です | 現在のクエリ結果のフィルターは読み込まれません。 | 最初にクエリを実行します。 次に、[ フィルター ] タブを選択し、更新または再読み込みオプションを選択してフィルター値を設定します。 |
| DurationMs フィルターで > 150 ミリ秒では結果が表示されない | ワークスペース データの応答時間が一様に少ない。 | しきい値を下げる (たとえば> ミリ秒試す) か、応答時間が変化するデモ環境を使用します。 |
| ピボット モード オプションが表示されない | 「列」サイドバーが開いていません。 | 結果ウィンドウの右側にある列を選択してサイドバーを開き、>選択します。 |
次のステップ
Log Analytics の使用方法を学んだので、次はログ クエリの使用に関するチュートリアルを完了してください。