banshee est en développement actif : les collecteurs vont encore changer, et une version que vous publiez demandera sans doute des ajustements. Pour un usage stable, attendez la version 1.0.0.

Services

banshee/services-collection/services/veeam/https/

jobs

The last result, state and age of the last success of each job of a Veeam Backup & Replication 12 or later, by its REST API.

  • services
  • backup
  • veeam
  • vbr
  • jobs
  • https
  • api

par banshee1 installation2 versions

Veeam Backup & Replication jobs, by its API

Returns, for each job of a Veeam Backup & Replication server, the result of its last run, its state, and the age of its last run that succeeded, read through its REST API. A job that fails says it at once; a job that no longer runs says it by the age of its last success, which grows. Four watches are offered, each one set on the probe.

Versions

Veeam Backup & Replication 12 and later, whose REST API serves the jobs and the sessions; the collector asks for the revision of the API 1.1-rev0, that of 12.0.0.1420, in which the routes and filters it reads already exist. Veeam's table of revisions gives it as served by 12.x, and as deprecated from 13.0: still served, but expected to become unsupported in a later version. Generic: no folder of version. Version 11 (revisions 1.0, now unsupported) has no route for the job states.

How it works

  1. POST https://<host:address>:9419/api/oauth2/token, with the header x-api-version: 1.1-rev0 and the form grant_type=password&username=…&password=…: an access token, kept ten minutes in the probe's cache, encrypted on the poller. A token Veeam no longer knows answers 401, and the collector logs in again, once.
  2. GET https://<host:address>:9419/api/v1/jobs/states?limit=200&skip=…, with the token as Authorization: Bearer, page after page:
{"data": [{"id": "6d0b8c6e-…", "name": "Daily VMs", "type": "Backup", "status": "inactive", "lastResult": "Success", "lastRun": "2026-10-26T01:00:03.123+01:00", "nextRun": "…"}], "pagination": {"total": 12, "count": 12, "skip": 0, "limit": 200}}
  1. For each job that is not disabled, GET https://<host:address>:9419/api/v1/sessions?jobIdFilter=<id>&limit=1&orderAsc=false&orderColumn=CreationTime&resultFilter=Success, and the same with resultFilter=Warning: the newest session that ended in each.
  • A job is named by its name; two jobs of one name each keep their own, the second carrying its id.
  • result is lastResult in lower case: success, warning, failed, or none for a job never run. state is running, inactive or disabled.
  • success-age is the time since the end (endTime) of the newer of the two sessions, in hours, against the poller's clock: a run that ended in Warning made its restore points, and counts as a success. It is not returned for a disabled job, nor for a job without any successful session in the history Veeam keeps.
  • A code 400, 401 or 403 on the login stops the collector misconfigured (the account refused), a code 403 on a list too; any other code but 200 stops it unreachable.

The password comes from protocol:http:password, a secret variable: it goes in the body of the login only, to https:// only. The token is a secret too, kept in the cache and sent in a header. The lists are not secret.

Prerequisites

  • The address of the backup server as the host's address, reachable from the poller in HTTPS on port 9419, or the port set in the variable veeam:port. The REST service presents the certificate made at install, self-signed by default: trust it by its pinned fingerprint in protocol:http:fingerprint, by its authority under protocol:tls:authorities, or by the first fingerprint trusted in the tab "Security".
  • An account of the backup server's domain or machine in protocol:http:user (DOMAIN\monitoring, or monitoring@domain.example) and its password in protocol:http:password, given the role Veeam Backup Viewer, read-only, in the console (Users and Roles).

Variables

NameLabelSaysDefault
veeam:portAPI portthe port of the REST API9419

Outputs

NameLabelUnitPer instance
resultLast result—yes, per job
stateState—yes, per job
success-ageAge of the last successhyes, per job

Watches

NameTitleKindDefaultsChecked by default
failedJob failedstate to avoid, on resultwarning on warning, critical on failedyes
oldLast success too oldabove a threshold, on success-agewarning above 30 h, critical above 54 h: a daily job missed once, then twiceyes
disabledJob disabledstate to avoid, on statewarning on disabledno
missingJob missingexpected instances, on resultno name given: it raises nothing until names are set on the probeno

A job that runs weekly needs its own probe, with "Last success too old" raised above a week; leave it out of the others by their selection (Jobs: All except Weekly*).

Limits

  • Two requests per job at each run, besides the list: a server of a few hundred jobs makes as many requests.
  • Every kind of job the API lists is judged (backup, replication, backup copy, agent); the jobs of the Veeam Agent managed alone, and of Veeam for Microsoft 365, are not in this API.
  • The address is written into the URL as is: an IPv6 address must be given as a name.
  • A version of Veeam that stops serving the revision 1.1-rev0 will refuse the requests: the collector stops unreachable with the code it answers, and needs a version written for a newer revision.
  • Not checked against a Veeam Backup & Replication: the routes, parameters, fields and revisions are those of the REST API reference of Veeam Backup & Replication (helpcenter.veeam.com: "Jobs", "Sessions" and the table of revisions, read in revision 1.1-rev0); the role Veeam Backup Viewer reading them is not checked.