From eee65ec84ee0cc38716dffa2cb1f08194eabdaea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20S=C3=A1nchez?= Date: Wed, 21 Oct 2020 08:05:51 +0200 Subject: [PATCH] Allow setting a metrics prefix --- README.md | 15 ++++++++------- qbittorrent_exporter/exporter.py | 17 +++++++++-------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index d56daec..8411991 100644 --- a/README.md +++ b/README.md @@ -33,22 +33,23 @@ The application reads configuration using environment variables: | `QBITTORRENT_PASS` | `""` | qbittorrent password | | `EXPORTER_PORT` | `8000` | Exporter listening port | | `EXPORTER_LOG_LEVEL` | `INFO` | Log level. One of: `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL` | +| `METRICS_PREFIX` | `qbittorrent` | Prefix to add to all the metrics | ## Metrics -These are the metrics this program exports: +These are the metrics this program exports, assuming the `METRICS_PREFIX` is `qbittorrent`: | Metric name | Type | Description | | --------------------------------------------------- | -------- | ---------------- | | `qbittorrent_up` | gauge | Whether if the qBittorrent server is answering requests from this exporter. A `version` label with the server version is added | -| `connected` | gauge | Whether if the qBittorrent server is connected to the Bittorrent network. | -| `firewalled` | gauge | Whether if the qBittorrent server is connected to the Bittorrent network but is behind a firewall. | -| `dht_nodes` | gauge | Number of DHT nodes connected to | -| `dl_info_data` | counter | Data downloaded since the server started, in bytes | -| `up_info_data` | counter | Data uploaded since the server started, in bytes | -| `torrents_count` | gauge | Number of torrents for each `category` and `status`. Example: `torrents_count{category="movies",status="downloading"}`| +| `qbittorrent_connected` | gauge | Whether if the qBittorrent server is connected to the Bittorrent network. | +| `qbittorrent_firewalled` | gauge | Whether if the qBittorrent server is connected to the Bittorrent network but is behind a firewall. | +| `qbittorrent_dht_nodes` | gauge | Number of DHT nodes connected to | +| `qbittorrent_dl_info_data` | counter | Data downloaded since the server started, in bytes | +| `qbittorrent_up_info_data` | counter | Data uploaded since the server started, in bytes | +| `qbittorrent_torrents_count` | gauge | Number of torrents for each `category` and `status`. Example: `qbittorrent_torrents_count{category="movies",status="downloading"}`| ## License diff --git a/qbittorrent_exporter/exporter.py b/qbittorrent_exporter/exporter.py index e16e64c..3050f8f 100644 --- a/qbittorrent_exporter/exporter.py +++ b/qbittorrent_exporter/exporter.py @@ -77,34 +77,34 @@ class QbittorrentMetricsCollector(): return [ { - "name": "qbittorrent_up", + "name": f"{self.config['metrics_prefix']}_up", "value": response is not None, "labels": {"version": version}, "help": "Whether if server is alive or not", }, { - "name": "connected", + "name": f"{self.config['metrics_prefix']}_connected", "value": response.get("connection_status", "") == "connected", "help": "Whether if server is connected or not", }, { - "name": "firewalled", + "name": f"{self.config['metrics_prefix']}_firewalled", "value": response.get("connection_status", "") == "firewalled", "help": "Whether if server is under a firewall or not", }, { - "name": "dht_nodes", + "name": f"{self.config['metrics_prefix']}_dht_nodes", "value": response.get("dht_nodes", 0), "help": "DHT nodes connected to", }, { - "name": "dl_info_data", + "name": f"{self.config['metrics_prefix']}_dl_info_data", "value": response.get("dl_info_data", 0), "help": "Data downloaded this session (bytes)", "type": "counter" }, { - "name": "up_info_data", + "name": f"{self.config['metrics_prefix']}_up_info_data", "value": response.get("up_info_data", 0), "help": "Data uploaded this session (bytes)", "type": "counter" @@ -131,7 +131,7 @@ class QbittorrentMetricsCollector(): t for t in category_torrents if getattr(TorrentStates, status_prop).fget(TorrentStates(t['state'])) ] metrics.append({ - "name": "torrents_count", + "name": f"{self.config['metrics_prefix']}_torrents_count", "value": len(status_torrents), "labels": { "status": status, @@ -166,7 +166,8 @@ def main(): "username": os.environ.get("QBITTORRENT_USER", ""), "password": os.environ.get("QBITTORRENT_PASS", ""), "exporter_port": int(os.environ.get("EXPORTER_PORT", "8000")), - "log_level": os.environ.get("EXPORTER_LOG_LEVEL", "INFO") + "log_level": os.environ.get("EXPORTER_LOG_LEVEL", "INFO"), + "metrics_prefix": os.environ.get("METRICS_PREFIX", "qbittorrent"), } # Register signal handler