Skip to main content

Veeam VAC Exporter for Prometheus

Project description

# vac_exporter

Veeam VAC Exporter for Prometheus.

Get VAC Tenant information:
* Tenant Backuped VMs
* Tenant Replicated VMs
* Tenant Backed up to Cloud VMs
* Tenant Storage Quota
* Tenant VMs Quota
* Tenant Traffic Quota
* Tenant Used Storage
* Tenant Used Traffic
* Tenant jobs Processing Rate
* Tenant jobs Transferred Data
* Tenant jobs Protected VM count

## Install

You can do the following to run this exporter:

* Install locally

```
$> python setup.py install
$> vac_exporter -c /path/to/your/config
```

* Run via Docker container

```
docker run -it --rm -p 9273:9273 -e VAC_USER=${VAC_USERNAME} -e VAC_PASSWORD=${VAC_PASSWORD} -e VAC_IGNORE_SSL=True --name vac_exporter registry.gitlab.com/frenchtoasters/vac_exporter:latest
```

## Configuration

You should only provide a configuration file if the environment variables are not going to be set. If you are going to use a configuration file for your container you will have to edit the container ENTRYPOINT like so:

```
ENTRYPOINT ["/usr/local/bin/vac_exporter","-c","/path/to/your/config"]
```

The following is what an example configuration file would look like, note that you can have multiple sections for different VAC hosts:

```
default:
vac_user: "user"
vac_password: "password"
ignore_ssl: False
```

### Environment Variables

| Variable | Precedence | Defaults | Description |
|----------------|------------------------|----------|---------------------------------------------------|
| VAC_HOST | config, env, get_param | n/a | vac server to connect to |
| VAC_USER | config, env | n/a | User for connecting to vac |
| VAC_PASSWORD | config, env | n/a | Password for connecting to vac |
| VAC_IGNORE_SSL | config, env | False | Ignore the ssl cert on the connection to vac host |


### Prometheus configuration

The following the base Prometheus configuration file.

```
- job_name: 'veeam_vac'
metrics_path: '/metrics'
static_configs:
- targets:
- 'veeam.company.com'
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: localhost:9273

# Example of Multiple VAC's usage

- job_name: vac_export
metrics_path: /metrics
static_configs:
- targets:
- vac01
- 'vac02.example.org'
- "vac03.com"
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: exporter_ip:9273
```

# Example Output

***Thanks to a certian Lobster***

`:9273/vac`

```
$> curl 127.0.0.1:9273/vac
# HELP teant_vms_backedup Number of protected vms of tenant
# TYPE teant_vms_backedup gauge
teant_vms_backedup{tenant_id="Tenant1",tenant_name="2"} 0.0
teant_vms_backedup{tenant_id="homelab",tenant_name="4"} 45.0
# HELP tenant_vms_replicated Number of replicated vms of tenant
# TYPE tenant_vms_replicated gauge
tenant_vms_replicated{tenant_id="Tenant1",tenant_name="2"} 0.0
tenant_vms_replicated{tenant_id="homelab",tenant_name="4"} 0.0
# HELP tenant_vms_backed_cloud Number of tenat vms backed up to cloud
# TYPE tenant_vms_backed_cloud gauge
tenant_vms_backed_cloud{tenant_id="Tenant1",tenat_name="2"} 0.0
tenant_vms_backed_cloud{tenant_id="homelab",tenat_name="4"} 3.0
# HELP job_processing_rate Rate of job processing
# TYPE job_processing_rate gauge
job_processing_rate{job_id="1",job_name="SQL_To_CloudConnect",tenant_id="4",units="B/s"} 0.0
job_processing_rate{job_id="2",job_name="vcd",tenant_id="4",units="MB/s"} 31.47
job_processing_rate{job_id="3",job_name="domain-controllers",tenant_id="4",units="MB/s"} 33.6
job_processing_rate{job_id="4",job_name="veeam",tenant_id="4",units="MB/s"} 28.93
job_processing_rate{job_id="5",job_name="veeam-sp",tenant_id="4",units="MB/s"} 33.66
job_processing_rate{job_id="6",job_name="Testing",tenant_id="4",units="MB/s"} 52.54
job_processing_rate{job_id="7",job_name="mail",tenant_id="4",units="MB/s"} 5.89
job_processing_rate{job_id="8",job_name="vmware",tenant_id="4",units="MB/s"} 56.54
job_processing_rate{job_id="9",job_name="centos_no_connectivity_restore",tenant_id="4",units="B/s"} 0.0
job_processing_rate{job_id="10",job_name="plex",tenant_id="4",units="MB/s"} 38.63
job_processing_rate{job_id="11",job_name="templates",tenant_id="4",units="B/s"} 0.0
job_processing_rate{job_id="12",job_name="sql_aap",tenant_id="4",units="MB/s"} 33.83
job_processing_rate{job_id="13",job_name="ccr-seed",tenant_id="4",units="MB/s"} 99.06
job_processing_rate{job_id="14",job_name="test_vcd_test",tenant_id="4",units="MB/s"} 46.5
job_processing_rate{job_id="2",job_name="Backup_Copy_Test",tenant_id="4",units="B/s"} 0.0
job_processing_rate{job_id="3",job_name="Backup_Copy_Test_3",tenant_id="4",units="B/s"} 0.0
job_processing_rate{job_id="4",job_name="TinyVM and CentOS SYN full",tenant_id="4",units="B/s"} 0.0
job_processing_rate{job_id="5",job_name="test_to_ds_clone1",tenant_id="4",units="B/s"} 0.0
job_processing_rate{job_id="15",job_name="SureBackup Job 1",tenant_id="4",units="B/s"} 0.0
# HELP job_transfer_data Amount of data transferred in job
# TYPE job_transfer_data gauge
job_transfer_data{job_id="1",job_name="SQL_To_CloudConnect",tenant_id="4",units="B"} 0.0
job_transfer_data{job_id="2",job_name="vcd",tenant_id="4",units="MB"} 66.24
job_transfer_data{job_id="3",job_name="domain-controllers",tenant_id="4",units="MB"} 176.18
job_transfer_data{job_id="4",job_name="veeam",tenant_id="4",units="GB"} 3.2
job_transfer_data{job_id="5",job_name="veeam-sp",tenant_id="4",units="MB"} 880.77
job_transfer_data{job_id="6",job_name="Testing",tenant_id="4",units="GB"} 11.8
job_transfer_data{job_id="7",job_name="mail",tenant_id="4",units="MB"} 197.03
job_transfer_data{job_id="8",job_name="vmware",tenant_id="4",units="MB"} 805.33
job_transfer_data{job_id="9",job_name="centos_no_connectivity_restore",tenant_id="4",units="B"} 32.0
job_transfer_data{job_id="10",job_name="plex",tenant_id="4",units="MB"} 477.45
job_transfer_data{job_id="11",job_name="templates",tenant_id="4",units="B"} 0.0
job_transfer_data{job_id="12",job_name="sql_aap",tenant_id="4",units="GB"} 10.97
job_transfer_data{job_id="13",job_name="ccr-seed",tenant_id="4",units="GB"} 1.12
job_transfer_data{job_id="14",job_name="test_vcd_test",tenant_id="4",units="GB"} 16.28
job_transfer_data{job_id="2",job_name="Backup_Copy_Test",tenant_id="4",units="B"} 0.0
job_transfer_data{job_id="3",job_name="Backup_Copy_Test_3",tenant_id="4",units="B"} 0.0
job_transfer_data{job_id="4",job_name="TinyVM and CentOS SYN full",tenant_id="4",units="B"} 64.0
job_transfer_data{job_id="5",job_name="test_to_ds_clone1",tenant_id="4",units="B"} 0.0
job_transfer_data{job_id="15",job_name="SureBackup Job 1",tenant_id="4",units="B"} 0.0
# HELP job_protected_vms Protected vms in job
# TYPE job_protected_vms gauge
job_protected_vms{job_id="1",job_name="SQL_To_CloudConnect",tenant_id="4"} 1.0
job_protected_vms{job_id="2",job_name="vcd",tenant_id="4"} 1.0
job_protected_vms{job_id="3",job_name="domain-controllers",tenant_id="4"} 1.0
job_protected_vms{job_id="4",job_name="veeam",tenant_id="4"} 8.0
job_protected_vms{job_id="5",job_name="veeam-sp",tenant_id="4"} 2.0
job_protected_vms{job_id="6",job_name="Testing",tenant_id="4"} 17.0
job_protected_vms{job_id="7",job_name="mail",tenant_id="4"} 1.0
job_protected_vms{job_id="8",job_name="vmware",tenant_id="4"} 3.0
job_protected_vms{job_id="9",job_name="centos_no_connectivity_restore",tenant_id="4"} 1.0
job_protected_vms{job_id="10",job_name="plex",tenant_id="4"} 1.0
job_protected_vms{job_id="11",job_name="templates",tenant_id="4"} 6.0
job_protected_vms{job_id="12",job_name="sql_aap",tenant_id="4"} 1.0
job_protected_vms{job_id="13",job_name="ccr-seed",tenant_id="4"} 1.0
job_protected_vms{job_id="14",job_name="test_vcd_test",tenant_id="4"} 3.0
job_protected_vms{job_id="2",job_name="Backup_Copy_Test",tenant_id="4"} 1.0
job_protected_vms{job_id="3",job_name="Backup_Copy_Test_3",tenant_id="4"} 1.0
job_protected_vms{job_id="4",job_name="TinyVM and CentOS SYN full",tenant_id="4"} 2.0
job_protected_vms{job_id="5",job_name="test_to_ds_clone1",tenant_id="4"} 0.0
job_protected_vms{job_id="15",job_name="SureBackup Job 1",tenant_id="4"} 0.0
# HELP resources_storage_quota Storage quota for tenant resources
# TYPE resources_storage_quota gauge
resources_storage_quota{resource_id="1",tenant_id="2",tenant_name="Tenant1",units="GB"} 500.0
# HELP resources_vms_quota VM quota for tenant resources
# TYPE resources_vms_quota gauge
resources_vms_quota{resource_id="1",tenant_id="2",tenant_name="Tenant1"} 0.0
# HELP resources_traffic_quota Network traffic quota for tenant resources
# TYPE resources_traffic_quota gauge
resources_traffic_quota{resource_id="1",tenant_id="2",tenant_name="Tenant1",units="GB"} 0.0
# HELP resources_used_storage Used storage for tenant resources
# TYPE resources_used_storage gauge
resources_used_storage{resource_id="1",tenant_id="2",tenant_name="Tenant1",units="GB"} 142.6
# HELP resources_used_traffic Used network traffic for tenant resources
# TYPE resources_used_traffic gauge
resources_used_traffic{resource_id="1",tenant_id="2",tenant_name="Tenant1",units="MB"} 18.5
```

`:9273/metrics`

```
$> curl 127.0.0.1:9273/metrics
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 96972800.0
# HELP process_resident_memory_bytes Resident memory size in bytes.
# TYPE process_resident_memory_bytes gauge
process_resident_memory_bytes 25964544.0
# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
# TYPE process_start_time_seconds gauge
process_start_time_seconds 1549495918.93
# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
# TYPE process_cpu_seconds_total counter
process_cpu_seconds_total 0.21000000000000002
# HELP process_open_fds Number of open file descriptors.
# TYPE process_open_fds gauge
process_open_fds 6.0
# HELP process_max_fds Maximum number of open file descriptors.
# TYPE process_max_fds gauge
process_max_fds 1048576.0
# HELP vac_collection_duration_seconds Duration of collections by the VAC exporter
# TYPE vac_collection_duration_seconds summary
# HELP vac_request_errors_total Errors in requests to VAC exporter
# TYPE vac_request_errors_total counter
```

`:9273/healthz`

```
$> curl 127.0.0.1:9273/healthz
OK
```

`:9273/`

```
$> curl 127.0.0.1:9273/
VAC Exporter
Visit /vac?target=1.2.3.4 to use.
```


Project details


Release history Release notifications

This version

0.0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for vac-exporter, version 0.0.1
Filename, size File type Python version Upload date Hashes
Filename, size vac_exporter-0.0.1-py3-none-any.whl (11.2 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size vac_exporter-0.0.1.tar.gz (10.9 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page