首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取Azure中连接到不同订阅中工作区的虚拟机的日志分析工作区ID

获取Azure中连接到不同订阅中工作区的虚拟机的日志分析工作区ID
EN

Stack Overflow用户
提问于 2020-07-26 00:52:35
回答 1查看 998关注 0票数 2

这是我的Azure设置:

代码语言:javascript
运行
复制
subscription1:
   virtualmachine01        --> linked to log_analytics_workspace01 in subscription01
   virtualmachine02        --> linke to log_analytics_workspace02 in subscription02
   log_analytics_workspace01   
subscription2:
   virtualmachine03        --> linked to log_analytics_workspace02 in subscription02
   log_analytics_workspace02

这两个订阅都在同一个租户下,我的userid可以访问这两个订阅。为了将租户下的所有虚拟机的度量记录在一个日志分析工作区中,为了报告/审核目的,我使用arm模板将所有虚拟机virtualmachine01 & virtualmachine02链接到单个日志分析工作区log_analytics_workspace02。

我的自动化要求我将工作空间id附加到订阅中的所有虚拟机。就像。subscription1在这里。

我可以使用python获得与vm链接的工作区id。下面是代码的片段:

代码语言:javascript
运行
复制
compute_client = ComputeManagementClient(credentials, subscription_id)
vm_list = compute_client.virtual_machines.list_all()
for vm in vm_list:
  vm_name = vm.id.split('/')[-1]
  vm_rg = vm.id.split('/')[4]
  for extn in vm.resources:
    if extn.id.split('/')[-1] in ['MicrosoftMonitoringAgent', 'MMAExtension', 'OMSExtension', 'OmsAgentForLinux']:
       customer_id = compute_client.virtual_machine_extensions.get(
                            vm_rg,
                            vm_name,
                            extn.id.split('/')[-1]).settings['workspaceId']
law_client = LogAnalyticsManagementClient(credentials, subscription_id)
workspaces = law_client.workspaces.list()
for w in workspaces:
   if w.customer_id == customer_id:
      workspace_id = w.id
      print('Workspace_id '+workspace_id)

脚本遍历我可以访问的多个订阅,并获取该订阅中每个vm的日志分析工作区id。上面代码的问题是,它只获取与vm (subscription1)相同的订阅中附加到工作空间的vm的工作区id,但是当它试图获取vm的工作区id时失败,vm的工作区id链接到与vm不同订阅中的工作区。

如何获取虚拟机的Log工作区id,与运行VM的虚拟机不同的订阅中链接到日志分析工作区。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-17 08:55:04

嗨,我无法用Python测试您的代码,因为我正在使用PowerShell生成连接到多个订阅中的日志分析的vm。但是请看下面修改过的代码片段。希望逻辑能帮上忙。

代码语言:javascript
运行
复制
subscription_id_list = ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx", "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"]

for subscription_id in subscription_id_list:
    law_client += LogAnalyticsManagementClient(credentials, subscription_id)

workspaces = law_client.workspaces.list()

for subscription_id in subscription_id_list:
    compute_client = ComputeManagementClient(credentials, subscription_id)
    vm_list = compute_client.virtual_machines.list_all()
    for vm in vm_list:
    vm_name = vm.id.split('/')[-1]
    vm_rg = vm.id.split('/')[4]
    for extn in vm.resources:
        if extn.id.split('/')[-1] in ['MicrosoftMonitoringAgent', 'MMAExtension', 'OMSExtension', 'OmsAgentForLinux']:
        customer_id = compute_client.virtual_machine_extensions.get(
                                vm_rg,
                                vm_name,
                                extn.id.split('/')[-1]).settings['workspaceId']
    for w in workspaces:
        if w.customer_id == customer_id:
            workspace_id = w.id
            print('Workspace_id '+ workspace_id)

如果成功了一定要告诉我。谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63095054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档