ログ データから情報を抽出するための基本的な Azure Monitor ログ クエリを作成する
Azure Monitor のログ クエリを使って、ログ データから情報を抽出できます。 クエリは、Azure Monitor がキャプチャするログ データを調べる上で重要な部分です。
このサンプル シナリオでは、オペレーション チームが Azure Monitor ログ クエリを使用してシステムの正常性を確認します。
Log Analytics を使用して Azure Monitor ログ クエリを作成する
Azure portal で Log Analytics ツールを検索し、それを使用してサンプル クエリを実行したり、独自のクエリを作成したりすることができます。
Azure portal の左側のメニュー ペインで、[監視] を選択します。
Azure Monitor のページと、[アクティビティ ログ]、[アラート]、[メトリック]、[ログ] などの他のオプションが表示されます。
[ログ] を選択します。
ここにクエリを入力し、出力を確認できます。
Kusto 言語を使用してクエリを作成する
Kusto 照会言語を使用して、Azure で実行されているサービスのログ情報のクエリを実行できます。 Kusto クエリは、データを処理して結果を返すための、読み取り専用の要求です。 クエリをプレーンテキストで記述するには、構文の読み取り、書き込み、自動化を容易にするように設計されたデータフロー モデルを使用します。 データベース、テーブル、列など、Azure SQL Database の階層に似たもので整理されたスキーマ エンティティがクエリで使用されます。
Kusto クエリは、セミコロン (;
) で区切られた一連のクエリ ステートメントで構成されます。 少なくとも 1 つのステートメントが、表形式の式ステートメントです。 表形式の式ステートメントでは、列と行のテーブルとして配置されたデータが書式設定されます。
表形式の式ステートメントの構文には、データ ソースから始まる、ある表形式クエリ演算子から別の表形式クエリ演算子への表形式のデータ フローがあります。 データ ソースは、データベース内のテーブル、またはデータを生成する演算子である場合があります。 その後、データは、パイプ (|
) 区切り記号と共にバインドされた一連のデータ変換演算子を通過します。
たとえば、次の Kusto クエリには単一の表形式の式ステートメントがあります。 そのステートメントは、Events
というテーブルへの参照で始まります。 ここでは、このテーブルをホストするデータベースは暗黙的なものであり、接続情報の一部になっています。 行に格納されているそのテーブルのデータは、StartTime
列の値によってフィルター処理されます。 データは、State
列の値によってさらにフィルター処理されます。 その後、結果として得られる行の数がクエリによって返されます。
Events
| where StartTime >= datetime(2018-11-01) and StartTime < datetime(2018-12-01)
| where State == "FLORIDA"
| count
Note
Azure Monitor に使用される Kusto クエリ言語では、大文字と小文字が区別されます。 通常、言語のキーワードは小文字で記述されます。 クエリ内でテーブルまたは列の名前を使用する場合は、必ず、大文字と小文字を正しく使用してください。
監視対象のコンピューターのイベント ログからキャプチャされるイベントは、1 種類のデータ ソースにすぎません。 Azure Monitor では、他にも多くの種類のデータ ソースが提供されます。 たとえば、Heartbeat
データ ソースでは、Log Analytics ワークスペースに報告するすべてのコンピューターの正常性を報告します。 また、パフォーマンス カウンターからデータをキャプチャし、管理レコードを更新することもできます。
次の例では、各コンピューターの最新のハートビート レコードを取得します。 コンピューターはその IP アドレスによって識別されます。 この例では、arg_max
関数を使用した summarize
集計からは、各 IP アドレスの最新の値を持つレコードが返されます。
Heartbeat
| summarize arg_max(TimeGenerated, *) by ComputerIP