Veeam (Agent)

Veeam Backup & Replication nutzt als Zielport standardmässig 10006/tcp, dessen API läuft auf Port 9419. Das Manager-Interface läuft auf https://veeam-em:9443 (dem Enterprise Manager Node), dessen API auf Port 9398/tcp.

Veeam-Repo installieren:

dnf -y localinstall veeam-release-el8-*.x86_64.rpm

Das Repo sieht für EL8 wie folgt aus:

[veeam]
name=Veeam Backup for GNU/Linux - $basearch
baseurl=http://repository.veeam.com/backup/linux/agent/rpm/el/8/x86_64
enabled=1
gpgcheck=1
gpgkey=http://repository.veeam.com/keys/RPM-EFDCEA77

Anschliessend:

dnf -y install veeam

Alternativ findet sich der Veeam-Client im von https://www.veeam.com/downloads.html herunterzuladenden, passenden ISO-Image. Anschliessend Installationsdateien aus dem ISO unter agents/linux auf den Client kopieren, z.B. nach /tmp. Im Beispiel wird der Veeam-Client für RHEL und kompatible behandelt.

Client konfigurieren (Backup-Jobs konfigurieren, optional Zugang zum Veeam-Server konfigurieren):

# without parameters starts a nice TUI:
veeam

Backup on-demand:

veeamconfig job start --name "BackupJob1"

Logs finden sich unterhalb von /var/log/veeam.

Siehe auch https://helpcenter.veeam.com/docs/agentforlinux/userguide/installation_process.html.

API

Ohne die Header-Angabe „Accept: application/json“ kommt hässliches XML zurück.

REST-API des Enterprise Managers
# get current session list
curl --silent --insecure --header "Accept: application/json" https://veeam:9398/api

# login
curl --silent --insecure --request POST \
    --verbose \
    --header "Authorization: Basic $(echo -n 'user:password' | base64)" \
    --header "Accept: application/json" \
    --header "Content-Length: 0" \
    https://veeam:9398/api/sessionMngr/?v=latest

Bei allen nachfolgenden Requests muss die im Response-Header (!) zurückgegebene X-RestSvcSessionId mitgegeben werden:

# overview
curl --silent --insecure --request GET \
    --header "Accept: application/json" \
    --header "X-RestSvcSessionId: mysessid" \
    https://veeam:9398/api/reports/summary/overview

# jobs
curl --silent --insecure --request GET \
    --header "Accept: application/json" \
    --header "X-RestSvcSessionId: mysessid" \
    https://veeam:9398/api/reports/summary/job_statistics

# vms-processed
curl --silent --insecure --request GET \
    --header "Accept: application/json" \
    --header "X-RestSvcSessionId: mysessid" \
    https://veeam:9398/api/reports/summary/processed_vms

# vms-overview
curl --silent --insecure --request GET \
    --header "Accept: application/json" \
    --header "X-RestSvcSessionId: mysessid" \
    https://veeam:9398/api/reports/summary/vms_overview

# repo
curl --silent --insecure --request GET \
    --header "Accept: application/json" \
    --header "X-RestSvcSessionId: mysessid" \
    https://veeam:9398/api/reports/summary/repository

# get a list of all backup servers
curl --silent --insecure --request GET \
    --header "Accept: application/json" \
    --header "X-RestSvcSessionId: mysessid" \
    https://veeam:9398/api/backupServers

# get a list of all backups
curl --silent --insecure --request GET \
    --header "Accept: application/json" \
    --header "X-RestSvcSessionId: mysessid" \
    https://veeam:9398/api/backups

# get a list of all jobs
# 2021-07: "Backup", "Replication", "BackupCopy" and "ImmediateBackupCopy" types only
# does not work for "Linux Agent Backup" or "Linux Agent Policy" for example
curl --silent --insecure --request GET \
    --header "Accept: application/json" \
    --header "X-RestSvcSessionId: mysessid" \
    https://veeam:9398/api/jobs

# get a list of all "Failed" or "Success" jobs since "2021-07-19T00:00:00Z"
# this function requires an "Enterprise Plus License"
curl --silent --insecure --request GET \
    --header "Accept: application/json" \
    --header "X-RestSvcSessionId: mysessid"
    'https://veeam:9398/api/query?type=BackupJobSession&format=entities&filter=result=="Failed";creationtime>"2021-07-19T00:00:00Z"'

Siehe auch https://helpcenter.veeam.com/docs/backup/em_rest/overview.html

REST-API von Backup & Replication
# login
curl --silent --insecure --request POST \
    --verbose \
    --header "Content-Length: 0" \
    https://veeam:9419/api/oauth2/authorization_code

Siehe auch https://helpcenter.veeam.com/docs/backup/vbr_rest/reference/vbr-rest.html

Built on 2022-06-03