Microsoft Azure - Azure API Extractor


Use the Microsoft Azure - Azure API Extractor to collect configuration and performance data of the virtual machines and app services that are provisioned in the Azure cloud. The collected data is used for analyzing and optimizing the capacity of your Azure infrastructure. To collect data, the Azure API ETL makes API calls to the Azure services.

You can configure the ETL to collect data from the Azure Resource Manager model. The ETL supports the following subscription types for the Azure Resource Manager model:

  • PAY-AS-YOU-GO 
  • Azure Government

If you apply tags to organize your Azure resources by related business services, you can configure the ETL to use these tags to display the Azure metrics by business services.

 

Collecting data by using the Azure API ETL

To collect data by using the Azure API ETL, do the following tasks:

I. Complete the preconfiguration tasks.

II. Configure the ETL.

Step I. Complete the preconfiguration tasks

Before you configure and run the ETL, complete the pre-configuration tasks. 

Step

Details

Get your Azure subscription ID.

The subscription ID is a GUID that uniquely identifies your subscription to use Azure services.

Steps to obtain Azure subscription ID

    1. Log in to the Azure portal.
    2. In the left pane, select Subscriptions.
    3. Locate the required subscription from the list of subscriptions, and note down the Azure subscription GUID.

If you want to retrieve data for multiple subscriptions by using a single ETL, create a subscription list file that contains the Subscription ID of every subscription. The file can be in .txt or .csv format. You need a separate subscription file per tenant.

Steps to create a Subscription list file

    1. Open a new .txt or .csv file.
    2. Add the subscription ID and click Enter.
    3. Repeat the previous step to add other subscription IDs. For example:
      <subscription ID1>
      <subscription ID2>
    4. Save the file.

Ensure that you have the required permissions to create an application in Azure Active Directory (AAD).

Steps to check Azure Active Directory permissions

    1. Log in to the Azure portal.
    2. In the left pane, select Azure Active Directory. The Overview page is displayed.
    3. In the left pane of Azure Active Directory, click User Settings.
      azure_view-app-registrations.png

    1. In the right pane, review the App registrations setting.
      1. Yes - Allows any user in the Azure AD tenant to register AD apps.
      2. No - Only admin users can register AD apps.
        Select Overview and review your user information to verify whether your account is an admin account. If your account is assigned to the User role, contact your administrator to select Yes or assign you an administrator role.
        azure_view-user-info.png

        For more information about checking the Azure Active Directory permissions, see Check Azure Active Directory permissions.

Create an AAD application to gain access to Azure resources.

Steps to create an AAD application

    1. Log in to the Azure portal.
    2. In the left pane, select Azure Active Directory. The Overview page is displayed.
    3. In the left pane of Azure Active Directory, click App Registrations, and click New registration.
      azure_select-add-app.png

    1. Specify the following details and click Register.
      1. Name and redirect URI for the application.
      2. Supported account types as Accounts in this organizational directory only.
        azure_create-app.png

For more information about creating the Azure Active Directory application, see Create an Azure Active Directory application.

Obtain the Application ID and generate an authentication key for the application.

Steps to obtain the application ID and authentication key

    1. Log in to the Azure portal.
    2. In the left pane, select Azure Active Directory. The Overview page is displayed.
    3. In the left pane of Azure Active Directory, click App Registrations, and in the right pane, select the application that you created in AAD.

      azure_select-app.png

    1. Note down the application (client) ID.
      azure_copy-app-id.png
    2. To generate an authentication key, click Certificates & secrets > Client secrets > New client secret.
    3. Provide a description and expiry duration for the key and click Add.
      Note down the generated authentication key value.
      azure_copy-key.png

For more information about obtaining the application ID and generating the authentication key, see Get application ID and authentication key.

Obtain the Tenant ID, which is the ID of the AAD directory where you created the application.

About Tenants

A Tenant is a representative of an organization within the Azure Active Directory. It is a dedicated instance of the Azure AD service. An AAD tenant is required for defining an application and assigning permissions to use REST APIs of other Azure services.

Steps to obtain the tenant ID

    1. Log in to the Azure portal and select Azure Active Directory.
    2. In Azure Active Directory, click Properties.

    1. Note down the value of the Directory ID, which is your tenant ID.
      azure_copy-directory-id.png

      For more information about obtaining the tenant ID, see Get tenant ID.

Grant API access to the application.

Steps to assign API access to your application

    1. Log on to the Azure portal.
    2. In the left pane, select Azure Active Directory. The Overview page is displayed.
    3. In the left pane of Azure Active Directory, click App Registrations, and in the right pane, select the application that you created in AAD.
    4. In the left pane of Azure Active Directory, click API permissions Add.
    5. On the Add permissions page, click Add a permission.
      1. On the Request API permissions page, select the Azure Service Management API.
      2. Permissions as user_impersonation (Access Azure Service Management as organization users (preview)).
        Note: If you select the DELEGATE PERMISSIONS check box before selecting the permission, the Select button is not enabled.
    6. Click Add permission.

Grant the Reader role to the application.

Ensure that the account in your Azure subscription has the Owner or User Access Administration role to manage access to Azure resources. If your account is assigned the Contributor role, you cannot grant roles.

Steps to grant the Reader role to the application

    1. Log on to the Azure portal.
    2. In the left pane, select Subscriptions.
    3. Locate the required subscription and click Access Control (IAM).
    4. Click Add > Add role assignment, and select the role as Reader.
    5. In Assign access to, select Azure AD user, group, or service principal.
    6. Type your application in the search field.
    7. Click Save.

For more information about granting the Reader role to the application, see Assign application to role.

The ETL needs to access the specific API endpoints. If your setup is behind a firewall, enable the access to these endpoints.

Azure API endpoints for the Resource Manager deployment

The ETL connects to these endpoints using HTTPS (port 443).

Step II. Configure the ETL

You must configure the ETL to connect to Azure for data collection. ETL configuration includes specifying the basic and optional advanced properties. While configuring the basic properties is sufficient, you can optionally configure the advanced properties for additional customization.

A. Configuring the basic properties

Some of the basic properties display default values. You can modify these values, if required.

To configure the basic properties:

  1. Navigate to Administration ETL & System Tasks, and select ETL tasks.
  2. On the ETL tasks page, click Add > Add ETL. The Add ETL page displays the configuration properties. You must configure properties in the following tabs: Run configuration, Entity catalog, and Microsoft Azure Connection.
  3. On the Run configuration tab, select Microsoft Azure - Azure API Extractor from the ETL module list. The name of the ETL is displayed in the ETL Task name field. You can edit this field to customize the name.
  4. Click the Entity catalog tab, and select one of the following options:
    • Shared Entity Catalog: Select if other ETLs access the same entities that are used by the Azure API ETL.
      • From the Sharing with Entity Catalog list, select the entity catalog name that is shared between ETLs.
    • Private Entity Catalog: Select if this is the only ETL that extracts data from the Azure resources.
  5. Click the Microsoft Azure Connection tab, and configure the following properties:

    Property

    Description

    Subscription access mode

    Depending on your Azure subscription mode, select Single or Multiple. You must use the values that you obtained during the preconfiguration procedure.

    Subscription ID

    (For single subscription) Specify the ID of the subscription for which you want to retrieve data.

    Multiple subscription file path 

    (For multiple subscriptions) Upload the file containing the subscription IDs from the UI. The file is uploaded to the filesystem where the ETL Engine runs.

    For information about creating this file, see the Creating the subscription file. When the ETL runs, it retrieves data for all the subscriptions that are mentioned in the file.

    Resource manager deployment model

    For the Resource manager deployment model, configure the following properties:

    Tenant ID

    The Tenant ID from your Azure Active Directory properties.

    Application ID

    The Application ID from the App registrations in the Azure Active Directory.

    Authentication key

    The Authentication key that you generated after creating the web application in Azure Active Directory.

    Business Service hierarchy

    If you want to create and view Azure data by business services, retain the default selection of Create Business Service hierarchy based on specified tag key. Specify the appropriate tag key name. For example, Service.

    Otherwise, select Do not create Business Service hierarchy.

    Example scenario:
    You have VMs that are tagged as follows:

    • AS1: {user=John, Purpose=Dev, Service=Data Solutions}
    • vl-pun-bco-qa35: {user=Adam, Purpose=Production, Service=Data Solutions}
    • vl-pun-bco-qa20: {user=Jane, Purpose=QA, Service=Data Solutions}

    When you run the ETL, data is displayed in a hierarchy as follows:

    bs_hierarchy_annotated2.png

    If you do not use business services, data is displayed as follows:

    azure_withoutBS.PNG

    Is target Azure Government Cloud

    If you are using the Azure Government Cloud account, specify Yes to collect data from the Government cloud entities.

    Data resolution

    You can set  high-mark metrics to be displayed at 15-minute or 1-hour resolution. Select the data resolution, or level of detail, for performance data retrieved from Azure APIs:

    • 15 minutes: Displays more detailed data points with one data point per 15 minutes
      The 15-minute resolution is applicable for all performance metrics. However, you need to manually enable data collection at the 15-minute resolution for the guest OS diagnostics in your Azure environment.
    • 1 hour (default): Displays standard-level data with one data point per hour

    High-mark metrics will continue to be collected with 1 minute resolution. The aggregation will be according to the selected resolution.
    For details, see Collecting-additional-metrics-using-Guest-OS-diagnostics.

    Collect App Services?

    Select Yes if you want to monitor and collect metrics for Azure App Services.

  6. (Optional) Override the default values of properties in the following tab

    Run configuration

    Property

    Description

    Execute in simulation mode

    By default, the ETL execution in simulation mode is selected to validate connectivity with the data source, and to ensure that the ETL does not have any configuration issues. In the simulation mode, the ETL does not load data into the database. This option is useful when you want to test a new ETL task. To run the ETL in the production mode, select No.
    BMC recommends that you run the ETL in the simulation mode after ETL configuration and then run it in the production mode.

    Object relationships

    Property

    Description

    Associate new entities to

    Specify the domain to which you want to add the entities created by the ETL.

    Select one of the following options:

    • New domain: This option is selected by default. Select a parent domain, and specify a name for your new domain.
    • Existing domain: Select an existing domain from the Domain list. 

    By default, a new domain with the same ETL name is created for each ETL. 

    Important: To create a shared project hierarchy, in Associate new entities to, for the first ETL configuration, select New domain, and for the second ETL configuration, select Existing domain. To create a private project hierarchy, in Associate new entities to, for the second ETL configuration, select an existing domain.

    ETL task properties

    Property

    Description

    Task group

    Select a task group to classify the ETL.

    Running on scheduler

    Select a compatible scheduler for running the ETL. See following note on compatible scheduler.

    Maximum execution time before warning

    Indicates the number of hours, minutes, or days for which the ETL must run before generating warnings or alerts, if any.

    Frequency

    Select one of the following frequencies to run the ETL:

    • Predefined: This is the default selection. Select a daily, weekly, or monthly frequency, and then select a time to start the ETL run accordingly.
      • Start timestamp: hour\minute: Select the HH:MM start timestamp to add to the ETL execution running on a Predefined frequency.
    • Custom: Specify a custom frequency, select an appropriate unit of time, and then specify a day and a time to start the ETL run.
      • Custom start timestamp: Select a YYYY-MM-DD HH:MM timestamp to add to the ETL execution running on a Custom frequency.

    ETL task properties

    Property

    Description

    Task group

    Select a task group to classify the ETL.

    Running on scheduler

    Select a compatible scheduler for running the ETL. See following note on compatible scheduler.

    Maximum execution time before warning

    Indicates the number of hours, minutes, or days for which the ETL must run before generating warnings or alerts, if any.

    Frequency

    Select one of the following frequencies to run the ETL:

    • Predefined: This is the default selection. Select a daily, weekly, or monthly frequency, and then select a time to start the ETL run accordingly.
      • Start timestamp: hour\minute: Select the HH:MM start timestamp to add to the ETL execution running on a Predefined frequency.
    • Custom: Specify a custom frequency, select an appropriate unit of time, and then specify a day and a time to start the ETL run.
      • Custom start timestamp: Select a YYYY-MM-DD HH:MM timestamp to add to the ETL execution running on a Custom frequency.

    *Schedulers compatible with this ETL: Generic scheduler (the scheduler preconfigured in Helix, also referred as Cloud ETL Engine), Remote ETL Engine. 

  7. Click Save.
  8. The ETL tasks page shows the details of the newly configured Azure API ETL. 

(Optional) B. Configuring the advanced properties

You can configure the advanced properties to change the way the ETL works or to collect additional metrics.

To configure the advanced properties:

  1. On the Add ETL page, click Advanced.
  2. Configure the following properties:
    ​​​​​

    Run configuration

    Property

    Description

    Run configuration name

    Specify the name that you want to assign to this ETL task configuration. The default configuration name is displayed. You can use this name to differentiate between the run configuration settings of ETL tasks.

    Deploy status

    Select the deploy status for the ETL task. For example, you can initially select Test and change it to Production after verifying that the ETL run results are as expected.

    Description 

    A short description of the ETL module.

    Log level

    Specify the level of details that you want to include in the ETL log file. Select one of the following options:

    • 1 - Light: Select to add the bare minimum activity logs to the log file.
    • 5 - Medium: Select to add the medium-detailed activity logs to the log file.
    • 10 - Verbose: Select to add detailed activity logs to the log file.

    Use log level 5 as a general practice. You can select log level 10 for debugging and troubleshooting purposes.

    Collection level

    Property

    Description

    Metric profile selection

    Select the metric profile that the ETL must use. The ETL collects data for the group of metrics that is defined by the selected metric profile.

    • Use Global metric profile: This is selected by default. All the out-of-the-box ETLs use this profile.
    • Select a custom metric profile: Select the custom profile that you want to use from the Custom metric profile list. This list displays all the custom profiles that you have created.

    For more information about metric profiles, see Adding-and-managing-metric-profiles.

    Levels up to

    Specify the metric level that defines the number of metrics that can be imported into the database. The load on the database increases or decreases depending on the selected metric level.

    To learn more about metric levels, see Adding-and-managing-metric-profiles.

    Microsoft Azure Connection

    Property

    Description

    Instance type definition JSON file path

    Additional properties

    Property

    Description

    List of properties

    In the List of Properties section, specify additional properties for the ETL that act as user inputs during the run. You can specify these values now or later by accessing the You can manually edit ETL properties from this page link that is displayed for the ETL in the view mode.

    To specify an additional property:

    1. Click Add.
    2. In the etl.additional.prop.n field, specify an additional property.
    3. Click Apply.

    Repeat this task to add more properties.
     
    This ETL supports the following additional property:

    extract.azure.deny.databricks.resources: Use this property to control whether Databricks resources are skipped while importing Azure data. By default, the property is set to true, which skips the import of Databricks resources. To include these resources in the import, set the property value to false.

    extract.azure.deny.vdi.resources: Use this property to control whether Azure Virtual Desktop Infrastructure (VDI) resources are skipped or included while importing Azure data. By default, the property is set to true, which skips the import of VDI resources. To include these resources in the import, set the property value to false.

    VDI resources are identified by the presence of the cm-resource-parent tag. If this tag exists and its value contains Microsoft.DesktopVirtualization, the resource is considered part of the VDI infrastructure. Because this tag can be customized or removed by users, the system’s detection of VDI resources is based on best effort and might not be consistent across all environments.

    Loader configuration

    Property

    Description

    Empty dataset behavior

    Specify the action for the loader if it encounters an empty dataset:

    • Warn: Generate a warning about loading an empty dataset.
    • Ignore: Ignore the empty dataset and continue parsing.

    Maximum number of rows for CSV output

    A numeric value to limit the size of the output files.

    Remove domain suffix from datasource name (Only for systems) 

    Select True to remove the domain from the data source name. For example, server.domain.com will be saved as server. The default selection is False.

    Leave domain suffix to system name (Only for systems)

    Select True to keep the domain in the system name. For example: server.domain.com will be saved as is. The default selection is False.

    Skip entity creation (Only for ETL tasks sharing lookup with other tasks)

    Select True if you do not want this ETL to create an entity and discard data from its data source for entities not found in Continuous Optimization. It uses one of the other ETLs that share a lookup to create a new entity. The default selection is False.

    Loader configuration

    Property

    Description

    Empty dataset behavior

    Specify the action for the loader if it encounters an empty dataset:

    • Warn: Generate a warning about loading an empty dataset.
    • Ignore: Ignore the empty dataset and continue parsing.

    Maximum number of rows for CSV output

    A numeric value to limit the size of the output files.

    Remove domain suffix from datasource name (Only for systems) 

    Select True to remove the domain from the data source name. For example, server.domain.com will be saved as server. The default selection is False.

    Leave domain suffix to system name (Only for systems)

    Select True to keep the domain in the system name. For example: 

    server.domain.com

     will be saved as is. The default selection is False.

    Skip entity creation (Only for ETL tasks sharing lookup with other tasks)

    Select True if you do not want this ETL to create an entity and discard data from its data source for entities not found in 

    Continuous Optimization

    . It uses one of the other ETLs that share a lookup to create a new entity. The default selection is False.

    Scheduling options

    Property

    Description

    Hour mask

    Specify a value to run the task only during particular hours within a day. For example, 0 – 23 or 1, 3, 5 – 12.

    Day of week mask

    Select the days so that the task can be run only on the selected days of the week. To avoid setting this filter, do not select any option for this field.

    Day of month mask

    Specify a value to run the task only on the selected days of a month. For example, 5, 9, 18, 27 – 31.

    Apply mask validation

    Select False to temporarily turn off the mask validation without removing any values. The default selection is True.

    Execute after time

    Specify a value in the hours:minutes format (for example, 05:00 or 16:00) to wait before the task is run. The task run begins only after the specified time is elapsed.

    Enqueueable

    Specify whether you want to ignore the next run command or run it after the current task. Select one of the following options:

    • False: Ignores the next run command when a particular task is already running. This is the default selection.
    • True: Starts the next run command immediately after the current running task is completed.

     

  3. Click Save.
    The ETL tasks page shows the details of the newly configured Azure API ETL.

 

Step III. Run the ETL

After you configure the ETL, you can run it to collect data. You can run the ETL in the following modes:

A. Simulation mode: Only validates connection to the data source, does not collect data. Use this mode when you want to run the ETL for the first time or after you make any changes to the ETL configuration.

B. Production mode: Collects data from the data source.

A. To run the ETL in the simulation mode

To run the ETL in the simulation mode:

  1. Navigate to Administration ETL & System Tasks, and select ETL tasks.
  2. On the ETL tasks page, click the ETL. The ETL details are displayed.
    etl_details.png
     
  3. In the Run configurations table, click Edit edit_this_run_configuration.png to modify the ETL configuration settings.
  4. On the Run configuration tab, ensure that the Execute in simulation mode option is set to Yes, and click Save.
  5. Click Run active configuration. A confirmation message about the ETL run job submission is displayed.
  6. On the ETL tasks page, check the ETL run status in the Last exit column.
    OK Indicates that the ETL ran without any error. You are ready to run the ETL in the production mode.
  7.  If the ETL run status is Warning, Error, or Failed:
    1. On the ETL tasks page, clickclick to view details.pngin the last column of the ETL name row.
    2. Check the log and reconfigure the ETL if required.
    3. Run the ETL again.
    4. Repeat these steps until the ETL run status changes to OK.

B. To run the ETL in the production mode

You can run the ETL manually when required or schedule it to run at a specified time.

To run the ETL manually

  1. On the ETL tasks page, click the ETL. The ETL details are displayed.
  2. In the Run configurations table, click Edit edit_this_run_configuration.png to modify the ETL configuration settings. The Edit run configuration page is displayed.
  3. On the Run configuration tab, select No for the Execute in simulation mode option, and click Save.
  4. To run the ETL immediately, click Run active configuration. A confirmation message about the ETL run job submission is displayed.
    When the ETL runs, it collects data from the source and transfers it to the BMC Helix Continuous Optimization database.

To schedule the ETL run in the production mode

By default, the ETL is scheduled to run daily. You can customize this schedule by changing the frequency and period of running the ETL.

To configure the ETL run schedule:

  1. On the ETL tasks page, click the ETL, and click Edit task. The ETL details are displayed.
    aws_api_etl_schedule_run.png
  2. On the Edit task page, do the following, and click Save:
    • Specify a unique name and description for the ETL task.
    • In the Maximum execution time before warning field, specify the duration for which the ETL must run before generating warnings or alerts, if any.
    • Select a predefined or custom frequency for starting the ETL run. The default selection is Predefined.
    • Select the task group to which you want to assign the ETL task.
  3. Click Schedule. A message confirming the scheduling job submission is displayed.
    When the ETL runs as scheduled, it collects data from the source and transfers it to the BMC Helix Continuous Optimization database.

Step IV. Verify data collection

Verify that the ETL ran successfully and the Azure data is refreshed in the Workspace.

To verify whether the ETL ran successfully

  1. Click Administration > ETL and System Tasks > ETL tasks.
  2. In the Last exec time column corresponding to the ETL name, verify that the current date and time are displayed.
  3. In the Last exit column corresponding to the ETL name, verify that the status is OK.
    In case of WARNING or ERROR, click click to view details.png in the last column of the ETL name row to review the log files.

To verify that the Azure data is refreshed:

  1. In the Workspace tab, expand (Domain_name_for Azure) > Systems.
  2. In the left pane, verify that the hierarchy displays the new and updated Azure instances that you have provisioned in the Azure cloud.

    Resource Manager deployment mode

    etl_azure_hierarchy_arm_app.png

  3. Click an Azure virtual machine instance, and click the Metrics tab in the right pane.
  4. Check if the Last Activity column in the Configuration metrics and Performance metrics tables displays the current date.

For information about the configuration and performance metrics data that this ETL collects, see the following topics:

Where to go from here

After data is collected, you can analyze and manage the capacity of Azure entities from the Azure-views.

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*