【问题标题】:Set-AzVMDiagnosticsExtension doesn't work work as expected across subscriptionsSet-AzVMDiagnosticsExtension 在订阅中无法按预期工作
【发布时间】:2020-11-16 14:35:18
【问题描述】:

我正在尝试启用 VM 诊断扩展以将事件日志(应用程序 [1,2,3]、安全 [all]、系统 [1,2,3])发送到一个统一存储帐户(让我们呼叫日志存储)应该在其中创建 WADWindowsEventLogsTable。

我尝试实现的不同场景:

  1. VM 与日志存储所在的资源组位于同一资源组中。

    结果:有效

  2. VM 位于日志存储所在的不同资源组中。

    结果:有效

  3. 不同订阅中的虚拟机

    结果:扩展程序将被启用。但是,当转到代理选项卡时,我会在存储帐户部分下收到错误消息“值不能为空” agent tab, storage account section error


环境

窗户

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

我花了很多时间试图在没有运气的情况下解决这个问题。



这里真正的问题是扩展没有创建预期的表WADWindowsEventLogsTable(或者如果它已经存在则写入它)

根据官方文档,我应该可以做到这一点,示例 3: https://docs.microsoft.com/en-us/powershell/module/az.compute/set-azvmdiagnosticsextension?view=azps-4.3.0

我已在 GitHub 上向团队提交了一个问题并提供了更多详细信息,但仍在等待他们的意见

https://github.com/Azure/azure-powershell/issues/12259

【问题讨论】:

  • 在微软工程师的帮助下,我能够解决这个问题。我已经更新了 GitHub 问题的更多详细信息。

标签: azure powershell azure-powershell


【解决方案1】:

这是因为您指定的存储帐户“logsstorage”在另一个订阅中。

您应该选择不同的订阅来启用 VM 诊断扩展。因此,您还需要修改您的 DiagnosticsConfiguration.json 文件并指定当前订阅中的存储帐户。

【讨论】:

  • 这不是真的。根据官方文档,我应该能够做到这一点。请查看此页面上的示例 3:docs.microsoft.com/en-us/powershell/module/az.compute/…
  • @Matar 你很紧张。我只测试您共享的第一个 cmd,它不适用于不同订阅中的存储帐户。根据官方文档,第二个 cmd 应该适用于不同的订阅。但是,当我测试它时,cmd 总是出现超时错误。目前我的网络环境似乎有问题,因为第一个 cmd 现在也不起作用。我会继续努力。如果有任何更新,我会回来的。
【解决方案2】:

在微软工程师的帮助下,我设法解决了这个问题。

我已在此 GitHub 问题中详细说明了答案:

Set-AzVMDiagnosticsExtension doesn't seem working properly across subscriptions


答案 :

我设法完成了这项工作,感谢来自 Microsoft 支持的 @prernavashistha 的帮助,结果证明文档中存在一些不一致之处。

根据此处的文档:

https://docs.microsoft.com/en-us/azure/azure-monitor/platform/diagnostics-extension-windows-install#powershell-deployment

PrivateConfig 我应该将存储 URI 传递给“storageAccountEndPoint”键:

"PrivateConfig": {
"storageAccountEndPoint": "https://logsstorage.blob.core.windows.net"}

但是,根据另一个文档参考:

https://docs.microsoft.com/en-us/azure/azure-monitor/platform/diagnostics-extension-schema-windows#json

我应该通过 Azure 存储端点:

"PrivateConfig": {
"storageAccountEndPoint": "https://core.windows.net"}


我可以确认使用 Azure 存储端点解决了这个问题,我可以跨订阅启用扩展,并且我可以看到日志按预期写入正确的表。

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    相关资源
    最近更新 更多