Skip to content

Configuration Manual for the "Azure-SQL Servers Database" Collector

Before reading this article, please first read:

Before using this collector, you must install the 'Integration Core Package' and its corresponding 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

Specifying Subscriptions

Collect all instance objects under the subscription ID: xxxx1

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

Specifying Subscriptions and Regions

Collect all instance objects with subscription ID: xxxx1 located in westus2, westus.

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

Configuring Filters (Optional)

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

  • True: The target resource needs to be collected.
  • False: The target resource does not need to 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
databaseId Database ID
status Status of the database
Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Example: Enable filter by filtering based on the resourceId attribute of the object, configure as follows:
def filter_instance(instance):
    '''
    Collect instances with resourceId of xxx
    '''
    # return True
    r_id = instance['resourceId']
    if r_id in ['xxx']:
        return True
    return False

@DFF.API('Azure-SQL Servers Databases 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, it can be viewed 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
{
  "measurement": "azure_sql_servers_databases",
  "tags": {
    "cloud_provider" : "azure",
    "database_id"    : "0e29be1c-xxxx",
    "resource_name"  : "master",
    "location"       : "westus2",
    "name"           : "/subscriptions/{subscriptionId}/resourcegroups/xxx/providers/microsoft.sql/servers/sss/databases/master",
    "resource_group" : "xxx",
    "resource_id"    : "/subscriptions/{subscriptionId}/resourcegroups/xxx/providers/microsoft.sql/servers/sss/databases/master",
    "status"         : "Online",
    "subscription_id": "{subscriptionId}",
    "tenant_id"      : "ce9fe5b4-xxxx"

  },
  "fields": {
    "collation"     : "SQL_Latin1_General_CP1_CI_AS",
    "creation_date" : "2024-09-05T07:44:02.883Z",
    "current_sku"   : "{Database SKU}",
    "max_size_bytes": "53687091200",
    "message"       : "{Instance JSON data}",
    "read_scale"    : "Disabled",
    "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.current_sku, fields.tags are all serialized JSON strings

X. Appendix

Azure related documents: