Skip to content

Configuration Manual for the "Azure-DB For PostgreSQL Flexible Server Collection" Collector

Before reading this, please first read:

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 regions westus2, westus.

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

Configuring Filters (Optional)

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

  • True: The target resource should be collected.
  • False: The target resource should not be collected.

Supported object properties for filtering:

Property Description
name Resource ID
resourceId Resource ID (same as name field)
resourceName Resource name
resourceGroup Resource group name
location Resource location
availabilityZone Availability zone
state Service status
Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Example: Enable a filter based on the resourceId property of an object. Configuration format is as follows:
def filter_instance(instance):
    '''
    Collect instances with resourceId equal to xxx
    '''
    # return True
    r_id = instance['resourceId']
    if r_id in ['xxx']:
        return True
    return False

@DFF.API('Azure-DB For PostgreSQL Flexible Server 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 {{( brand_name )}} "Infrastructure - Resource Catalog".

An example of the reported data is as follows:

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_dbforpostgresql_flexibleservers",
  "tags": {
    "cloud_provider"   : "azure",
    "location"         : "westus2",
    "name"             : "/subscriptions/sss/resourcegroups/xxx/providers/microsoft.dbforpostgresql/flexibleservers/ppp",
    "resource_group"   : "ppp",
    "resource_id"      : "/subscriptions/sss/resourcegroups/xxx/providers/microsoft.dbforpostgresql/flexibleservers/ppp",
    "resource_name"    : "ppp",
    "state"            : "Ready",
    "subscription_id"  : "sss",
    "tenant_id"        : "ce9fe5b4-xxxx",
    "availability_zone": "3"
  },
  "fields": {
    "minor_version"              : "4",
    "replica_capacity"           : "5",
    "replication_role"           : "Primary",
    "sku"                        : "{server SKU}",
    "storage"                    : "{server storage properties}",
    "version"                    : "16",
    "backup"                     : "{server backup properties}",
    "fully_qualified_domain_name": "ppp.database.azure.com",
    "maintenance_window"         : "{server maintenance window properties}",
    "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, used as a unique identifier

fields.message, fields.sku, fields.storage, fields.backup, fields.maintenance_window, fields.tags are all strings serialized in JSON format

X. Appendix

Azure related documentation: