Note
Databricks では、監査ログ システム テーブル (system.access.audit) を使用してアカウントの監査ログにアクセスすることをお勧めします。 「監査ログ システム テーブル リファレンス」をご覧ください。
この記事では、Azure Databricks ワークスペースの診断ログ配信を有効にする方法について説明します。
Note
診断ログには、Premium プランが必要です。
Azure Portal に所有者、共同作成者、または Azure Databricks ワークスペースの
Microsoft.Databricks/workspaces/assignWorkspaceAdmin/actionアクセス許可を持つカスタム ロールを持つユーザーとしてログインします。 次に、Azure Databricks サービス リソースをクリックします。サイドバーの [監視] セクションで、[診断設定] タブをクリックします。
[診断を有効にする] をクリックします。
[診断設定] ページで、次の構成を指定します。
Name
作成するログの名前を入力します。
ストレージ アカウントへのアーカイブ
このオプションを使用するには、接続先として既存のストレージ アカウントが必要です。 Portal で新しいストレージ アカウントを作成するには、ストレージ アカウントの作成に関するページを参照し、Azure Resource Manager の汎用アカウントの作成手順を実行します。 Portal でこのページに戻り、ストレージ アカウントを選択します。 新しく作成されたストレージ アカウントがドロップダウン メニューに表示されるまでには、数分かかる場合があります。 ストレージ アカウントへの書き込みによって生じる追加コストの詳細については、Azure Storage の価格に関するページを参照してください。
イベント ハブへのストリーム
このオプションを使用するには、接続する既存の Azure Event Hubs 名前空間とイベント ハブが必要です。 Event Hubs 名前空間を作成するには、「Azure Portal を使用して Event Hubs 名前空間とイベント ハブを作成する」をご覧ください。 ポータルでこのページに戻り、Event Hubs 名前空間とポリシー名を選択します。 イベント ハブへの書き込みによって生じる追加コストの詳細については、Azure Event Hubs の価格に関するページを参照してください。
Log Analytics への送信
このオプションを使用するには、既存の Log Analytics ワークスペースを使用するか、ポータルで新しいワークスペースを作成する手順に従って新しいものを作成します。 Log Analytics にログを送信することによって生じる追加コストについては、Azure Monitor の価格に関するページを参照してください。
診断ログの対象となるサービスを選択します。
保存 を選択します。
以下のエラーを受信した場合: "
<workspace name>の診断を更新できませんでした。<subscription id>サブスクリプションは microsoft.insights を使用するように登録されていません。" Azure Diagnostics のトラブルシューティングに関する指示に従ってアカウントを登録してから、この手順を再試行してください。今後、診断ログを保存する方法を変更する場合は、このページに戻ってアカウントの診断ログの設定を変更します。
Note
ストレージ保持ポリシーを設定する場合は、Azure ライフサイクル管理ポリシーを構成します。
PowerShell を使用してログ記録を有効にする
Azure PowerShell セッションを開始し、次のコマンドで Azure アカウントにサインインします。
Connect-AzAccountユーザー アカウントまたはサービス プリンシパルを使用して Azure アカウントにサインインするには、「 Azure PowerShell を使用した認証」を参照してください。
Azure PowerShell がまだインストールされていない場合は、次のコマンドを使用して Azure PowerShell をインストールしてください。
Install-Module -Name Az -AllowClobberポップアップ ブラウザー ウィンドウで、Azure アカウントのユーザー名とパスワードを入力します。 Azure PowerShell は、このアカウントに関連付けられているすべてのサブスクリプションを取得し、既定で最初のサブスクリプションを使います。
複数のサブスクリプションがある場合は、Azure Key Vault を作成するときに使って特定のサブスクリプションを指定することが必要なことがあります。 アカウントのサブスクリプションを確認するには、次のコマンドを入力します。
Get-AzSubscriptionログ記録する Azure Databricks アカウントに関連付けられているサブスクリプションを指定するには、次のコマンドを入力します。
Set-AzContext -SubscriptionId <subscription ID>Log Analytics リソース名を
logAnalyticsという名前の変数に設定します。ここで、ResourceNameは Log Analytics ワークスペースの名前です。$logAnalytics = Get-AzResource -ResourceGroupName <resource group name> -ResourceName <resource name> -ResourceType "Microsoft.OperationalInsights/workspaces"Azure Databricks サービスのリソース名を
databricksという名前の変数に設定します。ここで、ResourceNameは Azure Databricks サービスの名前です。$databricks = Get-AzResource -ResourceGroupName <your resource group name> -ResourceName <your Azure Databricks service name> -ResourceType "Microsoft.Databricks/workspaces"Azure Databricks のログを有効にするには、新しいストレージ アカウント、Azure Databricks サービス、およびログを有効にするカテゴリの変数を指定して、New-AzDiagnosticSetting コマンドレットを使います。 次のコマンドを実行し、
-Enabledフラグを$trueに設定します。New-AzDiagnosticSetting -ResourceId $databricks.ResourceId -WorkspaceId $logAnalytics.ResourceId -Enabled $true -name "<diagnostic setting name>" -Category <comma separated list>
Azure CLI を使用してログを有効にする
PowerShell を開きます。
次のコマンドを使用して、Azure アカウントに接続します。
az loginユーザー アカウントまたはサービス プリンシパルを使用して接続するには、「 Azure CLI を使用してサインインする」を参照してください。
次の診断設定コマンドを実行します。
az monitor diagnostic-settings create --name <diagnostic name> --resource-group <log analytics workspace resource group> --workspace <log analytics name or object ID> --resource <target resource object ID> --logs '[ { \"category\": <category name>, \"enabled\": true } ]'
REST API
LogSettings API を使用します。
Request
PUT https://management.azure.com/{resourceUri}/providers/microsoft.insights/diagnosticSettings/{name}?api-version=2017-05-01-preview
リクエストの本文
{
"properties": {
"workspaceId": "<log analytics resourceId>",
"logs": [
{
"category": "<category name>",
"enabled": true,
"retentionPolicy": {
"enabled": false,
"days": 0
}
}
]
}
}
診断ログの待機時間
アカウントでログが有効になると、Azure Databricks は配信場所へ診断ログを自動的に送信します。 ログは通常、アクティブ化して 15 分以内に利用可能になります。 Azure Databricks の監査可能イベントは、通常、Azure Commercial リージョン内では 15 分以内に診断ログに表示されます。
SSH ログインのログは、長い待機時間で配信されます。
Note
ほとんどのログは 15 分以内に配信されることが期待できますが、Azure Databricks はログ配信の時間を保証していません。
診断ログのスキーマに関する考慮事項
- アクションに時間がかかる場合、要求と応答は別々にログに記録されますが、要求と応答のペアは同じ
requestIdを持ちます。 - 自動スケーリングによるクラスターのサイズ変更や、スケジューリングによるジョブの起動などの自動化アクションは、ユーザー
System-Userによって実行されます。 -
requestParamsフィールドは切り捨てられる可能性があります。 JSON 表現のサイズが 100 KB を超える場合、値は切り捨てられ、切り捨てられたエントリに文字列... truncatedが追加されます。 切り捨てられたマップがまだ 100 KB を超えているまれなケースでは、空の値を持つ 1 つのTRUNCATEDキーが代わりに配置されます。
診断ログのスキーマの例
JSON の出力イベントを監査ログに記録します。
serviceName および actionName プロパティは、イベントを識別します。 名前付け規則は、Databricks REST API に従います。
次の JSON サンプルは、ユーザーがジョブを作成したときにログに記録されるイベントの例です。
{
"TenantId": "<your-tenant-id>",
"SourceSystem": "|Databricks|",
"TimeGenerated": "2019-05-01T00:18:58Z",
"ResourceId": "/SUBSCRIPTIONS/SUBSCRIPTION_ID/RESOURCEGROUPS/RESOURCE_GROUP/PROVIDERS/MICROSOFT.DATABRICKS/WORKSPACES/PAID-VNET-ADB-PORTAL",
"OperationName": "Microsoft.Databricks/jobs/create",
"OperationVersion": "1.0.0",
"Category": "jobs",
"Identity": {
"email": "mail@example.com",
"subjectName": null
},
"SourceIPAddress": "131.0.0.0",
"LogId": "201b6d83-396a-4f3c-9dee-65c971ddeb2b",
"ServiceName": "jobs",
"UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36",
"SessionId": "webapp-cons-webapp-01exaj6u94682b1an89u7g166c",
"ActionName": "create",
"RequestId": "ServiceMain-206b2474f0620002",
"Response": {
"statusCode": 200,
"result": "{\"job_id\":1}"
},
"RequestParams": {
"name": "Untitled",
"new_cluster": "{\"node_type_id\":\"Standard_DS3_v2\",\"spark_version\":\"5.2.x-scala2.11\",\"num_workers\":8,\"spark_conf\":{\"spark.databricks.delta.preview.enabled\":\"true\"},\"cluster_creator\":\"JOB_LAUNCHER\",\"spark_env_vars\":{\"PYSPARK_PYTHON\":\"/databricks/python3/bin/python3\"},\"enable_elastic_disk\":true}"
},
"Type": "DatabricksJobs"
}