[![License](https://img.shields.io/badge/license-GPLv3-blu.svg)](https://opensource.org/licenses/GPL-3.0)
[![Percentage of issues still open](http://isitmaintained.com/badge/open/netinvent/nakivo_prometheus_exporter.svg)](http://isitmaintained.com/project/netinvent/nakivo_prometheus_exporter "Percentage of issues still open")
[![GitHub Release](https://img.shields.io/github/release/netinvent/nakivo_prometheus_exporter.svg?label=Latest)](https://github.com/netinvent/nakivo_prometheus_exporter/releases/latest)
[![Linux linter](https://github.com/netinvent/nakivo_prometheus_exporter/actions/workflows/pylint-linux.yaml/badge.svg)](https://github.com/netinvent/nakivo_prometheus_exporter/actions/workflows/pylint-linux.yaml)
## 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](examples/grafana_dashboard_v0.1b.png)
![image](examples/grafana_dashboard_v0.1.png)
## Quick start
Create a readonly API user (View only role) so your exporter doesn't have more rights than it should.
![image](examples/nakivo_readonly_user.png)
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.
## 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 ;)
Raw data
{
"_id": null,
"home_page": "https://github.com/netinvent/nakivo_prometheus_exporter",
"name": "nakivo-prometheus-exporter",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "shell, backup, prometheus, linux, cli",
"author": "NetInvent - Orsiris de Jong",
"author_email": "contact@netinvent.fr",
"download_url": "https://files.pythonhosted.org/packages/bd/5d/c8aa329043a1063db11c0a3d3f015d4f81a83134ab4aea4e5501181dbd95/nakivo_prometheus_exporter-0.2.3.tar.gz",
"platform": null,
"description": "[![License](https://img.shields.io/badge/license-GPLv3-blu.svg)](https://opensource.org/licenses/GPL-3.0)\r\n[![Percentage of issues still open](http://isitmaintained.com/badge/open/netinvent/nakivo_prometheus_exporter.svg)](http://isitmaintained.com/project/netinvent/nakivo_prometheus_exporter \"Percentage of issues still open\")\r\n[![GitHub Release](https://img.shields.io/github/release/netinvent/nakivo_prometheus_exporter.svg?label=Latest)](https://github.com/netinvent/nakivo_prometheus_exporter/releases/latest)\r\n[![Linux linter](https://github.com/netinvent/nakivo_prometheus_exporter/actions/workflows/pylint-linux.yaml/badge.svg)](https://github.com/netinvent/nakivo_prometheus_exporter/actions/workflows/pylint-linux.yaml)\r\n\r\n## Nakivo Prometheus exporter\r\n\r\nThis 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.\r\n\r\n## Compatibility\r\n\r\nThis project has been tested on Nakivo Backup & Replication v9 and v10. \r\nIt runs on most Linux flavors that have Python 3.6+, and can even run on Windows.\r\n\r\nSo far, Nakivo requires you to have an enterprise plus license to be able to use the API.\r\n\r\nRequires python-pip for setup via `dnf install python3-pip` or `apt-get install python3-pip`\r\n\r\n## Grafana dashboard\r\n\r\nThe exporter comes with a basic Grafana Dashboard, showing:\r\n- Licensing status\r\n- Backup states for objects of per job\r\n- Backup sizes\r\n- Backup durations\r\n\r\n![image](examples/grafana_dashboard_v0.1b.png)\r\n![image](examples/grafana_dashboard_v0.1.png)\r\n\r\n## Quick start\r\n\r\nCreate a readonly API user (View only role) so your exporter doesn't have more rights than it should.\r\n![image](examples/nakivo_readonly_user.png)\r\n\r\n\r\nGrab yourself a copy of `nakivo_prometheus_exporter` by running\r\n```\r\npython3 pip install nakivo_prometheus_exporter\r\n```\r\n\r\nCreate your YAML config file in let's say `/etc/nakivo_prometheus_exporter.yaml`\r\n```\r\nhttp_server:\r\n listen: 0.0.0.0\r\n port: 9119\r\n username: me\r\n password: MySecret!Password\r\n # We usually don't authenticate for prometheus exporters\r\n no_auth: true\r\n log_file: /var/log/nakivo_prometheus_exporter.log\r\nnakivo_hosts:\r\n - MyNakivoHost:\r\n host: https://mynakivohost.tld:4443\r\n username: readonly\r\n password: SomeNicePassword\r\n cert_verify: False\r\n - AnotherNakivoHost:\r\n host: https://othernakivo.local:4443\r\n username: readonly\r\n password: OtherPasswrod\r\n cert_verify: True\r\n```\r\n\r\nOnce you're done, you can try to run the exporter with\r\n```\r\nnakivo_prometheus_exporter --config-file=/etc/nakivo_prometheus_eporter.yaml\r\n```\r\nOnce running, you might want to check the metrics with:\r\n```\r\ncurl http://localhost:9119/metrics\r\n```\r\n\r\nIf 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\r\n```\r\nsystemctl enable --now nakivo_prometheus_exporter\r\n```\r\n\r\n## Caveats\r\n\r\nSince 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.\r\n\r\n## Other caveats\r\n\r\nThis is a quick and dirty proof of concept, only fetching backup states/duration/sizes and licensing state. \r\nThere's still quiescing information missing (didn't find it in the (Nakivo API)[https://helpcenter.nakivo.com/api-reference/Content/API-Reference-Overview.htm])\r\n\r\nIf some traction is obersved for the project, we might add missing or interesting metrics.\r\n\r\n## Running on Windows\r\n\r\nWhile this typically targets Linux, one can run this exporter on Windows, as single threaded instance without concurrency.\r\nRunning as service can be achieved via nssm.\r\n\r\n## Troubleshooting\r\n\r\nYou can enable debugging in order to have more info with\r\n```\r\nexport _DEBUG=true\r\n/usr/local/bin/nakivo_prometheus_exporter -c /etc/nakivo_prometheus.exporter.yaml\r\n```\r\n\r\n## Like it ?\r\n\r\nWrite us ;)\r\n",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "Connecto to Nakivo API and export metrics to Prometheus",
"version": "0.2.3",
"project_urls": {
"Homepage": "https://github.com/netinvent/nakivo_prometheus_exporter"
},
"split_keywords": [
"shell",
" backup",
" prometheus",
" linux",
" cli"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d4247122d5f2a0aa4898b572e27fca806ba1627cc080f9b1b975c38823ef7dbf",
"md5": "8fd4e538e0fabafcf7c46dc9de3e36c4",
"sha256": "3f1c3f1c425d6fa58613d5fbcd2455e9f5bd2a256a1401f970029463c8a9f77b"
},
"downloads": -1,
"filename": "nakivo_prometheus_exporter-0.2.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8fd4e538e0fabafcf7c46dc9de3e36c4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 13373,
"upload_time": "2024-04-16T13:23:10",
"upload_time_iso_8601": "2024-04-16T13:23:10.279612Z",
"url": "https://files.pythonhosted.org/packages/d4/24/7122d5f2a0aa4898b572e27fca806ba1627cc080f9b1b975c38823ef7dbf/nakivo_prometheus_exporter-0.2.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bd5dc8aa329043a1063db11c0a3d3f015d4f81a83134ab4aea4e5501181dbd95",
"md5": "799dc64112b56ce939464261a322caa0",
"sha256": "d91b9032b25662b823303bc77018acf68d9a4c22f6726814957c686da203183d"
},
"downloads": -1,
"filename": "nakivo_prometheus_exporter-0.2.3.tar.gz",
"has_sig": false,
"md5_digest": "799dc64112b56ce939464261a322caa0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 12779,
"upload_time": "2024-04-16T13:23:11",
"upload_time_iso_8601": "2024-04-16T13:23:11.906342Z",
"url": "https://files.pythonhosted.org/packages/bd/5d/c8aa329043a1063db11c0a3d3f015d4f81a83134ab4aea4e5501181dbd95/nakivo_prometheus_exporter-0.2.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-16 13:23:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "netinvent",
"github_project": "nakivo_prometheus_exporter",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "ruamel.yaml",
"specs": []
},
{
"name": "ofunctions.requestor",
"specs": [
[
">=",
"1.1.0"
]
]
},
{
"name": "ofunctions.logger_utils",
"specs": []
},
{
"name": "ofunctions.logger_utils",
"specs": [
[
">=",
"2.4.0"
]
]
},
{
"name": "gunicorn",
"specs": []
},
{
"name": "uvicorn",
"specs": []
},
{
"name": "fastapi",
"specs": []
},
{
"name": "fastapi-offline",
"specs": [
[
">=",
"1.5.0"
]
]
},
{
"name": "pydantic",
"specs": [
[
"~=",
"2.6.3"
]
]
}
],
"lcname": "nakivo-prometheus-exporter"
}