是否可以从工作区ID获取OMS Log Analytics工作区名称

问题描述

我有一个现有的OMS Log Analytics工作区。工作区ID是一个GUID。由于存在现有项目,这是我唯一能使用的东西。使用此GUID,我需要掌握工作区名称 手臂模板中的示例“ myWorkspace”。我可以将guid作为参数传递给手臂模板。如果我在Json中查找,则Guid实际上是一个customerId属性,并且ResourceId映射到以/subscription/xx-xxx-xxx-xxx/......../myWorkspace开头的工作区名称

我需要从guid(customerId)掌握此工作区名称(ResourceId)。请让我知道我是否可以这样做?真的很难让它正常工作...

解决方法

我不确定您要实现什么目标,但是我已经多次将Log Analytics Workspace与azure ARM配合使用。一个示例是如何检索工作空间键和工作空间ID以将vm与工作空间连接。

请参见下面的代码:

  {
        "type": "Microsoft.Compute/virtualMachines/extensions","name": "[concat(parameters('vmName'),'/OMSExtension')]","apiVersion": "2018-06-01","location": "[parameters('location')]","dependsOn": [
            "[concat('Microsoft.Compute/virtualMachines/',parameters('vmName') )]"
        ],"properties": {
            "publisher": "Microsoft.EnterpriseCloud.Monitoring","type": "OmsAgentForLinux","typeHandlerVersion": "1.7","autoUpgradeMinorVersion": true,"settings": {
                "workspaceId": "[reference(resourceId(parameters('logAnalyticsRG'),'Microsoft.OperationalInsights/workspaces/',parameters('logAnalyticsName')),'2015-03-20').customerId]"
            },"protectedSettings": {
                "workspaceKey": "[listKeys(resourceId(parameters('logAnalyticsRG'),'2015-03-20').primarySharedKey]"
            }
        }
    }

一切取决于您的方案,但这是检索工作区ID和密钥的方法。

,

您可以很容易地从ARG(Azure资源图)中获取它,但是我不知道如何在ARM模板本身中查找它。您可能必须在模板外部查找id并将其作为参数传递?

https://docs.microsoft.com/en-us/azure/governance/resource-graph/concepts/explore-resources

Resources 
| where type =~ "microsoft.operationalinsights/workspaces"
| where properties.customerId == "00000000-0000-0000-0000-00000000000"
| project id,name