Skip to content

Configuration Manual for the "Azure-Virtual Machine Collection" Collector

Before reading this article, please read the following first:

Before using this collector, you must install the «Integration Core Package» and its associated third-party dependency packages

1. Configuration Structure

The configuration structure of this collector is as follows:

Field Type Required Description
subscriptions list Required List of subscription IDs to collect
subscriptions[#] str Subscription ID
locations list Optional Region list
locations[#] str Region, e.g., westus2

2. Configuration Examples

Specified Subscription

Collect all instance objects under the subscription ID: xxxx1

Python
1
2
3
collector_configs = {
    'subscriptions': ['xxxx1']
}

Specified Subscription and Region

Collect all instance objects under the subscription ID: xxxx1 and in the regions westus2, westus.

Python
1
2
3
4
collector_configs = {
    'subscriptions': ['xxxx1'],
    'locations': ['westus2', 'westus']
}

Configuration Filters (Optional)

This collector script supports user-defined filters, allowing users to filter target resources by object attributes. The filter function returns True or False.

  • True: Target resource needs to be collected.
  • False: Target resource does not need to be collected.

Supported object attributes:

Attribute Description
name Resource ID
resourceId Resource ID (same as the name field)
resourceName Resource name
resourceGroup Resource group name
location Resource location
vmId Specifies a unique VM ID, which is a 128-bit identifier
computerName Specifies the host OS name of the virtual machine
zone Virtual machine zone
publicipAddress Public IP
Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# Example: Enable the filter based on the computerName and provisioningState properties of the object, with the following configuration format:
def filter_instance(instance):
    '''
    Collect instances where computerName is xxx and provisioningState is Succeeded
    '''
    # return True
    computer_name = instance['computerName']
    provisioning_state = instance['provisioningState']
    if computer_name in ['xxx'] and provisioning_state == 'Succeeded':
        return True
    return False

@DFF.API('Azure-Virtual Machines Collection', timeout=3600, fixed_crontab='*/15 * * * *')
def run():
    Runner(main.DataCollector(account, collector_configs, filters=[filter_instance])).run()

3. Data Reporting Format

After data synchronization, you can view the data in the «Infrastructure - Resource Catalog» section of {{( brand_name }}}.

Example of reported data:

JSON
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
  "measurement": "azure_compute_virtualmachines",
  "tags": {
    "location": "eastus",
    "name": "/subscriptions/sss/resourcegroups/aaa/providers/microsoft.compute/virtualmachines/xxx",
    "power_state": "running",
    "provisioning_state": "Succeeded",
    "public_ip_Address": "52.170.218.114",
    "resource_group": "aaa",
    "resource_id": "/subscriptions/sss/resourcegroups/aaa/providers/microsoft.compute/virtualmachines/xxx",
    "resource_name": "xxx",
    "subscription_id": "sss",
    "tenant_id": "ce9fe5b4-xxxxx",
    "vm_id": "64913e31-xxxxx",
    "zone": "1"
  },
  "fields": {
    "public_ip_address_version": "IPv4",
    "storage_profile"        : "{Storage Configuration}",
    "time_created"           : "2023-10-11T07:20:06.8185073+00:00",
    "network_interfaces"     : "{Network JSON Data}",
    "instance_view"          : "{Runtime Status JSON Data}",
    "message"               : "{Instance JSON Data}",
    "admin_username"         : "rrr"
    "hardware_profile"       : "{Hardware Configuration}"
    "tags"                  : "{Tags configured in Azure Console}"
  }
}

Fields in tags and fields may change with subsequent updates

The value of tags.name is the instance ID, used as a unique identifier

fields.message, fields.network_interfaces, field.storage_profile, fields.hardware_profile, fields.tags, fields.instance_view are all strings after JSON serialization

X. Appendix

Azure-related documentation: