Available solutions
Azure by HTTP
Overview
This template is designed to monitor Microsoft Azure by HTTP. It works without any external scripts and uses the script item. Currently, the template supports the discovery of virtual machines (VMs), VM scale sets, MySQL and PostgreSQL servers, Microsoft SQL databases and managed instances, and Cosmos DB for MongoDB, as well as the monitoring of Backup Jobs and Cost Management data.
Included Monitoring Templates
- Azure Virtual Machine by HTTP
- Azure VM Scale Set by HTTP
- Azure MySQL Flexible Server by HTTP
- Azure MySQL Single Server by HTTP
- Azure PostgreSQL Flexible Server by HTTP
- Azure PostgreSQL Single Server by HTTP
- Azure Microsoft SQL Serverless Database by HTTP
- Azure Microsoft SQL DTU Database by HTTP
- Azure Microsoft SQL Database by HTTP
- Azure SQL Managed Instance by HTTP
- Azure Cost Management by HTTP
- Azure Cosmos DB for MongoDB by HTTP
- Azure Backup Jobs by HTTP
Requirements
Zabbix version: 7.4 and higher.
Tested versions
This template has been tested on:
- Microsoft Azure
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
-
Create an Azure service principal via the Azure command-line interface (Azure CLI) for your subscription.
az ad sp create-for-rbac --name zabbix --role reader --scope /subscriptions/<subscription_id>
See Azure documentation for more details.
- Link the template to a host.
- Configure the macros:
{$AZURE.APP.ID},{$AZURE.PASSWORD},{$AZURE.TENANT.ID}, and{$AZURE.SUBSCRIPTION.ID}.
Macros used
| Name | Description | Default |
|---|---|---|
| {$AZURE.SUBSCRIPTION.ID} | Azure Subscription ID used to scope all API requests. |
|
| {$AZURE.TENANT.ID} | Azure Tenant (Directory) ID used for authentication. |
|
| {$AZURE.APP.ID} | Client (Application) ID of the Azure service principal. |
|
| {$AZURE.PASSWORD} | Client secret of the Azure service principal used for API authentication. |
|
| {$AZURE.DATA.TIMEOUT} | Maximum time to wait for Azure API responses before request fails. |
15s |
| {$AZURE.PROXY} | HTTP proxy used for Azure API requests (leave empty to connect directly). |
|
| {$HTTP.TLS.VERIFY} | TLS certificate verification for script items: "none" - disabled, "peer" - verify the certificate chain and expiration, "full" - full verification. Any other value enables full verification. To override the setting for this template only, define the macro with the context "Azure", e.g. {$HTTP.TLS.VERIFY:"Azure"}. |
full |
| {$AZURE.VM.NAME.MATCHES} | Regex string to include discovered virtual machines by name. |
.* |
| {$AZURE.VM.NAME.NOT.MATCHES} | Regex string to exclude discovered virtual machines by name. |
CHANGE_IF_NEEDED |
| {$AZURE.VM.LOCATION.MATCHES} | Regex string to include discovered virtual machine locations by name. |
.* |
| {$AZURE.VM.LOCATION.NOT.MATCHES} | Regex string to exclude discovered virtual machine locations by name. |
CHANGE_IF_NEEDED |
| {$AZURE.SCALESET.NAME.MATCHES} | Regex string to include discovered VM scale sets by name. |
.* |
| {$AZURE.SCALESET.NAME.NOT.MATCHES} | Regex string to exclude discovered VM scale sets by name. |
CHANGE_IF_NEEDED |
| {$AZURE.SCALESET.LOCATION.MATCHES} | Regex string to include discovered VM scale set locations by name. |
.* |
| {$AZURE.SCALESET.LOCATION.NOT.MATCHES} | Regex string to exclude discovered VM scale set locations by name. |
CHANGE_IF_NEEDED |
| {$AZURE.SQL.INST.NAME.MATCHES} | Regex string to include discovered Azure SQL managed instances by name. |
.* |
| {$AZURE.SQL.INST.NAME.NOT.MATCHES} | Regex string to exclude discovered Azure SQL managed instances by name. |
CHANGE_IF_NEEDED |
| {$AZURE.SQL.INST.LOCATION.MATCHES} | Regex string to include discovered Azure SQL managed instance locations by name. |
.* |
| {$AZURE.SQL.INST.LOCATION.NOT.MATCHES} | Regex string to exclude discovered Azure SQL managed instance locations by name. |
CHANGE_IF_NEEDED |
| {$AZURE.VAULT.NAME.MATCHES} | Regex string to include discovered Azure Vaults by name. |
.* |
| {$AZURE.VAULT.NAME.NOT.MATCHES} | Regex string to exclude discovered Azure Vaults by name. |
CHANGE_IF_NEEDED |
| {$AZURE.VAULT.LOCATION.MATCHES} | Regex string to include discovered Azure Vault locations by name. |
.* |
| {$AZURE.VAULT.LOCATION.NOT.MATCHES} | Regex string to exclude discovered Azure Vault locations by name. |
CHANGE_IF_NEEDED |
| {$AZURE.STORAGE.ACC.NAME.MATCHES} | Regex string to include discovered storage accounts by name. |
.* |
| {$AZURE.STORAGE.ACC.NAME.NOT.MATCHES} | Regex string to exclude discovered storage accounts by name. |
CHANGE_IF_NEEDED |
| {$AZURE.STORAGE.ACC.LOCATION.MATCHES} | Regex string to include discovered storage account locations by name. |
.* |
| {$AZURE.STORAGE.ACC.LOCATION.NOT.MATCHES} | Regex string to exclude discovered storage account locations by name. |
CHANGE_IF_NEEDED |
| {$AZURE.STORAGE.ACC.AVAILABILITY} | The warning threshold of the storage account availability. |
70 |
| {$AZURE.STORAGE.ACC.BLOB.AVAILABILITY} | The warning threshold of the storage account blob services availability. |
70 |
| {$AZURE.STORAGE.ACC.TABLE.AVAILABILITY} | The warning threshold of the storage account table services availability. |
70 |
| {$AZURE.RESOURCE.GROUP.MATCHES} | Regex string to include discovered resource groups by name. |
.* |
| {$AZURE.RESOURCE.GROUP.NOT.MATCHES} | Regex string to exclude discovered resource groups by name. |
CHANGE_IF_NEEDED |
| {$AZURE.MYSQL.DB.NAME.MATCHES} | Regex string to include discovered MySQL servers by name. |
.* |
| {$AZURE.MYSQL.DB.NAME.NOT.MATCHES} | Regex string to exclude discovered MySQL servers by name. |
CHANGE_IF_NEEDED |
| {$AZURE.MYSQL.DB.LOCATION.MATCHES} | Regex string to include discovered MySQL server locations by name. |
.* |
| {$AZURE.MYSQL.DB.LOCATION.NOT.MATCHES} | Regex string to exclude discovered MySQL server locations by name. |
CHANGE_IF_NEEDED |
| {$AZURE.PGSQL.DB.NAME.MATCHES} | Regex string to include discovered PostgreSQL servers by name. |
.* |
| {$AZURE.PGSQL.DB.NAME.NOT.MATCHES} | Regex string to exclude discovered PostgreSQL servers by name. |
CHANGE_IF_NEEDED |
| {$AZURE.PGSQL.DB.LOCATION.MATCHES} | Regex string to include discovered PostgreSQL server locations by name. |
.* |
| {$AZURE.PGSQL.DB.LOCATION.NOT.MATCHES} | Regex string to exclude discovered PostgreSQL server locations by name. |
CHANGE_IF_NEEDED |
| {$AZURE.MSSQL.DB.NAME.MATCHES} | Regex string to include discovered MSSQL databases by name. |
.* |
| {$AZURE.MSSQL.DB.NAME.NOT.MATCHES} | Regex string to exclude discovered MSSQL databases by name. |
CHANGE_IF_NEEDED |
| {$AZURE.MSSQL.DB.LOCATION.MATCHES} | Regex string to include discovered MSSQL database locations by name. |
.* |
| {$AZURE.MSSQL.DB.LOCATION.NOT.MATCHES} | Regex string to exclude discovered MSSQL database locations by name. |
CHANGE_IF_NEEDED |
| {$AZURE.MSSQL.DB.SIZE.NOT.MATCHES} | Regex string to exclude discovered MSSQL database locations by SKU type. |
^System$ |
| {$AZURE.COSMOS.MONGO.DB.NAME.MATCHES} | Regex string to include discovered Cosmos DB accounts by name. |
.* |
| {$AZURE.COSMOS.MONGO.DB.NAME.NOT.MATCHES} | Regex string to exclude discovered Cosmos DB accounts by name. |
CHANGE_IF_NEEDED |
| {$AZURE.COSMOS.MONGO.DB.LOCATION.MATCHES} | Regex string to include discovered Cosmos DB account locations by name. |
.* |
| {$AZURE.COSMOS.MONGO.DB.LOCATION.NOT.MATCHES} | Regex string to exclude discovered Cosmos DB account locations by name. |
CHANGE_IF_NEEDED |
Items
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Get resources | The result of API requests is expressed in the JSON. |
Script | azure.get.resources |
| Get errors | A list of errors from API requests. |
Dependent item | azure.get.errors Preprocessing
|
| Get storage accounts | The result of API requests is expressed in the JSON. |
Script | azure.get.storage.acc |
| Get storage accounts errors | The errors from API requests. |
Dependent item | azure.get.storage.acc.errors Preprocessing
|
Triggers
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Azure: There are errors in requests to API | Zabbix has received errors in response to API requests. |
length(last(/Azure by HTTP/azure.get.errors))>0 |
Average | |
| Azure: There are errors in storages requests to API | Zabbix has received errors in response to API requests. |
length(last(/Azure by HTTP/azure.get.storage.acc.errors))>0 |
Average | Depends on:
|
LLD rule Storage accounts discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Storage accounts discovery | The list of all storage accounts available under the subscription. |
Dependent item | azure.storage.acc.discovery Preprocessing
|
Item prototypes for Storage accounts discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Storage account [{#NAME}]: Get data | The HTTP API endpoint that returns storage metrics with the name |
Script | azure.get.storage.acc[{#NAME}] |
| Storage account [{#NAME}]: Used Capacity | The amount of storage used by the storage account with the name For standard storage accounts, it's the sum of capacity used by blob, table, file, and queue. For premium storage accounts and blob storage accounts, it is the same as BlobCapacity or FileCapacity. |
Dependent item | azure.storage.used.capacity[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Transactions | The number of requests made to the storage service or a specified API operation. This number includes successful and failed requests and also requests that produced errors. Use |
Dependent item | azure.storage.transactions[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Ingress | The amount of ingress data, expressed in bytes. This number includes ingress from an external client into Azure Storage and also ingress within Azure. |
Dependent item | azure.storage.ingress[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Egress | The amount of egress data. This number includes egress to external client from Azure Storage and also egress within Azure. As a result, this number does not reflect billable egress. |
Dependent item | azure.storage.engress[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Success Server Latency | The average time used to process a successful request by Azure Storage. This value does not include the network latency specified in |
Dependent item | azure.storage.success.server.latency[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Success E2E Latency | The average end-to-end latency of successful requests made to a storage service or the specified API operation, expressed in milliseconds. This value includes the required processing time within Azure Storage to read the request, send the response, and receive acknowledgment of the response. |
Dependent item | azure.storage.success.e2e.latency[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Availability | The percentage of availability for the storage service or a specified API operation. Availability is calculated by taking the All unexpected errors result in reduced availability for the storage service or the specified API operation. |
Dependent item | azure.storage.availability[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Blob Capacity | The amount of storage used by the blob service of the storage account with the name |
Dependent item | azure.storage.blob.capacity[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Blob Count | The number of blob objects stored in the storage account with the name |
Dependent item | azure.storage.blob.count[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Blob Container Count | The number of containers in the storage account with the name |
Dependent item | azure.storage.blob.container.count[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Blob Index Capacity | The amount of storage with the name |
Dependent item | azure.storage.blob.index.capacity[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Blob Transactions | The number of requests made to the storage service or a specified API operation. This number includes successful and failed requests and also requests that produced errors. Use |
Dependent item | azure.storage.blob.transactions[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Blob Ingress | The amount of ingress data, expressed in bytes. This number includes ingress from an external client into Azure Storage and also ingress within Azure. |
Dependent item | azure.storage.blob.ingress[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Blob Egress | The amount of egress data. This number includes egress to external client from Azure Storage and also egress within Azure. As a result, this number does not reflect billable egress. |
Dependent item | azure.storage.blob.engress[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Blob Success Server Latency | The average time used to process a successful request by Azure Storage. This value does not include the network latency specified in |
Dependent item | azure.storage.blob.success.server.latency[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Blob Success E2E Latency | The average end-to-end latency of successful requests made to a storage service or the specified API operation, expressed in milliseconds. This value includes the required processing time within Azure Storage to read the request, send the response, and receive acknowledgment of the response. |
Dependent item | azure.storage.blob.success.e2e.latency[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Blob Availability | The percentage of availability for the storage service or a specified API operation. Availability is calculated by taking the All unexpected errors result in reduced availability for the storage service or the specified API operation. |
Dependent item | azure.storage.blob.availability[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Table Capacity | The amount of storage used by the table service of the storage account with the name |
Dependent item | azure.storage.table.capacity[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Table Count | The number of tables in the storage account with the name |
Dependent item | azure.storage.table.count[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Table Entity Count | The number of table entities in the storage account with the name |
Dependent item | azure.storage.table.entity.count[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Table Transactions | The number of requests made to the storage service or a specified API operation. This number includes successful and failed requests and also requests that produced errors. Use |
Dependent item | azure.storage.table.transactions[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Table Ingress | The amount of ingress data, expressed in bytes. This number includes ingress from an external client into Azure Storage and also ingress within Azure. |
Dependent item | azure.storage.table.ingress[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Table Egress | The amount of egress data. This number includes egress to external client from Azure Storage and also egress within Azure. As a result, this number does not reflect billable egress. |
Dependent item | azure.storage.table.engress[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Table Success Server Latency | The average time used to process a successful request by Azure Storage. This value does not include the network latency specified in |
Dependent item | azure.storage.table.success.server.latency[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Table Success E2E Latency | The average end-to-end latency of successful requests made to a storage service or the specified API operation, expressed in milliseconds. This value includes the required processing time within Azure Storage to read the request, send the response, and receive acknowledgment of the response. |
Dependent item | azure.storage.table.success.e2e.latency[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Table Availability | The percentage of availability for the storage service or a specified API operation. Availability is calculated by taking the All unexpected errors result in reduced availability for the storage service or the specified API operation. |
Dependent item | azure.storage.table.availability[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: File Capacity | The amount of file storage used by the storage account with the name |
Dependent item | azure.storage.file.capacity[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: File Count | The number of files in the storage account with the name |
Dependent item | azure.storage.file.count[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: File Share Count | The number of file shares in the storage account. |
Dependent item | azure.storage.file.share.count[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: File Share Snapshot Count | The number of snapshots present on the share in storage account's Files Service. |
Dependent item | azure.storage.file.shares.snapshot.count[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: File Share Snapshot Size | The amount of storage used by the snapshots in storage account's File service, in bytes. |
Dependent item | azure.storage.file.share.snapshot.size[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: File Share Capacity Quota | The upper limit on the amount of storage that can be used by Azure Files Service, in bytes. |
Dependent item | azure.storage.file.share.capacity.quota[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: File Transactions | The number of requests made to the storage service or a specified API operation. This number includes successful and failed requests and also requests that produced errors. Use |
Dependent item | azure.storage.file.transactions[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: File Ingress | The amount of ingress data, expressed in bytes. This number includes ingress from an external client into Azure Storage and also ingress within Azure. |
Dependent item | azure.storage.file.ingress[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: File Egress | The amount of egress data. This number includes egress to external client from Azure Storage and also egress within Azure. As a result, this number does not reflect billable egress. |
Dependent item | azure.storage.file.engress[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: File Success Server Latency | The average time used to process a successful request by Azure Storage. This value does not include the network latency specified in |
Dependent item | azure.storage.file.success.server.latency[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: File Success E2E Latency | The average end-to-end latency of successful requests made to a storage service or the specified API operation, expressed in milliseconds. This value includes the required processing time within Azure Storage to read the request, send the response, and receive acknowledgment of the response. |
Dependent item | azure.storage.file.success.e2e.latency[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Queue Capacity | The amount of queue storage used by the storage account with the name |
Dependent item | azure.storage.queue.capacity[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Queue Count | The number of queues in the storage account with the name |
Dependent item | azure.storage.queue.count[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Queue Message Count | The number of unexpired queue messages in the storage account with the name |
Dependent item | azure.storage.queue.message.count[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Queue Transactions | The number of requests made to the storage service or a specified API operation. This number includes successful and failed requests and also requests that produced errors. Use |
Dependent item | azure.storage.queue.transactions[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Queue Ingress | The amount of ingress data, expressed in bytes. This number includes ingress from an external client into Azure Storage and also ingress within Azure. |
Dependent item | azure.storage.queue.ingress[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Queue Egress | The amount of egress data. This number includes egress to external client from Azure Storage and also egress within Azure. As a result, this number does not reflect billable egress. |
Dependent item | azure.storage.queue.engress[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Queue Success Server Latency | The average time used to process a successful request by Azure Storage. This value does not include the network latency specified in |
Dependent item | azure.storage.queue.success.server.latency[{#NAME}] Preprocessing
|
| Storage account [{#NAME}]: Queue Success E2E Latency | The average end-to-end latency of successful requests made to a storage service or the specified API operation, expressed in milliseconds. This value includes the required processing time within Azure Storage to read the request, send the response, and receive acknowledgment of the response. |
Dependent item | azure.storage.queue.success.e2e.latency[{#NAME}] Preprocessing
|
Trigger prototypes for Storage accounts discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Azure: Storage account [{#NAME}]: Availability is low | (min(/Azure by HTTP/azure.storage.availability[{#NAME}],#3))<{$AZURE.STORAGE.ACC.AVAILABILITY:"{#NAME}"} |
Warning | ||
| Azure: Storage account [{#NAME}]: Blob Availability is low | (min(/Azure by HTTP/azure.storage.blob.availability[{#NAME}],#3))<{$AZURE.STORAGE.ACC.BLOB.AVAILABILITY:"{#NAME}"} |
Warning | ||
| Azure: Storage account [{#NAME}]: Table Availability is low | (min(/Azure by HTTP/azure.storage.table.availability[{#NAME}],#3))<{$AZURE.STORAGE.ACC.TABLE.AVAILABILITY:"{#NAME}"} |
Warning |
LLD rule Virtual machines discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Virtual machines discovery | The list of virtual machines provided by the subscription. |
Dependent item | azure.vm.discovery Preprocessing
|
LLD rule Virtual machine scale set discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Virtual machine scale set discovery | The list of virtual machine scale sets provided by the subscription. |
Dependent item | azure.scaleset.discovery Preprocessing
|
LLD rule Azure SQL managed instance discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Azure SQL managed instance discovery | The list of Azure SQL managed instances provided by the subscription. |
Dependent item | azure.sql_inst.discovery Preprocessing
|
LLD rule Azure Vault discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Azure Vault discovery | The list of Azure Recovery Services and Backup vaults provided by the subscription. |
Dependent item | azure.vault.discovery Preprocessing
|
LLD rule MySQL servers discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| MySQL servers discovery | The list of MySQL servers provided by the subscription. |
Dependent item | azure.mysql.servers.discovery Preprocessing
|
LLD rule PostgreSQL servers discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| PostgreSQL servers discovery | The list of PostgreSQL servers provided by the subscription. |
Dependent item | azure.pgsql.servers.discovery Preprocessing
|
LLD rule Microsoft SQL databases discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Microsoft SQL databases discovery | The list of Microsoft SQL databases provided by the subscription. |
Dependent item | azure.mssql.databases.discovery Preprocessing
|
LLD rule Cosmos DB account discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Cosmos DB account discovery | The list of Cosmos databases provided by the subscription. |
Dependent item | azure.cosmos.mongo.db.discovery Preprocessing
|