Metrics Declaration¶
All the Azure Monitor metrics that need to be scraped are consolidated in one YAML file which is referred to as the metric declaration.
This declaration defines the overall Azure metadata and all the metrics you want to expose.
Every metric describes the Azure Monitor metric that it represents and what Azure resources that should be scraped. It allows you to statically declaring the resources to scrape and/or use automatic resource discovery.
Supported Azure Services¶
Generic Azure Resource allows you to scrape every Azure service supported by Azure Monitor.
We also provide a simplified way to scrape the following Azure resources:
- Azure API Management
- Azure Application Gateway
- Azure Application Insights
- Azure App Plan
- Azure Cache for Redis
- Azure Cache for Redis Enterprise
- Azure Content Delivery Network (CDN)
- Azure Container Instances
- Azure Container Registry
- Azure Cosmos DB
- Azure Data Factory
- Azure Data Share
- Azure Database for PostgreSQL
- Azure Database for MariaDB
- Azure Database for MySQL
- Azure Event Hubs
- Azure Express Route Circuit
- Azure Front Door
- Azure Function App
- Azure IoT Hub
- Azure IoT Hub Device Provisioning Service (DPS)
- Azure Key Vault
- Azure Kubernetes Service
- Azure Load Balancer
- Azure Logic Apps
- Azure Monitor Autoscale
- Azure Network Gateway
- Azure Network Interface
- Azure Service Bus Namespace
- Azure SQL Database
- Azure SQL Elastic Pool
- Azure SQL Managed Instance
- Azure SQL Server
- Azure Storage (Account)
- Azure Storage (Blob)
- Azure Storage (Files)
- Azure Storage (Queue)
- Azure Synapse (Apache Spark pool)
- Azure Synapse (SQL pool)
- Azure Synapse (Workspace)
- Azure Virtual Machine
- Azure Virtual Machine Scale Set (VMSS)
- Azure Virtual Network
- Azure Web App
Want to help out? Create an issue and contribute a new scraper.
General Declaration¶
As Promitor evolves we need to change the structure of our metrics declaration.
version: {version}
- Version of declaration that is used. Allowed
values are v1
. (Required)
Azure¶
azureMetadata.tenantId
- The id of the Azure tenant that will be queried.azureMetadata.subscriptionId
- The id of the default subscription to query.azureMetadata.resourceGroupName
- The name of the default resource group to query.azureMetadata.cloud
- The name of the Azure cloud to use. Options areGlobal
(default),China
,UsGov
&Germany
.
Metric Defaults¶
metricDefaults.aggregation.interval
- The default interval which defines over what period measurements of a metric should be aggregated. a cron that fits your needs.metricDefaults.limit
- The default maximum amount of resources to scrape when using dimensions or filters.metricDefaults.labels
- The default labels that will be applied to all metrics. (starting as of v2.3)metricDefaults.scraping.schedule
- A cron expression that controls the frequency of which all the configured metrics will be scraped from Azure Monitor. You can use crontab-generator.org to generate a cron that fits your needs. (Required)
Metrics¶
Every metric that is being declared needs to define the following fields:
name
- Name of the metric that will be reported.description
- Description for the metric that will be reported.resourceType
- Defines what type of resource needs to be queried.azureMetricConfiguration.metricName
- The name of the metric in Azure Monitor to queryazureMetricConfiguration.aggregation.type
- The aggregation that needs to be used when querying Azure MonitorazureMetricConfiguration.aggregation.interval
- Overrides the default aggregation interval defined inmetricDefaults.aggregation.interval
with a new intervalresources
- An array of one or more resources to get metrics for. The fields required vary depending on theresourceType
being created, and are documented for each resource.azureMetricConfiguration.limit
- The maximum amount of resources to scrape when using dimensions or filters.resourceDiscoveryGroups
An array of one or more resource discovery groups that will be used to automatically discover all resources through Promitor Resource Discovery. For every found resource, it will get the metrics and report them. Learn more on resource discovery, in our documentation
All resources provide the capability to override the default Azure metadata:
subscriptionId
- Changes the subscription id to which the resource belongs. (OverridesazureMetadata.subscriptionId
)resourceGroupName
- Changes the resource group that contains resource. (OverridesazureMetadata.resourceGroupName
)
Additionally, the following fields are optional:
azureMetricConfiguration.dimensions
- A list of dimensions that should be used to scrape a multi-dimensional metric in Azure Monitor.- ☝ Promitor simply acts as a proxy and will not validate if the given dimensions are supported or not, we recommend verifying that they are in the official documentation
labels
- Defines a set of custom labels to include for a given metric.scraping.schedule
- A scraping schedule for the individual metric; overrides the the one specified inmetricDefaults
Example¶
Here is an example of how you can scrape two Azure Service Bus queues in different
resource groups, one in the promitor
resource group and one on the promitor-dev
resource group:
version: v1
azureMetadata:
tenantId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
subscriptionId: yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
resourceGroupName: promitor
cloud: China
metricDefaults:
aggregation:
interval: 00:05:00
limit: 10
labels:
geo: china
environment: dev
scraping:
# Every minute
schedule: "0 * * ? * *"
metrics:
- name: azure_service_bus_active_messages
description: "The number of active messages on a service bus queue."
resourceType: ServiceBusNamespace
labels:
app: promitor
tier: messaging
scraping:
# Every 2 minutes
schedule: "0 */2 * ? * *"
azureMetricConfiguration:
metricName: ActiveMessages
limit: 5
# Deprecated, please use 'dimensions' instead
dimension:
name: <dimension-name>
dimensions:
- name: <first-dimension-name>
- name: <second-dimension-name>
aggregation:
type: Total
interval: 00:15:00
resources: # Optional, required when no resource discovery is configured
- namespace: promitor-messaging
queueName: orders
- namespace: promitor-messaging-dev
resourceGroupName: promitor-dev
subscriptionId: ABC
resourceDiscoveryGroups: # Optional, requires Promitor Resource Discovery agent (https://promitor.io/concepts/how-it-works#using-resource-discovery)
- name: service-bus-landscape