📦
Azure Diagnostics 拡張機能のログを Blob に保存する
はじめに
Azure VM の診断設定ページから設定する Azure Diagnostics 拡張機能ですが、既定でいくつかのログはストレージ アカウントの Table に保存されます。
Table に保存されると、ライフサイクル管理ポリシーが利用ができないので、肥大化して課金が増える原因になります。(カスタムでスクリプトを作成して削除することは可能)
調べてみると保存先を Blob に切り替えられるようなので、PowerShell スクリプトを作成しました。
PowerShell スクリプト
こちらの設定サンプルにおいて、storageType
を Blob
にします。今回は一度 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 として保存されるようになりました。
Discussion