📦

Azure Diagnostics 拡張機能のログを Blob に保存する

2024/04/23に公開

はじめに

Azure VM の診断設定ページから設定する Azure Diagnostics 拡張機能ですが、既定でいくつかのログはストレージ アカウントの Table に保存されます。
https://learn.microsoft.com/ja-jp/azure/azure-monitor/agents/diagnostics-extension-windows-install#data-storage

Table に保存されると、ライフサイクル管理ポリシーが利用ができないので、肥大化して課金が増える原因になります。(カスタムでスクリプトを作成して削除することは可能)
調べてみると保存先を Blob に切り替えられるようなので、PowerShell スクリプトを作成しました。

PowerShell スクリプト

こちらの設定サンプルにおいて、storageTypeBlob にします。今回は一度 Azure ポータルなどで設定されている前提で Blob への切り替えのみをターゲットにしています。

# Azure にログイン
Connect-AzAccount

# VM の情報を設定
$resourceGroupName = 'yourResourceGroupName'
$vmName = 'yourVMName'

# 既存の VM 診断拡張機能を取得
$diagExtension = Get-AzVMDiagnosticsExtension -ResourceGroupName $resourceGroupName -VMName $vmName

# PublicConfig の設定を取得
$publicConfig = $diagExtension.PublicSettings
$publicConfigJson = $publicConfig | ConvertFrom-Json

# StorageType プロパティの更新または追加
if ($publicConfigJson.PSObject.Properties.Match('StorageType').Count -gt 0) {
    $publicConfigJson.StorageType = 'Blob'
} else {
    Add-Member -InputObject $publicConfigJson -MemberType NoteProperty -Name 'StorageType' -Value 'Blob'
}

# 変更した設定を json ファイルに保存
$updatedPublicConfig = $publicConfigJson | ConvertTo-Json -Depth 10
$publicConfigPath = "$env:TEMP\updatedDiagnosticsConfig.json"
$updatedPublicConfig | Out-File -FilePath $publicConfigPath

# 診断拡張機能を再設定
Set-AzVMDiagnosticsExtension -ResourceGroupName $resourceGroupName -VMName $vmName -DiagnosticsConfigurationPath $publicConfigPath

# 確認のために設定を表示
Get-AzVMDiagnosticsExtension -ResourceGroupName $resourceGroupName -VMName $vmName

# json ファイルを削除
Remove-Item $publicConfigPath

確認

以下のようにコンテナー内に Blob として保存されるようになりました。

Microsoft (有志)

Discussion