Set-AzVMDiagnosticsExtension 无法跨订阅按预期工作
Set-AzVMDiagnosticsExtension doesn't work work as expected across subscriptions
我正在尝试的是启用 VM 诊断扩展以将事件日志(应用程序 [1,2,3]、安全性 [all]、系统 [1,2,3])发送到一个统一的存储帐户(让我们称之为日志存储)应该在其中创建 WADWindowsEventLogsTable。
我尝试实现的不同场景:
虚拟机与日志存储在同一个资源组中。
结果:有效
VM 位于日志存储所在的不同资源组中。
结果:有效
VM 在不同的订阅中
结果: 扩展将被启用。但是,当转到代理选项卡时,我会在存储帐户部分收到错误消息“值不能为空”
agent tab, storage account section error
环境
Windows
Powershell 7.0.2
DiagnosticsConfiguration.json
{
"PublicConfig": {
"WadCfg": {
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": 5120,
"WindowsEventLog": {
"scheduledTransferPeriod": "PT1M",
"DataSource": [
{
"name": "Application!*[System[(Level=1 or Level=2 or Level=3 or Level=4)]]"
},
{
"name": "Security!*"
},
{
"name": "System!*[System[(Level=1 or Level=2 or Level=3 or Level=4)]]"
}
]
}
}
},
"StorageAccount": "logsstorage",
"StorageType": "TableAndBlob"
},
"PrivateConfig": {
"storageAccountName": "logsstorage",
"storageAccountKey": "xxxxxxx",
"storageAccountEndPoint": "https://logsstorage.blob.core.windows.net"
}
}
Powershell 命令:
Set-AzVMDiagnosticsExtension -ResourceGroupName "myvmresourcegroup" -VMName "myvm" -DiagnosticsConfigurationPath "DiagnosticsConfiguration.json"
我什至尝试将帐户名和密钥明确指定为:
$storage_key = "xxxxxx"
Set-AzVMDiagnosticsExtension -ResourceGroupName "myvmresourcegroup" -VMName "myvm" -DiagnosticsConfigurationPath "DiagnosticsConfiguration.json" -StorageAccountName "logsstroage" -StorageAccountKey $storage_key
我花了很多时间试图在没有运气的情况下找出问题。
这里真正的问题是扩展没有创建预期的 table WADWindowsEventLogsTable(如果它已经存在则写入它)
根据官方文档我应该可以做到这一点,示例3:
https://docs.microsoft.com/en-us/powershell/module/az.compute/set-azvmdiagnosticsextension?view=azps-4.3.0
我已经在 GitHub 上向团队提交了一个问题并提供了更多详细信息,但仍在等待他们的意见
这是因为您指定的存储帐户“logsstorage”在另一个订阅中。
您应该选择不同的订阅来启用 VM 诊断扩展。因此,您还需要修改 DiagnosticsConfiguration.json
文件并指定当前订阅中的存储帐户。
在 Microsoft 工程师的帮助下,我设法解决了这个问题。
我已经在这个 GitHub 问题中详细说明了答案:
Set-AzVMDiagnosticsExtension doesn't seem working properly across subscriptions
答案 :
我设法完成了这项工作,感谢来自 Microsoft 支持的@prernavashistha 的帮助,结果发现文档中存在一些不一致之处。
根据此处的文档:
在 PrivateConfig 中,我应该将存储 URI 传递给“storageAccountEndPoint”键:
"PrivateConfig": {
"storageAccountEndPoint": "https://logsstorage.blob.core.windows.net"}
但是,根据另一个文档参考:
我应该传递 Azure 存储端点:
"PrivateConfig": {
"storageAccountEndPoint": "https://core.windows.net"}
我可以确认使用 Azure 存储端点解决了问题,我可以跨订阅启用扩展,我可以看到日志按预期写入正确的 table。
谢谢
我正在尝试的是启用 VM 诊断扩展以将事件日志(应用程序 [1,2,3]、安全性 [all]、系统 [1,2,3])发送到一个统一的存储帐户(让我们称之为日志存储)应该在其中创建 WADWindowsEventLogsTable。
我尝试实现的不同场景:
虚拟机与日志存储在同一个资源组中。
结果:有效
VM 位于日志存储所在的不同资源组中。
结果:有效
VM 在不同的订阅中
结果: 扩展将被启用。但是,当转到代理选项卡时,我会在存储帐户部分收到错误消息“值不能为空” agent tab, storage account section error
环境
Windows
Powershell 7.0.2
DiagnosticsConfiguration.json
{
"PublicConfig": {
"WadCfg": {
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": 5120,
"WindowsEventLog": {
"scheduledTransferPeriod": "PT1M",
"DataSource": [
{
"name": "Application!*[System[(Level=1 or Level=2 or Level=3 or Level=4)]]"
},
{
"name": "Security!*"
},
{
"name": "System!*[System[(Level=1 or Level=2 or Level=3 or Level=4)]]"
}
]
}
}
},
"StorageAccount": "logsstorage",
"StorageType": "TableAndBlob"
},
"PrivateConfig": {
"storageAccountName": "logsstorage",
"storageAccountKey": "xxxxxxx",
"storageAccountEndPoint": "https://logsstorage.blob.core.windows.net"
}
}
Powershell 命令:
Set-AzVMDiagnosticsExtension -ResourceGroupName "myvmresourcegroup" -VMName "myvm" -DiagnosticsConfigurationPath "DiagnosticsConfiguration.json"
我什至尝试将帐户名和密钥明确指定为:
$storage_key = "xxxxxx"
Set-AzVMDiagnosticsExtension -ResourceGroupName "myvmresourcegroup" -VMName "myvm" -DiagnosticsConfigurationPath "DiagnosticsConfiguration.json" -StorageAccountName "logsstroage" -StorageAccountKey $storage_key
我花了很多时间试图在没有运气的情况下找出问题。
这里真正的问题是扩展没有创建预期的 table WADWindowsEventLogsTable(如果它已经存在则写入它)
根据官方文档我应该可以做到这一点,示例3: https://docs.microsoft.com/en-us/powershell/module/az.compute/set-azvmdiagnosticsextension?view=azps-4.3.0
我已经在 GitHub 上向团队提交了一个问题并提供了更多详细信息,但仍在等待他们的意见
这是因为您指定的存储帐户“logsstorage”在另一个订阅中。
您应该选择不同的订阅来启用 VM 诊断扩展。因此,您还需要修改 DiagnosticsConfiguration.json
文件并指定当前订阅中的存储帐户。
在 Microsoft 工程师的帮助下,我设法解决了这个问题。
我已经在这个 GitHub 问题中详细说明了答案:
Set-AzVMDiagnosticsExtension doesn't seem working properly across subscriptions
答案 :
我设法完成了这项工作,感谢来自 Microsoft 支持的@prernavashistha 的帮助,结果发现文档中存在一些不一致之处。
根据此处的文档:
在 PrivateConfig 中,我应该将存储 URI 传递给“storageAccountEndPoint”键:
"PrivateConfig": {
"storageAccountEndPoint": "https://logsstorage.blob.core.windows.net"}
但是,根据另一个文档参考:
我应该传递 Azure 存储端点:
"PrivateConfig": {
"storageAccountEndPoint": "https://core.windows.net"}
我可以确认使用 Azure 存储端点解决了问题,我可以跨订阅启用扩展,我可以看到日志按预期写入正确的 table。
谢谢