Azure Log Analytics は、アプリ、Azure リソース、VM、コンテナーなどのログを集計する集中ログ プラットフォームです。 データ API ビルダー (DAB) と統合することで、企業はコンプライアンス、ガバナンス、および可観測性の要件を満たすのに役立ちます。 Application Insights (APM に重点を置く) とは異なり、Log Analytics は Kusto クエリ言語 (KQL) のサポートを使用して、より広範なログ集計を提供します。
[前提条件]
- 既存の 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 ワークスペースを作成する
- Azure Portal>Log Analytics ワークスペースに移動します。
- [+ 作成] を選択します。
- サブスクリプション、リソース グループ、リージョンを選択します。
- ワークスペース名を指定します。
- [確認と作成>作成] を選択します。
カスタム テーブルを作成する
Logs Ingestion API のカスタム テーブルは、 _CLで終わる必要があります。
- Log Analytics ワークスペースで、[テーブル] に移動 します。
- [ + 作成>新しいカスタム ログ (DCR ベース) を選択します。
- テーブル名を入力します (例:
DabLogs_CL)。 - 次の列を使用してスキーマを定義します。
-
Time(日時) -
LogLevel(文字列) -
Message(文字列) -
Component(文字列) -
Identifier(文字列)
-
- を選択してを作成します。
データ収集エンドポイント (DCE) を作成する
- Monitor>Data コレクション エンドポイントに移動します。
- [+ 作成] を選択します。
- サブスクリプション、リソース グループ、リージョンを選択します。
- 名前を指定します (例:
my-dce)。 - [確認と作成>作成] を選択します。
-
ログ インジェスト エンドポイント URL (たとえば、
https://my-dce.eastus-1.ingest.monitor.azure.com) をコピーします。
データ収集規則 (DCR) を作成する
- Monitor>データ コレクション ルールに移動します。
- [+ 作成] を選択します。
- サブスクリプション、リソース グループ、リージョンを選択します。
- 名前を指定します (例:
my-dcr)。 - [データ ソース] で、[カスタム テキスト ログ] を選択します。
- 構成:
- データ収集エンドポイント: DCE を選択します。
- 宛先: Log Analytics ワークスペース。
-
テーブル: カスタム テーブル (
DabLogs_CL)。
- [確認と作成>作成] を選択します。
-
不変 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:
- ホストのマネージド ID を使用して Azure に対して認証します。
-
flush-interval-secondsに基づいてログ エントリをバッチ処理します。 - データ収集エンドポイント (DCE) にログを送信します。
- DCE は、変換のためにデータ収集規則 (DCR) を介してログをルーティングします。
- 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 |
文字列 | ログの深刻度 |
Information、 Warning、 Error |
Message |
文字列 | ログ メッセージ | Request completed successfully |
Component |
文字列 | ログを生成した DAB コンポーネント | Azure.DataApiBuilder.Service.Startup |
Identifier |
文字列 |
dab-identifier構成からの値 |
my-dab-instance |
注
Log Analytics のカスタム テーブル列には、サフィックスが追加されます。たとえば、文字列には _s、倍精度浮動小数点数には _d、日時には _t などが追加されます。
Log Analytics でログを照会する
Azure portal で Log Analytics ワークスペースを開きます。
ログに移動し、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 の価格は次に基づいています。
- データ インジェスト: 取り込まれた GB 単位。
- データリテンション期間: 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-seconds が 0 または負の値に設定されています。
解決方法: flush-interval-seconds を正の整数 (最小 1) に設定します。
DAB ログに "Azure Log Analytics が無効になっています" と表示される
原因: enabled が false されているか、構成に不足しています。
解決策: 構成で 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 を使用します。