Получить идентификатор рабочей области аналитики журнала виртуальной машины в Azure, подключенной к рабочей области в другой подписке

Вот моя установка Azure:

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

Обе подписки принадлежат одному клиенту, и мой идентификатор пользователя имеет доступ к обеим подпискам. Чтобы регистрировать метрики всех виртуальных машин под клиентом в одной рабочей области аналитики журналов для целей отчетности / аудита, я связал все виртуальные машины virtualmachine01 и virtualmachine02 с единым рабочим пространством аналитики журнала log_analytics_workspace02, используя шаблон руки.

Моя автоматизация требует, чтобы я привязал идентификатор рабочей области ко всем виртуальным машинам в подписке. Например, подписка1 здесь.

Я мог бы связать идентификатор рабочей области с виртуальной машиной с помощью python sdk. Вот фрагмент кода:

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, прикрепленной к рабочей области в той же подписке, что и vm (subscription1), но терпит неудачу, когда пытается получить идентификатор рабочей области vm, которая связана с рабочей областью в другом подписка, чем vm.

Как я могу получить идентификатор рабочей области Log Analytics виртуальной машины, которая связана с рабочей областью аналитики журналов в подписке, отличной от той, в которой работает виртуальная машина.

Спасибо.


person autobot    schedule 26.07.2020    source источник


Ответы (1)


Привет, я не могу протестировать ваш код на Python, поскольку я использую PowerShell для создания виртуальной машины, подключенной к аналитике журналов в нескольких подписках. Но просмотрите измененный фрагмент кода ниже. Надеюсь, логика поможет.

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)

Дайте мне знать, работает ли это. Спасибо!

person Steven Aung    schedule 17.11.2020
comment
В итоге я использовал аналогичный подход. - person autobot; 01.12.2020