Azure Virtual Machines

Azure Virtual Machines are the on-demand, scalable computing resources of Microsoft Azure - single machines, and scale sets of identical machines that grow and shrink with the load.

Available solutions

Zabbix version 7.4 7.2 7.0 6.4 6.2 6.0
Source: templates/cloud/azure_http

Azure Virtual Machine by HTTP

Overview

This template is designed to monitor Microsoft Azure virtual machines (VMs) by HTTP. It works without any external scripts and uses the script item.

Requirements

Zabbix version: 7.4 and higher.

Tested versions

This template has been tested on:

  • Microsoft Azure virtual machines

Configuration

Zabbix should be configured according to the instructions in the Templates out of the box section.

Setup

  1. 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.

  1. Link the template to a host.
  2. Configure the macros: {$AZURE.APP.ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT.ID}, {$AZURE.SUBSCRIPTION.ID}, and {$AZURE.RESOURCE.ID}.

Macros used

Name Description Default
{$AZURE.SUBSCRIPTION.ID}

Microsoft Azure subscription ID.

{$AZURE.TENANT.ID}

Microsoft Azure tenant ID.

{$AZURE.APP.ID}

The App ID of Microsoft Azure.

{$AZURE.PASSWORD}

Microsoft Azure password.

{$AZURE.RESOURCE.ID}

Microsoft Azure virtual machine ID.

{$AZURE.VM.CPU.UTIL.CRIT}

The critical threshold of CPU utilization, expressed in %.

90
{$AZURE.DATA.TIMEOUT}

API response timeout.

15s
{$AZURE.PROXY}

Sets the HTTP proxy value. If this macro is empty, then no proxy is used.

{$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 Virtual Machine", e.g. {$HTTP.TLS.VERIFY:"Azure Virtual Machine"}.

full

Items

Name Description Type Key and additional info
Get data

The result of API requests is expressed in the JSON.

Script azure.vm.data.get
Get errors

A list of errors from API requests.

Dependent item azure.vm.data.errors

Preprocessing

  • JSON Path: $.errors

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Availability state

The availability status of the resource.

0 - Available - no events detected that affect the health of the resource.

1 - Degraded - your resource detected a loss in performance, although it's still available for use.

2 - Unavailable - the service detected an ongoing platform or non-platform event that affects the health of the resource.

3 - Unknown - Resource Health hasn't received information about the resource for more than 10 minutes.

Dependent item azure.vm.availability.state

Preprocessing

  • JSON Path: $.health.availabilityState

    ⛔️Custom on fail: Set value to: 3

  • Replace: Available -> 0

  • Replace: Degraded -> 1

  • Replace: Unavailable -> 2

  • Replace: Unknown -> 3

  • In range: 0 -> 3

    ⛔️Custom on fail: Set value to: 3

  • Discard unchanged with heartbeat: 1h

Availability status detailed

The summary description of availability status.

Dependent item azure.vm.availability.details

Preprocessing

  • JSON Path: $.health.summary

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

CPU utilization

Percentage of allocated compute units that are currently in use by virtual machine.

Dependent item azure.vm.cpu.utilization

Preprocessing

  • JSON Path: $.metrics.PercentageCPU.average

    ⛔️Custom on fail: Discard value

Disk read

Bytes read from the disk during the monitoring period.

Dependent item azure.vm.disk.read.bytes

Preprocessing

  • JSON Path: $.metrics.DiskReadBytes.total

    ⛔️Custom on fail: Discard value

Disk write

Bytes written to the disk during the monitoring period.

Dependent item azure.vm.disk.write.bytes

Preprocessing

  • JSON Path: $.metrics.DiskWriteBytes.total

    ⛔️Custom on fail: Discard value

Disk IOPS read

The count of read operations from the disk per second.

Dependent item azure.vm.disk.read.ops

Preprocessing

  • JSON Path: $.metrics.DiskReadOperationsSec.average

    ⛔️Custom on fail: Discard value

Disk IOPS write

The count of write operations to the disk per second.

Dependent item azure.vm.disk.write.ops

Preprocessing

  • JSON Path: $.metrics.DiskWriteOperationsSec.average

    ⛔️Custom on fail: Discard value

CPU credits remaining

Total number of credits available to burst. Available only on B-series burstable VMs.

Dependent item azure.vm.cpu.credits.remaining

Preprocessing

  • JSON Path: $.metrics.CPUCreditsRemaining.average

    ⛔️Custom on fail: Discard value

CPU credits consumed

Total number of credits consumed by the virtual machine. Only available on B-series burstable VMs.

Dependent item azure.vm.cpu.credits.consumed

Preprocessing

  • JSON Path: $.metrics.CPUCreditsConsumed.average

    ⛔️Custom on fail: Discard value

Data disk read rate

Bytes per second read from a single disk during the monitoring period.

Dependent item azure.vm.data.disk.read.bps

Preprocessing

  • JSON Path: $.metrics.DataDiskReadBytessec.average

    ⛔️Custom on fail: Discard value

Data disk write rate

Bytes per second written to a single disk during the monitoring period.

Dependent item azure.vm.data.disk.write.bps

Preprocessing

  • JSON Path: $.metrics.DataDiskWriteBytessec.average

    ⛔️Custom on fail: Discard value

Data disk IOPS read

Read IOPS from a single disk during the monitoring period.

Dependent item azure.vm.data.disk.read.ops

Preprocessing

  • JSON Path: $.metrics.DataDiskReadOperationsSec.average

    ⛔️Custom on fail: Discard value

Data disk IOPS write

Write IOPS from a single disk during the monitoring period.

Dependent item azure.vm.data.disk.write.ops

Preprocessing

  • JSON Path: $.metrics.DataDiskWriteOperationsSec.average

    ⛔️Custom on fail: Discard value

Data disk queue depth

The number of outstanding IO requests that are waiting to be performed on a disk.

Dependent item azure.vm.data.disk.queue.depth

Preprocessing

  • JSON Path: $.metrics.DataDiskQueueDepth.average

    ⛔️Custom on fail: Discard value

Data disk bandwidth consumed

Percentage of the data disk bandwidth consumed per minute.

Dependent item azure.vm.data.disk.bandwidth.consumed

Preprocessing

  • JSON Path: $.metrics.DataDiskBandwidthConsumedPercentage.average

    ⛔️Custom on fail: Discard value

Data disk IOPS consumed

Percentage of the data disk input/output (I/O) consumed per minute.

Dependent item azure.vm.data.disk.iops.consumed

Preprocessing

  • JSON Path: $.metrics.DataDiskIOPSConsumedPercentage.average

    ⛔️Custom on fail: Discard value

Data disk target bandwidth

Baseline byte-per-second throughput that the data disk can achieve without bursting.

Dependent item azure.vm.data.disk.bandwidth.target

Preprocessing

  • JSON Path: $.metrics.DataDiskTargetBandwidth.average

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Data disk target IOPS

Baseline IOPS that the data disk can achieve without bursting.

Dependent item azure.vm.data.disk.iops.target

Preprocessing

  • JSON Path: $.metrics.DataDiskTargetIOPS.average

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Data disk max burst bandwidth

Maximum byte-per-second throughput that the data disk can achieve with bursting.

Dependent item azure.vm.data.disk.bandwidth.max

Preprocessing

  • JSON Path: $.metrics.DataDiskMaxBurstBandwidth.average

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Data disk max burst IOPS

Maximum IOPS that the data disk can achieve with bursting.

Dependent item azure.vm.data.disk.iops.max

Preprocessing

  • JSON Path: $.metrics.DataDiskMaxBurstIOPS.average

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

Data disk used burst BPS credits

Percentage of the data disk burst bandwidth credits used so far.

Dependent item azure.vm.data.disk.bandwidth.burst.used

Preprocessing

  • JSON Path: $.metrics.DataDiskUsedBurstBPSCreditsPercentage.average

    ⛔️Custom on fail: Discard value

Data disk used burst IO credits

Percentage of the data disk burst I/O credits used so far.

Dependent item azure.vm.data.disk.iops.burst.used

Preprocessing

  • JSON Path: $.metrics.DataDiskUsedBurstIOCreditsPercentage.average

    ⛔️Custom on fail: Discard value

OS disk read rate

Bytes/sec read from a single disk during the monitoring period - for an OS disk.

Dependent item azure.vm.os.disk.read.bps

Preprocessing

  • JSON Path: $.metrics.OSDiskReadBytessec.average

    ⛔️Custom on fail: Discard value

OS disk write rate

Bytes/sec written to a single disk during the monitoring period - for an OS disk.

Dependent item azure.vm.os.disk.write.bps

Preprocessing

  • JSON Path: $.metrics.OSDiskWriteBytessec.average

    ⛔️Custom on fail: Discard value

OS disk IOPS read

Read IOPS from a single disk during the monitoring period - for an OS disk.

Dependent item azure.vm.os.disk.read.ops

Preprocessing

  • JSON Path: $.metrics.OSDiskReadOperationsSec.average

    ⛔️Custom on fail: Discard value

OS disk IOPS write

Write IOPS from a single disk during the monitoring period - for an OS disk.

Dependent item azure.vm.os.disk.write.ops

Preprocessing

  • JSON Path: $.metrics.OSDiskWriteOperationsSec.average

    ⛔️Custom on fail: Discard value

OS disk queue depth

The OS disk queue depth (or queue length).

Dependent item azure.vm.os.disk.queue.depth

Preprocessing

  • JSON Path: $.metrics.OSDiskQueueDepth.average

    ⛔️Custom on fail: Discard value

OS disk bandwidth consumed

Percentage of the operating system disk bandwidth consumed per minute.

Dependent item azure.vm.os.disk.bandwidth.consumed

Preprocessing

  • JSON Path: $.metrics.OSDiskBandwidthConsumedPercentage.average

    ⛔️Custom on fail: Discard value

OS disk IOPS consumed

Percentage of the operating system disk I/Os consumed per minute.

Dependent item azure.vm.os.disk.iops.consumed

Preprocessing

  • JSON Path: $.metrics.OSDiskIOPSConsumedPercentage.average

    ⛔️Custom on fail: Discard value

OS disk target bandwidth

Baseline byte-per-second throughput that the OS disk can achieve without bursting.

Dependent item azure.vm.os.disk.bandwidth.target

Preprocessing

  • JSON Path: $.metrics.OSDiskTargetBandwidth.average

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

OS disk target IOPS

Baseline IOPS that the OS disk can achieve without bursting.

Dependent item azure.vm.os.disk.iops.target

Preprocessing

  • JSON Path: $.metrics.OSDiskTargetIOPS.average

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

OS disk max burst bandwidth

Maximum byte-per-second throughput that the OS disk can achieve with bursting.

Dependent item azure.vm.os.disk.bandwidth.max

Preprocessing

  • JSON Path: $.metrics.OSDiskMaxBurstBandwidth.average

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

OS disk max burst IOPS

Maximum IOPS that the OS disk can achieve with bursting.

Dependent item azure.vm.os.disk.iops.max

Preprocessing

  • JSON Path: $.metrics.OSDiskMaxBurstIOPS.average

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 1h

OS disk used burst BPS credits

Percentage of the OS disk burst bandwidth credits used so far.

Dependent item azure.vm.os.disk.bandwidth.burst.used

Preprocessing

  • JSON Path: $.metrics.OSDiskUsedBurstBPSCreditsPercentage.average

    ⛔️Custom on fail: Discard value

OS disk used burst IO credits

Percentage of the OS disk burst I/O credits used so far.

Dependent item azure.vm.os.disk.iops.burst.used

Preprocessing

  • JSON Path: $.metrics.OSDiskUsedBurstIOCreditsPercentage.average

    ⛔️Custom on fail: Discard value

Inbound flows

The number of current flows in the inbound direction (the traffic going into the VM).

Dependent item azure.vm.flows.inbound

Preprocessing

  • JSON Path: $.metrics.InboundFlows.average

    ⛔️Custom on fail: Discard value

Outbound flows

The number of current flows in the outbound direction (the traffic going out of the VM).

Dependent item azure.vm.flows.outbound

Preprocessing

  • JSON Path: $.metrics.OutboundFlows.average

    ⛔️Custom on fail: Discard value

Inbound flows max creation rate

Maximum creation rate of the inbound flows (the traffic going into the VM).

Dependent item azure.vm.flows.inbound.max

Preprocessing

  • JSON Path: $.metrics.InboundFlowsMaximumCreationRate.average

    ⛔️Custom on fail: Discard value

Outbound flows max creation rate

Maximum creation rate of the outbound flows (the traffic going out of the VM).

Dependent item azure.vm.flows.outbound.max

Preprocessing

  • JSON Path: $.metrics.OutboundFlowsMaximumCreationRate.average

    ⛔️Custom on fail: Discard value

Premium data disk cache read hit in %

Percentage of premium data disk cache read hit.

Dependent item azure.vm.premium.data.disk.cache.read.hit

Preprocessing

  • JSON Path: $.metrics.PremiumDataDiskCacheReadHit.average

    ⛔️Custom on fail: Discard value

Premium data disk cache read miss in %

Percentage of premium data disk cache read miss.

Dependent item azure.vm.premium.data.disk.cache.read.miss

Preprocessing

  • JSON Path: $.metrics.PremiumDataDiskCacheReadMiss.average

    ⛔️Custom on fail: Discard value

Premium OS disk cache read hit in %

Percentage of premium OS disk cache read hit.

Dependent item azure.vm.premium.os.disk.cache.read.hit

Preprocessing

  • JSON Path: $.metrics.PremiumOSDiskCacheReadHit.average

    ⛔️Custom on fail: Discard value

Premium OS disk cache read miss in %

Percentage of premium OS disk cache read miss.

Dependent item azure.vm.premium.os.disk.cache.read.miss

Preprocessing

  • JSON Path: $.metrics.PremiumOSDiskCacheReadMiss.average

    ⛔️Custom on fail: Discard value

VM cached bandwidth consumed

Percentage of the cached disk bandwidth consumed by the VM.

Dependent item azure.vm.cached.bandwidth.consumed

Preprocessing

  • JSON Path: $.metrics.VMCachedBandwidthConsumedPercentage.average

    ⛔️Custom on fail: Discard value

VM cached IOPS consumed

Percentage of the cached disk IOPS consumed by the VM.

Dependent item azure.vm.cached.iops.consumed

Preprocessing

  • JSON Path: $.metrics.VMCachedIOPSConsumedPercentage.average

    ⛔️Custom on fail: Discard value

VM uncached bandwidth consumed

Percentage of the uncached disk bandwidth consumed by the VM.

Dependent item azure.vm.uncached.bandwidth.consumed

Preprocessing

  • JSON Path: $.metrics.VMUncachedBandwidthConsumedPercentage.average

    ⛔️Custom on fail: Discard value

VM uncached IOPS consumed

Percentage of the uncached disk IOPS consumed by the VM.

Dependent item azure.vm.uncached.iops.consumed

Preprocessing

  • JSON Path: $.metrics.VMUncachedIOPSConsumedPercentage.average

    ⛔️Custom on fail: Discard value

Network in total

The number of bytes received by the VM via all network interfaces (incoming traffic).

Dependent item azure.vm.network.in.total

Preprocessing

  • JSON Path: $.metrics.NetworkInTotal.total

    ⛔️Custom on fail: Discard value

Network out total

The number of bytes sent by the VM via all network interfaces (outgoing traffic).

Dependent item azure.vm.network.out.total

Preprocessing

  • JSON Path: $.metrics.NetworkOutTotal.total

    ⛔️Custom on fail: Discard value

Available memory

Amount of physical memory, in bytes, immediately available for the allocation to a process or for a system use in the virtual machine.

Dependent item azure.vm.memory.available

Preprocessing

  • JSON Path: $.metrics.AvailableMemoryBytes.average

    ⛔️Custom on fail: Discard value

Data disk latency

Average time to complete each IO during the monitoring period for Data Disk.

Dependent item azure.vm.disk.latency

Preprocessing

  • JSON Path: $.metrics.DataDiskLatency.average

    ⛔️Custom on fail: Discard value

  • Custom multiplier: 0.001

OS disk latency

Average time to complete each IO during the monitoring period for OS Disk.

Dependent item azure.vm.os.disk.latency

Preprocessing

  • JSON Path: $.metrics.OSDiskLatency.average

    ⛔️Custom on fail: Discard value

  • Custom multiplier: 0.001

Temp disk latency

Average time to complete each IO during the monitoring period for temp disk.

Dependent item azure.vm.temp.disk.latency

Preprocessing

  • JSON Path: $.metrics.TempDiskLatency.average

    ⛔️Custom on fail: Discard value

  • Custom multiplier: 0.001

Temp disk read rate

Bytes/Sec read from a single disk during the monitoring period for temp disk.

Dependent item azure.vm.temp.disk.read.bps

Preprocessing

  • JSON Path: $.metrics.TempDiskReadBytessec.average

    ⛔️Custom on fail: Discard value

Temp disk write rate

Bytes/Sec written to a single disk during the monitoring period for temp disk.

Dependent item azure.vm.temp.disk.write.bps

Preprocessing

  • JSON Path: $.metrics.TempDiskWriteBytessec.average

    ⛔️Custom on fail: Discard value

Temp disk IOPS read

Read IOPS from a single disk during the monitoring period for temp disk.

Dependent item azure.vm.temp.disk.read.ops

Preprocessing

  • JSON Path: $.metrics.TempDiskReadOperationsSec.average

    ⛔️Custom on fail: Discard value

Temp disk IOPS write

Bytes/Sec written to a single disk during the monitoring period for temp disk.

Dependent item azure.vm.temp.disk.write.ops

Preprocessing

  • JSON Path: $.metrics.TempDiskWriteOperationsSec.average

    ⛔️Custom on fail: Discard value

Temp disk queue depth

Temp Disk queue depth (or queue length).

Dependent item azure.vm.temp.disk.queue.depth

Preprocessing

  • JSON Path: $.metrics.TempDiskQueueDepth.average

    ⛔️Custom on fail: Discard value

VM availability metric

Measure of availability of virtual machine over time.

Dependent item azure.vm.availability

Preprocessing

  • JSON Path: $.metrics.VmAvailabilityMetric.average

    ⛔️Custom on fail: Discard value

Triggers

Name Description Expression Severity Dependencies and additional info
Azure VM: There are errors in requests to API

Zabbix has received errors in response to API requests.

length(last(/Azure Virtual Machine by HTTP/azure.vm.data.errors))>0 Average
Azure VM: Virtual machine is unavailable

The resource state is unavailable.

last(/Azure Virtual Machine by HTTP/azure.vm.availability.state)=2 High
Azure VM: Virtual machine is degraded

The resource is in a degraded state.

last(/Azure Virtual Machine by HTTP/azure.vm.availability.state)=1 Average
Azure VM: Virtual machine is in unknown state

The resource state is unknown.

last(/Azure Virtual Machine by HTTP/azure.vm.availability.state)=3 Warning
Azure VM: High CPU utilization

The CPU utilization is too high. The system might be slow to respond.

min(/Azure Virtual Machine by HTTP/azure.vm.cpu.utilization,5m)>{$AZURE.VM.CPU.UTIL.CRIT} High

Articles and documentation

+ Propose new article

Не нашли то, что искали?