You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12 KiB

Veeam Backup and Replication by HTTP

Overview

This template is designed to monitor Veeam Backup and Replication. It works without any external scripts and uses the script item.

NOTE: Since the RESTful API may not be available for some editions, the template will only work with the following editions of Veeam Backup and Replication:

  1. Veeam Universal License (VUL) editions:
  • Foundation
  • Advanced
  • Premium
  1. Veeam Socket License editions:
  • Enterprise Plus Socket

See Veeam Data Platform Feature Comparison for more details.

Requirements

Zabbix version: 7.0 and higher.

Tested versions

This template has been tested on:

  • Veeam Backup and Replication, version 11.0

Configuration

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

Setup

  1. Create a user to monitor the service or use an existing read-only account.

See Veeam Help Center for more details.

  1. Link the template to a host.
  2. Configure the following macros: {$VEEAM.API.URL}, {$VEEAM.USER}, and {$VEEAM.PASSWORD}.

Macros used

Name Description Default
{$VEEAM.API.URL}

The Veeam API endpoint is a URL in the format <scheme>://<host>:<port>.

https://localhost:9419
{$VEEAM.HTTP.PROXY}

Sets the HTTP proxy to http_proxy value. If this parameter is empty, then no proxy is used.

{$VEEAM.PASSWORD}

The password of the Veeam Backup and Replication account. It is used to obtain an access token.

{$VEEAM.USER}

The username of the Veeam Backup and Replication account. It is used to obtain an access token.

{$VEEAM.DATA.TIMEOUT}

A response timeout for the API.

10
{$CREATED.AFTER}

Returns sessions that are created after chosen days.

7
{$SESSION.NAME.MATCHES}

This macro is used in discovery rule to evaluate sessions.

.*
{$SESSION.NAME.NOT_MATCHES}

This macro is used in discovery rule to evaluate sessions.

CHANGE_IF_NEEDED
{$SESSION.TYPE.MATCHES}

This macro is used in discovery rule to evaluate sessions.

.*
{$SESSION.TYPE.NOT_MATCHES}

This macro is used in discovery rule to evaluate sessions.

CHANGE_IF_NEEDED
{$PROXIES.NAME.MATCHES}

This macro is used in proxies discovery rule.

.*
{$PROXIES.NAME.NOT_MATCHES}

This macro is used in proxies discovery rule.

CHANGE_IF_NEEDED
{$PROXIES.TYPE.MATCHES}

This macro is used in proxies discovery rule.

.*
{$PROXIES.TYPE.NOT_MATCHES}

This macro is used in proxies discovery rule.

CHANGE_IF_NEEDED
{$REPOSITORIES.NAME.MATCHES}

This macro is used in repositories discovery rule.

.*
{$REPOSITORIES.NAME.NOT_MATCHES}

This macro is used in repositories discovery rule.

CHANGE_IF_NEEDED
{$REPOSITORIES.TYPE.MATCHES}

This macro is used in repositories discovery rule.

.*
{$REPOSITORIES.TYPE.NOT_MATCHES}

This macro is used in repositories discovery rule.

CHANGE_IF_NEEDED
{$JOB.NAME.MATCHES}

This macro is used in discovery rule to evaluate the states of jobs.

.*
{$JOB.NAME.NOT_MATCHES}

This macro is used in discovery rule to evaluate the states of jobs.

CHANGE_IF_NEEDED
{$JOB.TYPE.MATCHES}

This macro is used in discovery rule to evaluate the states of jobs.

.*
{$JOB.TYPE.NOT_MATCHES}

This macro is used in discovery rule to evaluate the states of jobs.

CHANGE_IF_NEEDED
{$JOB.STATUS.MATCHES}

This macro is used in discovery rule to evaluate the states of jobs.

.*
{$JOB.STATUS.NOT_MATCHES}

This macro is used in discovery rule to evaluate the states of jobs.

CHANGE_IF_NEEDED

Items

Name Description Type Key and additional info
Veeam: Get metrics

The result of API requests is expressed in the JSON.

Script veeam.get.metrics
Veeam: Get errors

The errors from API requests.

Dependent item veeam.get.errors

Preprocessing

  • JSON Path: $.error

    Custom on fail: Set value to

  • Discard unchanged with heartbeat: 1h

Triggers

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

Zabbix has received errors in response to API requests.

length(last(/Veeam Backup and Replication by HTTP/veeam.get.errors))>0 Average

LLD rule Proxies discovery

Name Description Type Key and additional info
Proxies discovery

Discovery of proxies.

Dependent item veeam.proxies.discovery

Preprocessing

  • JSON Path: $.proxies.data

  • Discard unchanged with heartbeat: 6h

Item prototypes for Proxies discovery

Name Description Type Key and additional info
Veeam: Server [{#NAME}]: Get data

Gets raw data collected by the proxy server.

Dependent item veeam.proxy.server.raw[{#NAME}]

Preprocessing

  • JSON Path: $.managedServers.data.[?(@.id=='{#HOSTID}')].first()

Veeam: Proxy [{#NAME}] [{#TYPE}]: Get data

Gets raw data collected by the proxy with the name [{#NAME}], [{#TYPE}].

Dependent item veeam.proxy.raw[{#NAME}]

Preprocessing

  • JSON Path: $.proxies.data.[?(@.id=='{#ID}')].first()

Veeam: Proxy [{#NAME}] [{#TYPE}]: Max Task Count

The maximum number of concurrent tasks.

Dependent item veeam.proxy.maxtask[{#NAME}]

Preprocessing

  • JSON Path: $.server.maxTaskCount

Veeam: Proxy [{#NAME}] [{#TYPE}]: Host name

The name of the proxy server.

Dependent item veeam.proxy.server.name[{#NAME}]

Preprocessing

  • JSON Path: $.name

Veeam: Proxy [{#NAME}] [{#TYPE}]: Host type

The type of the proxy server.

Dependent item veeam.proxy.server.type[{#NAME}]

Preprocessing

  • JSON Path: $.type

LLD rule Repositories discovery

Name Description Type Key and additional info
Repositories discovery

Discovery of repositories.

Dependent item veeam.repositories.discovery

Preprocessing

  • JSON Path: $.repositories_states.data

  • Discard unchanged with heartbeat: 6h

Item prototypes for Repositories discovery

Name Description Type Key and additional info
Veeam: Repository [{#NAME}] [{#TYPE}]: Get data

Gets raw data from repository with the name: [{#NAME}], [{#TYPE}].

Dependent item veeam.repositories.raw[{#NAME}]

Preprocessing

  • JSON Path: $.repositories_states.data.[?(@.id=='{#ID}')].first()

Veeam: Repository [{#NAME}] [{#TYPE}]: Used space [{#PATH}]

Used space by repositories expressed in gigabytes (GB).

Dependent item veeam.repository.capacity[{#NAME}]

Preprocessing

  • JSON Path: $.usedSpaceGB

Veeam: Repository [{#NAME}] [{#TYPE}]: Free space [{#PATH}]

Free space of repositories expressed in gigabytes (GB).

Dependent item veeam.repository.free.space[{#NAME}]

Preprocessing

  • JSON Path: $.freeGB

LLD rule Sessions discovery

Name Description Type Key and additional info
Sessions discovery

Discovery of sessions.

Dependent item veeam.sessions.discovery

Preprocessing

  • JSON Path: $.sessions.data

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 6h

Item prototypes for Sessions discovery

Name Description Type Key and additional info
Veeam: Session [{#NAME}] [{#TYPE}]: Get data

Gets raw data from session with the name: [{#NAME}], [{#TYPE}].

Dependent item veeam.sessions.raw[{#ID}]

Preprocessing

  • JSON Path: $.sessions.data.[?(@.id=='{#ID}')].first()

    Custom on fail: Discard value

Veeam: Session [{#NAME}] [{#TYPE}]: State

The state of the session. The enums used: Stopped, Starting, Stopping, Working, Pausing, Resuming, WaitingTape, Idle, Postprocessing, WaitingRepository, WaitingSlot.

Dependent item veeam.sessions.state[{#ID}]

Preprocessing

  • JSON Path: $.state

Veeam: Session [{#NAME}] [{#TYPE}]: Result

The result of the session. The enums used: None, Success, Warning, Failed.

Dependent item veeam.sessions.result[{#ID}]

Preprocessing

  • JSON Path: $.result.result

Veeam: Session [{#NAME}] [{#TYPE}]: Message

A message that explains the session result.

Dependent item veeam.sessions.message[{#ID}]

Preprocessing

  • JSON Path: $.result.message

Veeam: Session progress percent [{#NAME}] [{#TYPE}]

The progress of the session expressed as percentage.

Dependent item veeam.sessions.progress.percent[{#ID}]

Preprocessing

  • JSON Path: $.progressPercent

Trigger prototypes for Sessions discovery

Name Description Expression Severity Dependencies and additional info
Veeam: Last result session failed find(/Veeam Backup and Replication by HTTP/veeam.sessions.result[{#ID}],,"like","Failed")=1 Average Manual close: Yes

LLD rule Jobs states discovery

Name Description Type Key and additional info
Jobs states discovery

Discovery of the jobs states.

Dependent item veeam.job.state.discovery

Preprocessing

  • JSON Path: $.jobs_states.data

  • Discard unchanged with heartbeat: 6h

Item prototypes for Jobs states discovery

Name Description Type Key and additional info
Veeam: Job states [{#NAME}] [{#TYPE}]: Get data

Gets raw data from the job states with the name [{#NAME}].

Dependent item veeam.jobs.states.raw[{#ID}]

Preprocessing

  • JSON Path: $.jobs_states.data.[?(@.id=='{#ID}')].first()

Veeam: Job states [{#NAME}] [{#TYPE}]: Status

The current status of the job. The enums used: running, inactive, disabled.

Dependent item veeam.jobs.status[{#ID}]

Preprocessing

  • JSON Path: $.status

Veeam: Job states [{#NAME}] [{#TYPE}]: Last result

The result of the session. The enums used: None, Success, Warning, Failed.

Dependent item veeam.jobs.last.result[{#ID}]

Preprocessing

  • JSON Path: $.lastResult

Trigger prototypes for Jobs states discovery

Name Description Expression Severity Dependencies and additional info
Veeam: Last result job failed find(/Veeam Backup and Replication by HTTP/veeam.jobs.last.result[{#ID}],,"like","Failed")=1 Average Manual close: Yes

Feedback

Please report any issues with the template at https://support.zabbix.com

You can also provide feedback, discuss the template, or ask for help at ZABBIX forums