/nakivo_prometheus_exporter

Nakivo Backup & Replication prometheus data exporter

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

License Percentage of issues still open GitHub Release Linux linter

Nakivo Prometheus exporter

This tool connects to Navkio Backup & Replication API endpoints, and fetches licensing and backup information in order to present this data as prometheus metrics that can be pulled via a /metrics endpoint.

Compatibility

This project has been tested on Nakivo Backup & Replication v9 and v10.
It runs on most Linux flavors that have Python 3.6+, and can even run on Windows.

So far, Nakivo requires you to have an enterprise plus license to be able to use the API.

Requires python-pip for setup via dnf install python3-pip or apt-get install python3-pip

Grafana dashboard

The exporter comes with a basic Grafana Dashboard, showing:

  • Licensing status
  • Backup states for objects of per job
  • Backup sizes
  • Backup durations

image image

Quick start

Create a readonly API user with View only role so your exporter doesn't have more rights than it should. image Also, you may want to modifiy the View Only role to add licensing view permissions in Permission > Configuation > Licensing > View only image

Grab yourself a copy of nakivo_prometheus_exporter by running

python3 pip install nakivo_prometheus_exporter

Create your YAML config file in let's say /etc/nakivo_prometheus_exporter.yaml

http_server:
  listen: 0.0.0.0
  port: 9119
  username: me
  password: MySecret!Password
  # We usually don't authenticate for prometheus exporters
  no_auth: true
  log_file: /var/log/nakivo_prometheus_exporter.log
nakivo_hosts:
  - MyNakivoHost:
    host: https://mynakivohost.tld:4443
    username: readonly
    password: SomeNicePassword
    cert_verify: False
  - AnotherNakivoHost:
    host: https://othernakivo.local:4443
    username: readonly
    password: OtherPasswrod
    cert_verify: True

Once you're done, you can try to run the exporter with

nakivo_prometheus_exporter --config-file=/etc/nakivo_prometheus_eporter.yaml

Once running, you might want to check the metrics with:

curl http://localhost:9119/metrics

If everything works, you can use the provided systemd service file from the systemd directory, copy it into /etc/systemd/system and run the service with

systemctl enable --now nakivo_prometheus_exporter

Caveats

Since on every scraping, the exporter connects to ALL Nakivo API endpoints defined in the host section, you should set the scraper interval to something reasonable like 1 hour, and increase the scrape timeout value to one minute (see the prometheus.yml example file).

Other caveats

This is a quick and dirty proof of concept, only fetching backup states/duration/sizes and licensing state.
There's still quiescing information missing (didn't find it in the (Nakivo API)[https://helpcenter.nakivo.com/api-reference/Content/API-Reference-Overview.htm])

If some traction is obersved for the project, we might add missing or interesting metrics.

Running on Windows

While this typically targets Linux, one can run this exporter on Windows, as single threaded instance without concurrency. Running as service can be achieved via nssm.

Troubleshooting

You can enable debugging in order to have more info with

export _DEBUG=true
/usr/local/bin/nakivo_prometheus_exporter -c /etc/nakivo_prometheus.exporter.yaml

Like it ?

Write us ;)