Open1

Azureログ

エセジニアエセジニア

Azure Monitor Logs(Log Analytics)で使用されるクエリ言語はKusto Query Language(KQL)と呼ばれます。KQLを使用してログデータをクエリする際の基本的な構文と一般的な操作について説明します。

基本構文
テーブルの指定

テーブル名
フィルタリング

テーブル名
| where 条件
列の選択

テーブル名
| project 列1, 列2, ...
集計

テーブル名
| summarize 集計関数() by 列
並べ替え

テーブル名
| order by 列 asc/desc
制限

テーブル名
| limit 数
例を用いた詳細な説明

  1. テーブルの指定
    テーブルからすべてのデータを取得します。

AppServiceAppLogs
2. フィルタリング
特定の条件に一致するデータをフィルタリングします。

AppServiceAppLogs
| where CustomLevel == "Error"
3. 列の選択
必要な列だけを選択します。

AppServiceAppLogs
| project CustomLevel, _ResourceId, TimeGenerated, Message
4. 集計
データを集計します。例えば、ログレベルごとのログの数を集計します。

AppServiceAppLogs
| summarize count() by CustomLevel
5. 並べ替え
データを特定の列で並べ替えます。

AppServiceAppLogs
| order by TimeGenerated desc
6. 制限
取得する行数を制限します。

AppServiceAppLogs
| limit 10
組み合わせたクエリの例
以下は、Errorレベルのログをフィルタリングし、必要な列を選択し、最新のログから順に10件取得するクエリの例です。

AppServiceAppLogs
| where CustomLevel == "Error"
| project CustomLevel, _ResourceId, TimeGenerated, Message
| order by TimeGenerated desc
| limit 10
よく使われる関数と操作
summarize: データを集計します。

| summarize count() by CustomLevel
extend: 新しい列を追加します。

| extend NewColumn = 列1 + 列2
join: 複数のテーブルを結合します。

テーブル1
| join kind=inner (テーブル2) on 共通列
parse: 特定の形式の文字列を解析します。

| parse 列 with "prefix" 解析列 "suffix"
mv-expand: 配列やマルチバリュー列を展開します。

| mv-expand 配列列
まとめ
KQLは強力で柔軟なクエリ言語であり、Azure Monitor Logsでのデータ分析に非常に役立ちます。基本的な構文と操作を理解することで、ログデータを効果的にクエリし、必要な情報を迅速に取得することができます。