Monitoring Azure resources with Zabbix

Posted: August 21, 2018 in Azure

I used this post as starting point.

Creating Azure application

(ID/keys will be used for authentication to Azure)

In Azure portal click Azure Active directory-App registrations-new App registration



In App registrations select All apps from drop-down menu-click on Zabbix application


Write down application ID (we’ll use it on scripts)


Click Settings-Keys-set a name,duration and click Save


Write down key


Write down TenantID


Write down Subscription ID-from Azure dashboard,click Cost Management + Billing under my subscription write subscription ID


Give application read rights to resource group

click on resource group-Access control (IAM)


click Add-select Reader role-Assign access to Azure AD user,group or application and select Zabbix application


Install powershell on Zabbix server (CentOS)

# Register the Microsoft RedHat repository
curl | sudo tee /etc/yum.repos.d/microsoft.repo
# Install PowerShell
sudo yum install -y powershell

Extract and copy all files in to /usr/lib/zabbix/externalscripts, make sure *.sh files are executable

Supported services are SQL,storage account,Virtual Machines and Virtual Network gateway

All available services and metric:

Time periods (monitoring intervals) are called timegrains

time_grains = {
"PT1M" => "1 Minute",
"PT5M" => "5 Minutes",
"PT1H" => "1 Hour",
"PT12H" => "12 Hours"

In trapper.ps1 and azure.ps1 substitute TenantID,applicationID, application key in appropriate sections/

Files can be downloaded from here


For VM:

./ resource group subscription vm

For SQL:

./ resource group subscription sql

For network gateway:

./ resource group subscription vng

For Storage account

./ resource group subscription storage

[root@ip-172-31-27-77 externalscripts]# ./ RG  subscriptionD storage
"{#ID}": "/subscriptions/111-222-333/resourceGroups/RG/providers/Microsoft.Storage/storageAccounts/storageaccount",
"{#STORAGEACCOUNT}": "storageaccount"
"{#ID}": "/subscriptions/111-222-333/resourceGroups/RG/providers/Microsoft.Storage/storageAccounts/storageaccount",
"{#STORAGEACCOUNT}": "storageaccount"
"{#ID}": "/subscriptions/111-222-333/resourceGroups/RG/providers/Microsoft.Storage/storageAccounts/storageaccount",
"{#STORAGEACCOUNT}": "storageaccount"

give ownership of azure.json to zabbix user:

chown zabbix:zabbix azure.json

create dummy host and attach template, specify resource group and subscription ID


Test zabbix trapper:

./ zabbix-dummy-host

if no issues,create cron job for trapper (for example to run it every 15 minutes):

*/15 * * * * /usr/lib/zabbix/externalscripts/ dummy-host

  1. Uladzislau Dadzimau says:

    I believe you might want to put a back-link to the original source of your code:


  2. jane says:

    Hello. Thanks for your detailed manuals. By the way, I’m the beginner of azure-zabbix.
    I wonder what you mean about the below sentence.

    “Copy all files in to /usr/lib/zabbix/externalscripts, make sure *.sh files are executable”

    Which files do I need to make it as a zip file ? Where are the *.sh files located?
    I would appreciate your reply asap.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s