This document provides information about various integration options with Azure Monitor tools and managed services.
Azure Monitor¶
Supported features matrix:
| Monitoring System | Metrics | Dashboards | Alerting | Autoscaling |
|---|---|---|---|---|
| Azure Monitor | ✓ Yes | ✗ No | ✗ No | ✗ No |
Legend:
Yes- The feature is supported and implemented.No- The feature is not supported by the target monitoring system.-- The feature is not applicable.
Integration between Azure monitor and Monitoring Stack should be configured before deploying Monitoring, and it is required to set correct deployment parameters to enable necessary features.
Integration with Azure Monitor¶
Analysis is in progress.
Promitor Agent Scraper¶
The Promitor Agent Scraper is used to scrape metrics from Azure managed services in the Prometheus format.
How to Install Promitor Agent Scraper¶
Configure the Promitor correctly to collect metrics from Azure Monitor. For the full list of installation parameters, refer to the Platform Monitoring Installation Procedure.
Set up some parameters for Azure authentication and configure scraping of metrics from the right tenant.
How to Configure Azure Authentication¶
Promitor Agent Scraper provides the following authentication mechanisms:
Service principle- Use the application ID & secret of the Azure AD entity that has been pre-created to authenticate with (default).Managed Identity- Use zero-secret authentication by letting Microsoft handle the authentication for you. For more information, see https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview.
You can change the authentication mode through the azureAuthentication.mode parameter.
Service Principle Authentication Mode¶
For the Service principle method, the agent uses the application ID & secret of the Azure AD entity. You have to create the App Registration in the Azure AD.
To create the application in the Azure Active Directory for Promitor in the Azure UI:
- Navigate to
Azure Active Directory > App registrations > New registrationand create the application. - Navigate to the created application (for example, "Promitor").
- Copy
Application (client) IDand use it as theazureAuthentication.identity.idparameter in the configuration. - Navigate to
Certificates & secrets > Client secrets. - Click
+ New client secretand create a new client secret. - Copy
Valueand use it as theazureAuthentication.identity.keyparameter in the configuration.
To assign a role to the created application:
- Navigate to
Resource Groups > <resource-group-name> > Access control (IAM) > + Add > Add Role Assignment. - Add the
Monitoring Readerrole to the earlier created application (for example, "Promitor"). - Add the
Readerrole if you want to use aPromitor Resource Discovery
If you set the azureAuthentication.identity.key parameter and set secrets.createSecret
to true (true by default), a secret with the name secrets.secretName
(promitor-agent-scraper by default) is created during the deployment. This secret contains
a field with the name secrets.appKeySecret (azure-app-key by default) and
azureAuthentication.identity.key as the value for this field.
If you want to use the previously created secret instead of using the azureAuthentication.identity.key
parameter, you should set secrets.createSecret to false, set the name of the secret as
secrets.secretName, and set the name of the field that contains the application secret as
secrets.appKeySecret.
Managed Identity Authentication Mode¶
Analysis is in progress.
Metric Declaration for Promitor Agent Scraper¶
Enter the azureMetadata section in the configuration correctly to use Promitor Agent Scraper.
To get information for the azureMetadata section from the Azure UI:
- Navigate to
Azure Active Directory > Overview. - Copy
Tenant IDand use it as theazureMetadata.tenantIdparameter in the configuration. - Navigate to
Resource Groups > <resource-group-name> > Overview. - Copy
Subscription IDand use it as theazureMetadata.subscriptionIdparameter in the configuration. - Copy
<resource-group-name>and use it as theazureMetadata.resourceGroupNameparameter in the configuration. - (Optional) You can change the
azureMetadata.cloudparameter fromGlobaltoChina,UsGov, orGermany.
You can set metricDefaults.aggregation.interval (00:05:00 by default)
and metricDefaults.scraping.schedule (*/5 * * * * by default - one scrape per 5 minute).
These values are used for metrics by default and can override each metric separately.
For more information about the parameters, refer to the Platform Monitoring Installation Procedure.
To collect metrics from Azure Monitor, set up the metrics parameter.
This parameter is a list of objects. Each item in the list describe one metric that should be
collected from Azure.
Every metric that is being declared needs to define the following fields:
name- Name of the metric that is reported.description- Description for the metric that is reported.resourceType- Defines what type of resource needs to be queried.azureMetricConfiguration.metricName- The name of the metric in Azure Monitor to query.azureMetricConfiguration.aggregation.type- The aggregation that needs to be used when querying Azure Monitor.azureMetricConfiguration.aggregation.interval- OverridesmetricDefaults.aggregation.intervalmetricDefaults.aggregation.intervalwith a new interval.resources- An array of one or more resources to get the metrics for. The fields required vary depending on theresourceTypebeing created, and are documented for each resource in the official documentation at https://docs.promitor.io/latest/scraping/overview/.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 are used to automatically discover all resources through Promitor Resource Discovery. For every found resource, it gets the metrics and reports them.
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 the resource. OverridesazureMetadata.resourceGroupName.
Additionally, the following fields are optional:
azureMetricConfiguration.dimension.name- The name of the dimension that should be used to scrape a multi-dimensional metric in Azure Monitor.labels- Defines a set of custom labels to include for a given metric.scraping.schedule- A scraping schedule for the individual metric. OverridesmetricDefaults.scraping.schedule.
For more information about metrics, see the list of supported Azure resources for scraping at https://docs.promitor.io/latest/scraping/overview/.
For all metrics supported by Azure monitor, see https://docs.microsoft.com/en-us/azure/azure-monitor/essentials/metrics-supported.
Note: The configuration of each metric must contain either resources
(if you installed Promitor Scraper without Promitor Resource Discovery),
or resourceDiscoveryGroups (if you use Promitor Resource Discovery).
Following are examples of metric declaration for some Azure resources. Replace the words
inside the <> symbols with names of your own resources and leave only one of the fields:
resources or resourceDiscoveryGroups to use these configurations.
Azure Kubernetes Service¶
name: azure_kubernetes_available_cpu_cores
description: "Available CPU cores in cluster"
resourceType: KubernetesService
azureMetricConfiguration:
metricName: kube_node_status_allocatable_cpu_cores
aggregation:
type: Average
# Required when no resource discovery is configured
resources:
- clusterName: <cluster_name>
# Requires Promitor Resource Discovery agent
# (https://promitor.io/concepts/how-it-works#using-resource-discovery)
resourceDiscoveryGroups:
- name: <discovery_group_name>
Azure Event Hubs (Kafka)¶
name: azure_event_hubs_incoming_messages
description: "The number of incoming messages on an Azure Event Hubs topic"
resourceType: EventHubs
azureMetricConfiguration:
metricName: IncomingMessages
aggregation:
type: Total
# Required when no resource discovery is configured
resources:
- namespace: <namespace_1>
topicName: <topic_name_1>
- namespace: <namespace_2>
topicName: <topic_name_2>
# Requires Promitor Resource Discovery agent
# (https://promitor.io/concepts/how-it-works#using-resource-discovery)
resourceDiscoveryGroups:
- name: <discovery_group_name>
Azure Database for PostgreSQL¶
name: azure_postgre_sql_cpu_percent
description: "The CPU percentage on the server"
resourceType: PostgreSql
scraping:
schedule: "0 */2 * ? * *"
azureMetricConfiguration:
metricName: cpu_percent
aggregation:
type: Average
interval: 00:01:00
# Required when no resource discovery is configured
resources:
- serverName: <server_name_1>
- serverName: <server_name_2>
# Requires Promitor Resource Discovery agent
# (https://promitor.io/concepts/how-it-works#using-resource-discovery)
resourceDiscoveryGroups:
- name: <discovery_group_name>
Azure Cache for Redis¶
name: azure_redis_cache_cache_hits
description: "The number of successful key lookups during the specified reporting interval. This maps to keyspace_hits from the Redis INFO command."
resourceType: RedisCache
scraping:
schedule: "0 */2 * ? * *"
azureMetricConfiguration:
metricName: CacheHits
aggregation:
type: Total
interval: 00:01:00
# Required when no resource discovery is configured
resources:
- cacheName: <cache_name_1>
- cacheName: <cache_name_2>
# Requires Promitor Resource Discovery agent
# (https://promitor.io/concepts/how-it-works#using-resource-discovery)
resourceDiscoveryGroups:
- name: <discovery_group_name>
Azure SQL Elastic Pool¶
name: promitor_demo_sql_elastic_pool_cpu
description: "CPU percentage used for a Azure SQL Elastic Pool"
resourceType: SqlElasticPool
labels:
app: promitor
azureMetricConfiguration:
metricName: cpu_percent
aggregation:
type: Average
# Required when no resource discovery is configured
resources:
- serverName: <server_name>
poolName: <pool_name>
# Requires Promitor Resource Discovery agent
# (https://promitor.io/concepts/how-it-works#using-resource-discovery)
resourceDiscoveryGroups:
- name: <discovery_group_name>
Azure Cosmos DB (Cassandra/MongoDB)¶
name: azure_cosmos_db_total_requests
description: "Demo cosmos query"
resourceType: CosmosDb
azureMetricConfiguration:
metricName: TotalRequests
aggregation:
type: Count
# Required when no resource discovery is configured
resources:
- dbName: <db_name_1>
- dbName: <db_name_1>
# Requires Promitor Resource Discovery agent
# (https://promitor.io/concepts/how-it-works#using-resource-discovery)
resourceDiscoveryGroups:
- name: <discovery_group_name>
Promitor Agent Resource Discovery¶
How to Install Promitor Agent Resource Discovery¶
Promitor Agent Resource Discovery can be installed manually or as a part of Platform Monitoring. For the full list of installation parameters, refer to the Platform Monitoring Installation Procedure. It requires Azure Authentication that must be configured the same as promitor-agent-scraper, see below.
How to Configure Resource Discovery Groups¶
The explaining how to configure resource groups can be found here.