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.0
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.
- 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-rev1 |
| {$VEEAM.HTTP.PROXY} | Sets the HTTP proxy to |
|
| {$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 |
| {$SESSION.RESULT.MATCHES} | Filter of discoverable sessions by result. |
.* |
| {$SESSION.RESULT.NOT_MATCHES} | Filter to exclude discoverable sessions by result. |
Success |
| {$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[{#ID}] Preprocessing
|
| Session [{#NAME}] [{#TYPE}]: State | The state of the session. The enums used: |
Dependent item | veeam.sessions.state[{#ID}] Preprocessing
|
| Session [{#NAME}] [{#TYPE}]: Result | The result of the session. The enums used: |
Dependent item | veeam.sessions.result[{#ID}] Preprocessing
|
| Session [{#NAME}] [{#TYPE}]: Message | A message that explains the session result. |
Dependent item | veeam.sessions.message[{#ID}] Preprocessing
|
| Session [{#NAME}] [{#TYPE}]: Progress percent | The progress of the session expressed as percentage. |
Dependent item | veeam.sessions.progress.percent[{#ID}] 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[{#ID}])=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