次の方法で共有


データ API ビルダーで Azure Log Analytics を使用する

Azure Log Analytics は、アプリ、Azure リソース、VM、コンテナーなどのログを集計する集中ログ プラットフォームです。 データ API ビルダー (DAB) と統合することで、企業はコンプライアンス、ガバナンス、および可観測性の要件を満たすのに役立ちます。 Application Insights (APM に重点を置く) とは異なり、Log Analytics は Kusto クエリ言語 (KQL) のサポートを使用して、より広範なログ集計を提供します。

Log Analytics テレメトリ フローを示す図。

[前提条件]

  • 既存の DAB 構成ファイル。
  • Log Analytics リソースを作成するためのアクセス許可を持つ Azure サブスクリプション。
  • Azure Log Analytics ワークスペースの内容:
    • カスタム テーブル ( _CLで終わる)
    • データ収集規則 (DCR)
    • データ収集エンドポイント (DCE)
  • DAB ホスト (Azure App Service、Container Apps、VM など) で有効になっているマネージド ID。
  • データ API ビルダー CLI。 CLI をインストールする

Azure Log Analytics リソースを設定する

DAB を構成する前に、必要な Azure リソースを作成します。

Log Analytics ワークスペースを作成する

  1. Azure Portal>Log Analytics ワークスペースに移動します
  2. [+ 作成] を選択します。
  3. サブスクリプション、リソース グループ、リージョンを選択します。
  4. ワークスペース名を指定します。
  5. [確認と作成>作成] を選択します。

カスタム テーブルを作成する

Logs Ingestion API のカスタム テーブルは、 _CLで終わる必要があります。

  1. Log Analytics ワークスペースで、[テーブル] に移動 します
  2. [ + 作成>新しいカスタム ログ (DCR ベース) を選択します。
  3. テーブル名を入力します (例: DabLogs_CL)。
  4. 次の列を使用してスキーマを定義します。
    • Time (日時)
    • LogLevel (文字列)
    • Message (文字列)
    • Component (文字列)
    • Identifier (文字列)
  5. を選択してを作成します。

データ収集エンドポイント (DCE) を作成する

  1. Monitor>Data コレクション エンドポイントに移動します。
  2. [+ 作成] を選択します。
  3. サブスクリプション、リソース グループ、リージョンを選択します。
  4. 名前を指定します (例: my-dce)。
  5. [確認と作成>作成] を選択します。
  6. ログ インジェスト エンドポイント URL (たとえば、https://my-dce.eastus-1.ingest.monitor.azure.com) をコピーします。

データ収集規則 (DCR) を作成する

  1. Monitor>データ コレクション ルールに移動します。
  2. [+ 作成] を選択します。
  3. サブスクリプション、リソース グループ、リージョンを選択します。
  4. 名前を指定します (例: my-dcr)。
  5. [データ ソース] で、[カスタム テキスト ログ] を選択します。
  6. 構成:
    • データ収集エンドポイント: DCE を選択します。
    • 宛先: Log Analytics ワークスペース。
    • テーブル: カスタム テーブル (DabLogs_CL)。
  7. [確認と作成>作成] を選択します。
  8. 不変 ID をコピーします (dcr-で始まります)。

認証を構成する

DAB は 、Azure マネージド ID を 使用して Log Analytics に対する認証を行います。 資格情報は構成に格納されません。

マネージド ID を有効にする

az webapp identity assign \
  --name my-app \
  --resource-group my-rg

アクセス許可を割り当てる

DCR のマネージド ID に 監視メトリックパブリッシャー ロールを付与します。

# Get Managed Identity principal ID
PRINCIPAL_ID=$(az webapp identity show \
  --name my-app \
  --resource-group my-rg \
  --query principalId -o tsv)

# Get DCR resource ID
DCR_ID=$(az monitor data-collection rule show \
  --name my-dcr \
  --resource-group my-rg \
  --query id -o tsv)

# Assign role
az role assignment create \
  --assignee $PRINCIPAL_ID \
  --role "Monitoring Metrics Publisher" \
  --scope $DCR_ID

Important

このロールの割り当てがないと、DAB は正しい構成であっても Log Analytics にログを送信できません。

Log Analytics の構成

構成ファイルのazure-log-analyticsの下にruntime.telemetryセクションを追加します。

{
  "runtime": {
    "telemetry": {
      "azure-log-analytics": {
        "enabled": true,
        "dab-identifier": "my-dab-instance",
        "flush-interval-seconds": 10,
        "auth": {
          "custom-table-name": "DabLogs_CL",
          "dcr-immutable-id": "dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
          "dce-endpoint": "https://my-dce.eastus-1.ingest.monitor.azure.com"
        }
      }
    }
  }
}

構成プロパティ

プロパティ Description 既定値 Constraints
enabled Log Analytics 統合を有効または無効にします。 false ブール値
dab-identifier この DAB インスタンスのログ エントリを識別する一意の文字列。 DabLogs 任意の文字列
flush-interval-seconds Log Analytics にフラッシュされるログの頻度 (秒単位)。 5 > 0 にする必要があります
auth.custom-table-name Log Analytics ワークスペースのカスタム テーブル名。 (必須) で終わる必要があります _CL
auth.dcr-immutable-id データ収集規則の不変 ID。 (必須) dcr- で始まる
auth.dce-endpoint データ収集エンドポイントの URL。 (必須) HTTPS URL

Command-line

dab configureを使用して Log Analytics を構成します。

Log Analytics を有効にする

dab configure \
  --runtime.telemetry.azure-log-analytics.enabled true

DAB 識別子の設定

dab configure \
  --runtime.telemetry.azure-log-analytics.dab-identifier my-dab-instance

フラッシュ間隔を設定する

dab configure \
  --runtime.telemetry.azure-log-analytics.flush-interval-seconds 10

カスタム テーブル名を設定する

dab configure \
  --runtime.telemetry.azure-log-analytics.auth.custom-table-name DabLogs_CL

DCR の変更できない ID を設定する

dab configure \
  --runtime.telemetry.azure-log-analytics.auth.dcr-immutable-id dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

DCE エンドポイントを設定する

dab configure \
  --runtime.telemetry.azure-log-analytics.auth.dce-endpoint https://my-dce.eastus-1.ingest.monitor.azure.com

DAB を実行する

構成ファイルを使用して DAB を起動します。

dab start

DAB スタートアップ ログで次の情報を確認します。

Azure Log Analytics is enabled.

動作方法

Log Analytics が有効になっている場合、DAB:

  1. ホストのマネージド ID を使用して Azure に対して認証します。
  2. flush-interval-secondsに基づいてログ エントリをバッチ処理します。
  3. データ収集エンドポイント (DCE) にログを送信します。
  4. DCE は、変換のためにデータ収集規則 (DCR) を介してログをルーティングします。
  5. DCR は、カスタム Log Analytics テーブルにログを取り込みます。

データ フロー

DAB Application
    ↓
ILogger (ASP.NET Core)
    ↓
Log Analytics Logger Provider
    ↓
Managed Identity Authentication
    ↓
Data Collection Endpoint (DCE)
    ↓
Data Collection Rule (DCR)
    ↓
Log Analytics Workspace (Custom Table)

キャプチャされる内容

テレメトリの種類 情報源 例示
痕跡 ILogger DAB での呼び出し スタートアップ ログ、クエリ実行ログ、警告
Errors 例外処理 ランタイム エラー、構成エラー、データベース エラー
コンポーネント情報 DAB 内部構造 ログを生成したモジュール
インスタンスID コンフィギュレーション dab-identifier フィルター処理の値

ログ構造

Log Analytics に送信される各ログ エントリには、次のフィールドが含まれています。

フィールド タイプ Description Example
Time datetime タイムスタンプ (ISO 8601) 2026-01-27T14:30:00Z
LogLevel 文字列 ログの深刻度 InformationWarningError
Message 文字列 ログ メッセージ Request completed successfully
Component 文字列 ログを生成した DAB コンポーネント Azure.DataApiBuilder.Service.Startup
Identifier 文字列 dab-identifier構成からの値 my-dab-instance

Log Analytics のカスタム テーブル列には、サフィックスが追加されます。たとえば、文字列には _s、倍精度浮動小数点数には _d、日時には _t などが追加されます。

Log Analytics でログを照会する

  1. Azure portal で Log Analytics ワークスペースを開きます。

  2. ログに移動し、KQL クエリを実行します。

    DabLogs_CL
    | where Identifier_s == "my-dab-instance"
    | where LogLevel_s in ("Warning", "Error")
    | where TimeGenerated > ago(1h)
    | project TimeGenerated, LogLevel_s, Message_s, Component_s
    | order by TimeGenerated desc
    

クエリの例

レベル別にログをカウントする:

DabLogs_CL
| where TimeGenerated > ago(24h)
| summarize Count=count() by LogLevel_s

特定のコンポーネントでエラーを見つけます。

DabLogs_CL
| where Component_s contains "SqlQueryExecutor"
| where LogLevel_s == "Error"
| project TimeGenerated, Message_s

パフォーマンスとコストに関する考慮事項

バッチ処理の動作

DAB はログをバッチ処理し、 flush-interval-secondsごとに送信します。

  • 5 秒 (既定値): ほとんどのシナリオでバランスが取れた値です。
  • 1 ~ 2 秒: ほぼリアルタイムのログ記録 (API 呼び出しの増加、コストの増加)。
  • 10 ~ 60 秒: API 呼び出しの削減とログの遅延。

コストの最適化

Log Analytics の価格は次に基づいています。

  1. データ インジェスト: 取り込まれた GB 単位。
  2. データリテンション期間: Free レベルの後の 1 か月あたりの GB 単位。

コストを削減する:

  • flush-interval-secondsを増やして、より多くのログをバッチ処理します。
  • 詳細なログを除外するには、ログレベルフィルターを使用します。 詳細については、「ログの 詳細度をカスタマイズする」を参照してください。
  • Log Analytics ワークスペースで適切なデータ保有期間を設定します。

例: ボリュームを減らすためのフィルター処理

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "Default": "Warning",
        "Microsoft": "Error"
      },
      "azure-log-analytics": {
        "enabled": true,
        "flush-interval-seconds": 30,
        "auth": {
          "custom-table-name": "DabLogs_CL",
          "dcr-immutable-id": "dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
          "dce-endpoint": "https://my-dce.eastus-1.ingest.monitor.azure.com"
        }
      }
    }
  }
}

これにより、 警告 ログと エラー ログのみが送信され、ボリュームが大幅に減少します。

データの保持

Log Analytics のデータ保有期間は、ワークスペースごとに構成できます。

レベル 既定の保持期間 最大リテンション
Free レベル 7 日 7 日
従量課金制 30 日間 730 日 (2 年)

リテンション期間を構成する: Log Analytics ワークスペース→使用状況とデータ保有期間推定コスト

ヒント

コンプライアンス要件については、長期保有のために古いログを Azure Storage にアーカイブすることを検討してください。

トラブルシューティング

Log Analytics にログが表示されない

症状: DAB は正常に開始されますが、Log Analytics ワークスペースにログは表示されません。

考えられる原因:

  • 不完全な構成: DABのスタートアップログでエラーを確認してください。すべての必要な認証プロパティ、、を確認してください。

  • マネージド ID が割り当てられない: az webapp identity show --name my-app --resource-group my-rgでマネージド ID が有効になっていることを確認します。 az role assignment list --assignee <principal-id> --scope <dcr-id>でロールの割り当てを確認します。

  • DCE エンドポイントまたは DCR ID が正しくありません:DCE エンドポイントの形式が https://<dce-name>.<region>-1.ingest.monitor.azure.comされていることを確認します。 DCR 不変 ID が dcr-で始まるかどうかを確認します。

  • カスタム テーブルが存在しない: カスタム テーブルは _CLで終わる必要があります。 テーブル スキーマは、ログ構造と一致する必要があります。

エラー: フラッシュ間隔は正である必要があります

原因: flush-interval-seconds0 または負の値に設定されています。

解決方法: flush-interval-seconds を正の整数 (最小 1) に設定します。

DAB ログに "Azure Log Analytics が無効になっています" と表示される

原因: enabledfalse されているか、構成に不足しています。

解決策: 構成で enabled: true を設定します。

Log Analytics と Application Insights

能力 Application Insights Log Analytics
フォーカス アプリケーション パフォーマンスの監視 (APM) ログ集約の一元化
クエリ言語 KQL KQL
Scope 単一アプリケーション アプリ、VM、コンテナー、Azure リソース
利用シーン パフォーマンス、例外、トレース コンプライアンス、ガバナンス、リソース間の相関関係
Authentication 接続文字列 マネージド ID (DCR/DCE 経由)

要求の追跡、依存関係マッピング、パフォーマンス プロファイリングなどの APM 機能が必要な場合は、Application Insights を使用します。 エンタープライズ コンプライアンス要件を持つ複数のリソース間で一元的なログ記録が必要な場合は、Log Analytics を使用します。