Skip to content

Configuration Manual for the "Azure-Network Public Ip Address 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 data from
subscriptions[#] str Subscription ID
locations list Optional Region list
locations[#] str Region, e.g., westus2

2. Configuration Examples

Specify Subscription

Collect all instance objects under the subscription ID: xxxx1

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

Specify Subscription and Region

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

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

Configure Filters (Optional)

This collector script supports user-defined filters that allow users to filter target resources based on object attributes. The filter function returns True or False.

  • True: Target resource should be collected.
  • False: Target resource should not be collected.

Supported object attributes:

Attribute Description
name Resource ID
resourceId Resource ID (same as name field)
resourceName Resource Name
resourceGroup Resource Group Name
location Resource Location
ipAddress Public IP
Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Example: Enable filters, filter by object's resourceId, configuration format as follows:
def filter_instance(instance):
    '''
    Collect instances with resourceId xxx
    '''
    # return True
    r_id = instance['resourceId']
    if r_id in ['xxx']:
        return True
    return False

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

3. Data Reporting Format

After the data synchronizes successfully, you can view it 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
{
  "measurement": "azure_network_publicipaddresses",
  "tags": {
    "cloud_provider" : "azure",
    "ip_address"     : "52.xxx.xx.xxx",
    "location"       : "westus2",
    "name"           : "/subscriptions/sss/resourcegroups/xxx/providers/microsoft.network/publicipaddresses/ppp",
    "resource_group" : "xxx",
    "resource_id"    : "/subscriptions/sss/resourcegroups/xxx/providers/microsoft.network/publicipaddresses/ppp",
    "resource_name"  : "ppp",
    "status"         : "Online",
    "subscription_id": "sss",
    "tenant_id"      : "ce9fe5b4-xxxx"

  },
  "fields": {
    "public_ip_address_version"  : "IPV4",
    "public_ip_allocation_method": "Static",
    "message"                    : "{Instance JSON Data}",
    "tags"                       : "{Azure Console Configured Tags}"
  }
}

Fields in tags and fields may change with subsequent updates.

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

Both fields.message and fields.tags are strings serialized in JSON format.

X. Appendix

Azure related documentation: