Available solutions
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: The native Veeam Backup & Replication REST API (port 9419) is available only in editions that include REST API functionality.
Supported editions include:
- Veeam Universal License (VUL) editions:
- Foundation
- Advanced
- Premium
- Socket-based editions:
- Enterprise
- Enterprise Plus
- Community Edition
- Supported with workload limitations defined by Veeam licensing.
See Veeam Data Platform Feature Comparison for more details.
Requirements
Zabbix version: 7.4 and higher.
Tested versions
This template has been tested on:
- Veeam Backup and Replication, version 13.1.1.18
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
- Create a user to monitor the service or use an existing read-only account.
See Veeam Help Center for more details. NOTE: License, Authorization Events, and Security Analyzer Data require the "Backup Administrator" role; without it, these items are not supported.
- Link the template to a host.
- Configure the following macros:
{$VEEAM.API.URL},{$VEEAM.API.VERSION},{$VEEAM.USER}, and{$VEEAM.PASSWORD}.
Macros used
| Name | Description | Default |
|---|---|---|
| {$VEEAM.API.URL} | The Veeam API endpoint is a URL in the format |
https://localhost:9419 |
| {$VEEAM.API.VERSION} | The REST API revision. |
1.3-rev2 |
| {$VEEAM.HTTP.PROXY} | Sets the HTTP proxy to |
|
| {$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 "Veeam Backup and Replication", e.g. {$HTTP.TLS.VERIFY:"Veeam Backup and Replication"}. |
full |
| {$VEEAM.PASSWORD} | The |
|
| {$VEEAM.USER} | The |
|
| {$VEEAM.DATA.FREQUENCY} | The update interval for the get metrics item. |
1m |
| {$VEEAM.SECURITY.DATA.FREQUENCY} | The update interval for the security analyzer best practices item. |
4h |
| {$VEEAM.DATA.TIMEOUT} | A response timeout for the API. |
30 |
| {$CREATED.AFTER} | Returns sessions that are created after chosen days. |
7 |
| {$SESSION.NAME.MATCHES} | Filter of discoverable sessions by name. |
.* |
| {$SESSION.NAME.NOT_MATCHES} | Filter to exclude discoverable sessions by name. |
CHANGE_IF_NEEDED |
| {$SESSION.TYPE.MATCHES} | Filter of discoverable sessions by type. |
.* |
| {$SESSION.TYPE.NOT_MATCHES} | Filter to exclude discoverable sessions by type. |
CHANGE_IF_NEEDED |
| {$PROXIES.NAME.MATCHES} | Filter of discoverable proxies by name. |
.* |
| {$PROXIES.NAME.NOT_MATCHES} | Filter to exclude discoverable proxies by name. |
CHANGE_IF_NEEDED |
| {$PROXIES.TYPE.MATCHES} | Filter of discoverable proxies by type. |
.* |
| {$PROXIES.TYPE.NOT_MATCHES} | Filter to exclude discoverable proxies by type. |
CHANGE_IF_NEEDED |
| {$REPOSITORIES.NAME.MATCHES} | Filter of discoverable repositories by name. |
.* |
| {$REPOSITORIES.NAME.NOT_MATCHES} | Filter to exclude discoverable repositories by name. |
CHANGE_IF_NEEDED |
| {$REPOSITORIES.TYPE.MATCHES} | Filter of discoverable repositories by type. |
.* |
| {$REPOSITORIES.TYPE.NOT_MATCHES} | Filter to exclude discoverable repositories by type. |
CHANGE_IF_NEEDED |
| {$JOB.NAME.MATCHES} | Filter of discoverable jobs by name. |
.* |
| {$JOB.NAME.NOT_MATCHES} | Filter to exclude discoverable jobs by name. |
CHANGE_IF_NEEDED |
| {$JOB.TYPE.MATCHES} | Filter of discoverable jobs by type. |
.* |
| {$JOB.TYPE.NOT_MATCHES} | Filter to exclude discoverable jobs by type. |
CHANGE_IF_NEEDED |
| {$JOB.STATUS.MATCHES} | Filter of discoverable jobs by status. |
.* |
| {$JOB.STATUS.NOT_MATCHES} | Filter to exclude discoverable jobs by status. |
CHANGE_IF_NEEDED |
| {$VEEAM.LICENSE.EXPIRY.WARN} | Number of days until the license expires. |
7 |
| {$MALWARE_EVENTS.TYPE.MATCHES} | Filter of discoverable malware events by type. |
.* |
| {$MALWARE_EVENTS.TYPE.NOT_MATCHES} | Filter to exclude discoverable malware events by type. |
CHANGE_IF_NEEDED |
| {$MALWARE_EVENTS.SEVERITY.MATCHES} | Filter of discoverable malware events by severity. |
.* |
| {$MALWARE_EVENTS.SEVERITY.NOT_MATCHES} | Filter to exclude discoverable malware events by severity. |
CHANGE_IF_NEEDED |
| {$MALWARE_EVENTS.STATE.MATCHES} | Filter of discoverable malware events by state. |
.* |
| {$MALWARE_EVENTS.STATE.NOT_MATCHES} | Filter to exclude discoverable malware events by state. |
CHANGE_IF_NEEDED |
| {$SECURITY_ANALYZER.STATUS.MATCHES} | Filter of discoverable security best practices by status. |
.* |
| {$SECURITY_ANALYZER.STATUS.NOT_MATCHES} | Filter to exclude discoverable security best practices by status. |
OK |
| {$SECURITY_ANALYZER.BEST_PRACTICE.MATCHES} | Filter of discoverable security best practices by name. |
.* |
| {$SECURITY_ANALYZER.BEST_PRACTICE.NOT_MATCHES} | Filter to exclude discoverable security best practices by name. |
CHANGE_IF_NEEDED |
| {$AUTH_EVENTS.NAME.MATCHES} | Filter of discoverable authorization events by name. |
.* |
| {$AUTH_EVENTS.NAME.NOT_MATCHES} | Filter to exclude discoverable authorization events by name. |
CHANGE_IF_NEEDED |
| {$AUTH_EVENTS.STATE.MATCHES} | Filter of discoverable authorization events by state. |
.* |
| {$AUTH_EVENTS.STATE.NOT_MATCHES} | Filter to exclude discoverable authorization events by state. |
CHANGE_IF_NEEDED |
| {$VEEAM.REPOSITORY.SPACE.WARN} | Repository space warning threshold, expressed in %. |
80 |
Items
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Get metrics | The result of API requests is returned as JSON. |
Script | veeam.get.metrics |
| Get security analyzer results | Authenticates with the Veeam API and retrieves security analyzer best practices data. |
HTTP agent | veeam.security.analyzer.get Preprocessing
|
| Get errors | The errors from API requests. |
Dependent item | veeam.get.errors Preprocessing
|
| License: Status | The status of the license. |
Dependent item | veeam.license.status Preprocessing
|
| License: Expiration date | The expiration date of the license. |
Dependent item | veeam.license.expiration Preprocessing
|
| License: Licensed instances | The number of licensed instances. |
Dependent item | veeam.license.licensed.instances Preprocessing
|
| License: Used instances | The number of used instances. |
Dependent item | veeam.license.used.instances Preprocessing
|
Triggers
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Veeam Backup: 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 | |
| Veeam Backup: License is expired | The Veeam license is expired. |
last(/Veeam Backup and Replication by HTTP/veeam.license.status)=1 |
Average | |
| Veeam Backup: License is invalid | The Veeam license is invalid. |
last(/Veeam Backup and Replication by HTTP/veeam.license.status)=2 |
Warning | |
| Veeam Backup: License expires soon | The Veeam license expires soon. |
(last(/Veeam Backup and Replication by HTTP/veeam.license.expiration) - now()) / 86400 < {$VEEAM.LICENSE.EXPIRY.WARN} and last(/Veeam Backup and Replication by HTTP/veeam.license.expiration) > now() |
Warning | Manual close: Yes |
| Veeam Backup: Used instances exceed the licensed count | The number of used instances is more than the number of licensed instances. |
last(/Veeam Backup and Replication by HTTP/veeam.license.used.instances)>last(/Veeam Backup and Replication by HTTP/veeam.license.licensed.instances) |
Average |
LLD rule Proxies discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Proxies discovery | Discovery of proxies. |
Dependent item | veeam.proxies.discovery Preprocessing
|
Item prototypes for Proxies discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Server [{#NAME}]: Get data | Gets raw data collected by the proxy server. |
Dependent item | veeam.proxy.server.raw[{#NAME}] Preprocessing
|
| Proxy [{#NAME}]: Get data | Gets raw data collected by the proxy with the name |
Dependent item | veeam.proxy.raw[{#NAME}] Preprocessing
|
| Proxy [{#NAME}]: Max Task Count | The maximum number of concurrent tasks. |
Dependent item | veeam.proxy.max.task[{#NAME}] Preprocessing
|
| Proxy [{#NAME}]: Host name | The name of the proxy server. |
Dependent item | veeam.proxy.server.name[{#NAME}] Preprocessing
|
| Proxy [{#NAME}]: Host type | The type of the proxy server. |
Dependent item | veeam.proxy.server.type[{#NAME}] Preprocessing
|
| Proxy [{#NAME}]: Status | The status of the proxy server. |
Dependent item | veeam.proxy.server.status[{#NAME}] Preprocessing
|
Trigger prototypes for Proxies discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Veeam Backup: Proxy [{#NAME}] is offline | Proxy |
min(/Veeam Backup and Replication by HTTP/veeam.proxy.server.status[{#NAME}],5m)=0 |
High |
LLD rule Repositories discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Repositories discovery | Discovery of repositories. |
Dependent item | veeam.repositories.discovery Preprocessing
|
Item prototypes for Repositories discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Repository [{#NAME}]: Path [{#PATH}]: Get data | Gets raw data from repository with the name: |
Dependent item | veeam.repositories.raw[{#ID}] Preprocessing
|
| Repository [{#NAME}]: Path [{#PATH}]: Capacity | The total capacity of the repository. |
Dependent item | veeam.repository.capacity.space[{#ID}] Preprocessing
|
| Repository [{#NAME}]: Path [{#PATH}]: Used space | The used space in the repository. |
Dependent item | veeam.repository.used.space[{#ID}] Preprocessing
|
| Repository [{#NAME}]: Path [{#PATH}]: Free space | The free space in the repository. |
Dependent item | veeam.repository.free.space[{#ID}] Preprocessing
|
| Repository [{#NAME}]: Path [{#PATH}]: Utilization space | The percentage of repository capacity in use. |
Calculated | veeam.repository.utilization[{#ID}] |
| Repository [{#NAME}]: Path [{#PATH}]: Is Out Of Date | Indicates whether the repository is out of date. |
Dependent item | veeam.repository.out_of_date[{#ID}] Preprocessing
|
| Repository [{#NAME}]: Path [{#PATH}]: State | The online/offline state of the repository. |
Dependent item | veeam.repository.state[{#ID}] Preprocessing
|
Trigger prototypes for Repositories discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Veeam Backup: Repository [{#NAME}] utilization is high | Utilization of the repository |
min(/Veeam Backup and Replication by HTTP/veeam.repository.utilization[{#ID}],5m)>{$VEEAM.REPOSITORY.SPACE.WARN} |
High | |
| Veeam Backup: Repository [{#NAME}] is out of date | Repository |
last(/Veeam Backup and Replication by HTTP/veeam.repository.out_of_date[{#ID}])=1 |
Warning | |
| Veeam Backup: Repository [{#NAME}] is offline | Repository |
min(/Veeam Backup and Replication by HTTP/veeam.repository.state[{#ID}],5m)=0 |
High |
LLD rule Sessions discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Sessions discovery | Discovery of sessions. |
Dependent item | veeam.sessions.discovery Preprocessing
|
Item prototypes for Sessions discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Session [{#NAME}] [{#TYPE}]: Get data | Gets raw data from session with the name: |
Dependent item | veeam.sessions.raw[{#NAME}/{#TYPE}] Preprocessing
|
| Session [{#NAME}] [{#TYPE}]: State | The state of the session. The enums used: |
Dependent item | veeam.sessions.state[{#NAME}/{#TYPE}] Preprocessing
|
| Session [{#NAME}] [{#TYPE}]: Result | The result of the session. The enums used: |
Dependent item | veeam.sessions.result[{#NAME}/{#TYPE}] Preprocessing
|
| Session [{#NAME}] [{#TYPE}]: Message | A message that explains the session result. |
Dependent item | veeam.sessions.message[{#NAME}/{#TYPE}] Preprocessing
|
| Session [{#NAME}] [{#TYPE}]: Progress percent | The progress of the session expressed as percentage. |
Dependent item | veeam.sessions.progress.percent[{#NAME}/{#TYPE}] Preprocessing
|
Trigger prototypes for Sessions discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Veeam Backup: Last result session failed | The last result of the session |
last(/Veeam Backup and Replication by HTTP/veeam.sessions.result[{#NAME}/{#TYPE}])=4 |
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
|
Item prototypes for Jobs states discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Job states [{#NAME}] [{#TYPE}]: Get data | Gets raw data from the job states with the name |
Dependent item | veeam.jobs.states.raw[{#ID}] Preprocessing
|
| Job states [{#NAME}] [{#TYPE}]: Status | The current status of the job. The enums used: |
Dependent item | veeam.jobs.status[{#ID}] Preprocessing
|
| Job states [{#NAME}] [{#TYPE}]: Last result | The last run result of the job. The enums used: |
Dependent item | veeam.jobs.last.result[{#ID}] Preprocessing
|
Trigger prototypes for Jobs states discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Veeam Backup: Last result job failed | The last run result of the job |
last(/Veeam Backup and Replication by HTTP/veeam.jobs.last.result[{#ID}])=4 |
Average | Manual close: Yes |
LLD rule Malware events discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Malware events discovery | Discovery of malware events. |
Dependent item | veeam.malware.events.discovery Preprocessing
|
Item prototypes for Malware events discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Malware event [{#MACHINE}]: Get data | Gets raw data from malware event with the ID |
Dependent item | veeam.malware.event.get[{#ID}] Preprocessing
|
| Malware event [{#MACHINE}]: Severity | The severity level of the malware event. The enums used: |
Dependent item | veeam.malware.event.severity[{#ID}] Preprocessing
|
| Malware event [{#MACHINE}]: State | The state of the malware event. The enums used: |
Dependent item | veeam.malware.event.state[{#ID}] Preprocessing
|
Trigger prototypes for Malware events discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Veeam Backup: Malware infection detected on [{#MACHINE}] | A malware infection has been detected on the machine |
last(/Veeam Backup and Replication by HTTP/veeam.malware.event.severity[{#ID}])=3 |
High | Manual close: Yes |
| Veeam Backup: Suspicious malware activity detected on [{#MACHINE}] | Suspicious malware activity has been detected on the machine |
last(/Veeam Backup and Replication by HTTP/veeam.malware.event.severity[{#ID}])=2 |
Average | Manual close: Yes |
LLD rule Authorization events discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Authorization events discovery | Discovery of authorization events. |
Dependent item | veeam.authorization.events.discovery Preprocessing
|
Item prototypes for Authorization events discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Authorization event [{#NAME}]: Get data | Gets raw data from authorization event with the ID |
Dependent item | veeam.authorization.event.get[{#ID}] Preprocessing
|
| Authorization event [{#NAME}]: State | The state of the authorization event. The enums used: |
Dependent item | veeam.authorization.event.state[{#ID}] Preprocessing
|
Trigger prototypes for Authorization events discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Veeam Backup: Authorization event [{#NAME}] is rejected | The authorization event |
last(/Veeam Backup and Replication by HTTP/veeam.authorization.event.state[{#ID}])=3 |
High | Manual close: Yes |
LLD rule Security analyzer discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Security analyzer discovery | Discovery of security best practices compliance checks. |
Dependent item | veeam.security.analyzer.discovery Preprocessing
|
Item prototypes for Security analyzer discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Security [{#BEST_PRACTICE}]: Status | The compliance status of the security best practice. The enums used: |
Dependent item | veeam.security.best.practice.status[{#ID}] Preprocessing
|
Trigger prototypes for Security analyzer discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| Veeam Backup: Security best practice violation: [{#BEST_PRACTICE}] | The security best practice |
last(/Veeam Backup and Replication by HTTP/veeam.security.best.practice.status[{#ID}])=6 |
High | Manual close: Yes |
| Veeam Backup: Security best practice unable to check: [{#BEST_PRACTICE}] | The security best practice |
last(/Veeam Backup and Replication by HTTP/veeam.security.best.practice.status[{#ID}])=5 |
Warning | 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