効果的なログ記録と監視は、Databricks Apps のセキュリティ イベントを検出して対応するのに役立ちます。 アプリは、アプリケーション レベルのログとプラットフォーム監査ログの両方を生成します。このログは、診断、パフォーマンス追跡、およびセキュリティ分析に使用できます。
アプリケーション ログ
Databricks Apps UI またはアプリの URL を使用してログを使用できるようにするには、アプリが stdout と stderrに出力を書き込む必要があります。
次の方法でアプリケーション ログにアクセスします。
- アプリのUI:標準出力とエラーを見るには 、アプリのログ タブをクリックしてください。 詳細については、「 Databricks アプリの詳細を表示する」を参照してください。
-
直接 URL: アプリの URL に
/logzを追加します。 たとえば、アプリの URL がhttps://my-app-1234567890.my-instance.databricksapps.comされている場合、ログはhttps://my-app-1234567890.my-instance.databricksapps.com/logzで使用できます。
注
Azure Databricksは、アプリのコンピューティングがシャットダウンしてもログを保持しません。 永続的なログ記録を行う場合は、外部ログ サービスと統合するか、Unity カタログのボリュームまたはテーブルにログを書き込みます。
ログのエントリーはソースごとにグループ化されています。 ログタブでは、ソースフィルターを使って各ソースのエントリーを表示または非表示します:
- アプリ:あなたのアプリからの標準出力です。
- システム:展開や起動など、アプリのライフサイクルに関するプラットフォームメッセージ。
- ビルド:依存関係のインストールとアプリの構築から出力します。
- HTTP:アプリが送るリクエストのHTTPアクセスログです。 HTTPアクセスログを参照してください。
HTTPアクセスログ
Databricks Appsは、アプリが提供する各リクエストごとにHTTPアクセスログエントリを記録します。 これらのエントリは、ログタブのHTTPソースの下に、/logzURLに、アプリの標準出力とエラーとともに表示されます。
アクセスログは認証済みおよび未認証のリクエストの両方を記録し、承認に失敗したリクエストなど、アプリに届く前に拒否されたリクエストも含まれます。 拒否されたリクエストはログに残るため、失敗した認可試行をセキュリティイベントとして監査できます。
記録される内容には以下の制限があります:
- 機密データを保護するために、クエリの文字列はリクエストパスから削除されるため、クエリパラメータとして渡されたトークンやその他の機密値はログに残されません。
- ノイズを減らすために、認証コールバックやヘルスチェックなどのプラットフォーム内部リクエストは除外されます。
負荷が高い場合、Azure Databricksは一部のアクセスログエントリを落とすことがあります。 エントリが削除されると、ログには削除されたエントリ数を報告するインラインメッセージが含まれます。
ログ入力形式:各エントリーは Apache Combined Log形式を使用しています。 以下はその例の項目です。
203.0.113.10 - jane.doe@example.com [23/Jul/2026:15:04:05 +0000] "GET /api/data HTTP/1.1" 200 1234 "https://apps.example.com/" "Mozilla/5.0"
各エントリーには以下のフィールドが順番に含まれています。 空欄はハイフン(-)として現れます。
| フィールド | Example | Description |
|---|---|---|
| クライアント IP | 203.0.113.10 |
要求を行ったクライアントの IP アドレスです。 |
| User | jane.doe@example.com |
認証されたユーザー、または未認証のリクエストの場合は -。 |
| タイムスタンプ | [23/Jul/2026:15:04:05 +0000] |
リクエストが受け取られた日時。 |
| リクエストライン | "GET /api/data HTTP/1.1" |
HTTPメソッド、クエリ文字列を除去したリクエストパス、そしてプロトコルです。 |
| ステータスコード | 200 |
HTTP 応答状態コード。 |
| 応答サイズ | 1234 |
応答本体のサイズ(バイト単位)。 |
| 参照元 (リファラー) | "https://apps.example.com/" |
Refererリクエストヘッダーの値。 |
| ユーザーエージェント | "Mozilla/5.0" |
User-Agentリクエストヘッダーの値。 |
外部ログ サービスとの統合
永続的なログ記録と高度な監視機能の場合は、次のコマンドを使用します。
アプリテレメトリ(ベータ):トレース、ログ、メトリクスをUnity Catalogのテーブルに直接収集できます。 Databricks Apps のテレメトリの構成に関するページを参照してください。
アプリケーションパフォーマンスモニタリング(APM)ツール:New Relic、Datadog、または類似のアプリケーションパフォーマンスモニタリングツールを使用してログ、メトリクス、トレースを収集・分析します。
カスタムログ永続化:長期保存と分析のために定期的にUnity Catalogのボリュームやテーブルにログを書き込みます。
ログの書式設定とコンテンツに関するガイダンスについては、 推奨されるログ記録のプラクティス を参照してください。
推奨されるログ記録のプラクティス
外部監視およびリアルタイム アラート システムと統合するには:
- JSON またはその他のコンピューターで解析可能な形式でログを書式設定します。
- コンテキストを使用してセキュリティ関連のイベントをログに記録します。
- 認証イベントと承認イベント (ユーザー ID と結果を含む)
- カタログ、スキーマ、テーブル名などのデータ アクセスの詳細
- 無効なトークン、アクセス許可拒否、疑わしいアクティビティなど、セキュリティ関連のエラー
- 外部システムにログを転送します。 APM またはログ集計ツールと統合して、リアルタイムアラート、セキュリティ インシデント対応、使用状況とパフォーマンスの分析、Azure Databricksシステム ログとの相関関係をサポートします。
ログ記録のセキュリティに関する考慮事項
Databricks アプリは、データ流出を防ぐために、次の組み込みコントロールを使用して設計されています。
- API 専用アクセス: アプリは、パブリック Azure Databricks API を介してのみAzure Databricksリソースにアクセスできます。 これらの API は、システム テーブル ログを通じて監査できます。
- 暗号化された通信: すべての API トラフィックは TLS 1.2 以降を使用して暗号化され、セキュリティで保護されたデータ転送が保証されます。
システム テーブルを使用したセキュリティ監視
Azure Databricksは、system.access.audit テーブル内のアプリ関連アクティビティの監査ログをキャプチャします。 これらのログに対してクエリを実行して、ユーザー アクション、アプリ構成の変更、セキュリティ イベントを追跡できます。
次のクエリを使用して、セキュリティ関連のアクティビティを監視し、アプリの潜在的な問題を検出します。
アプリのアクセス許可の変更を監視する
このクエリを使用して、アプリのアクセス許可の変更を検出します。
-- Monitor all app permission modifications in the last 30 days
WITH permission_changes AS (
SELECT
event_date,
workspace_id,
request_params.request_object_id AS app_name,
user_identity.email AS modified_by,
explode(from_json(
request_params.access_control_list,
'array<struct<user_name:string,group_name:string,permission_level:string>>'
)) AS permission
FROM system.access.audit
WHERE action_name = 'changeAppsAcl'
AND event_date >= current_date() - 30
)
SELECT
event_date,
app_name,
modified_by,
permission.user_name,
permission.group_name,
permission.permission_level
FROM permission_changes
ORDER BY event_date DESC
ユーザー API スコープを使用してアプリを識別する
ユーザー API スコープが構成されているアプリを検索するには、次のクエリを使用します。
-- Find apps created or updated in the last 30 days with user API scopes configured
SELECT
event_date,
get_json_object(request_params.app, '$.name') AS app_name,
user_identity.email AS creator_email,
get_json_object(request_params.app, '$.user_api_scopes') AS user_api_scopes
FROM system.access.audit
WHERE
action_name IN ('createApp', 'updateApp')
AND get_json_object(request_params.app, '$.user_api_scopes') IS NOT NULL
AND event_date >= current_date() - INTERVAL 30 DAYS
ユーザー承認アクションを追跡する
このクエリを使用して、ユーザー承認で実行されたアプリ アクションを一覧表示します。
-- List app actions performed on behalf of users in the last 30 days
WITH obo_events AS (
SELECT
event_date,
workspace_id,
audit_level,
identity_metadata.acting_resource AS app_id, -- OAuth App ID or name
user_identity.email AS user_email, -- Logged-in user
service_name,
action_name
FROM system.access.audit
WHERE event_date >= current_date() - 30
AND identity_metadata.acting_resource IS NOT NULL
)
SELECT
event_date,
app_id,
user_email,
service_name,
action_name,
audit_level,
COUNT(*) AS event_count
FROM obo_events
GROUP BY
event_date, app_id, user_email, service_name, action_name, audit_level
ORDER BY event_date DESC;
運用の監視
システム テーブルを使用して、コストやリソースの使用状況など、アプリの運用面を監視します。
アプリのコストを監視する
system.billing.usage テーブルを使用して Databricks Apps のコストを監視します。 次のクエリを使用して、1 日または 1 か月あたりのアプリの正確なコスト情報を取得します。
-- Get Databricks Apps cost by app per day for the last 30 days
SELECT
us.usage_date,
us.usage_metadata.app_id,
us.usage_metadata.app_name,
SUM(us.usage_quantity) AS dbus,
SUM(us.usage_quantity * lp.pricing.effective_list.default) AS dollars
FROM
system.billing.usage us
LEFT JOIN system.billing.list_prices lp
ON lp.sku_name = us.sku_name
AND us.usage_start_time BETWEEN lp.price_start_time AND COALESCE(lp.price_end_time, NOW())
WHERE
billing_origin_product = 'APPS'
AND us.usage_unit = 'DBU'
AND us.usage_date >= DATE_SUB(NOW(), 30)
GROUP BY ALL
Databricks Apps では、コストの追跡に役立つ使用ポリシーがサポートされています。 使用ポリシーの構成の詳細については、「 サーバーレス使用ポリシーでの属性の使用」を参照してください。
アプリの分析情報を監視する
Important
[Insights] タブは ベータ版です。
アプリの詳細ページの [ 分析情報 ] タブには、ユーザーエンゲージメントとアプリの可用性が表示されます。
ビューアーの追跡
ビューアー テーブルは、アプリケーションにアクセスするユーザーを追跡します。
Azure Databricksは、ユーザーがアプリの URL または API アクセスを介してアプリにアクセスしたときに、ビュー イベントを記録します。 データは、ユーザーごと、アプリごとに一意として格納されます。 同じユーザーによる後続のアクセスは、新しい行を作成するのではなく、以前のレコードを上書きします。
最後に表示されたタイムスタンプは、30 分間の OAuth セッション更新サイクルに従います。 セッション ウィンドウ内の複数のアクセスは最初のアクセス時間を保持しますが、セッションの有効期限が切れた後の最初のアクセスは、タイムスタンプを新しいアクセス時間で上書きします。
注
ベータ版では、最後に表示された時刻には世界協定時刻 (UTC) のみが表示されます。
アップタイムと稼働状況
次の正常性シグナルを監視して、アプリの可用性のトラブルシューティングを行います。
- App service health: アプリをサポートするAzure Databricks インフラストラクチャを使用できるかどうか。 使用できない場合は、プラットフォームにサービス レベルの問題があります。 Databricks サポートにお問い合わせください。
- アプリの可用性: 特定のアプリケーションが要求を処理するかどうか。 使用できない場合は、コードでデプロイ エラーまたはクラッシュがないか確認します。