mirror of
https://github.com/NohamR/prometheus-qbittorrent-exporter.git
synced 2025-05-23 16:49:29 +00:00
new metrics
This commit is contained in:
parent
6b9c2e5a50
commit
ec6af68f46
1
.gitignore
vendored
1
.gitignore
vendored
@ -136,3 +136,4 @@ config.env
|
|||||||
|
|
||||||
# Ignore ruff files
|
# Ignore ruff files
|
||||||
.ruff_cache
|
.ruff_cache
|
||||||
|
.DS_Store
|
||||||
|
39
docker-compose.yml
Normal file
39
docker-compose.yml
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
name: prom-qb-alltime
|
||||||
|
services:
|
||||||
|
esanchezm:
|
||||||
|
cpu_shares: 90
|
||||||
|
command: []
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 7943M
|
||||||
|
environment:
|
||||||
|
- QBITTORRENT_HOST=192.168.1.58
|
||||||
|
- QBITTORRENT_PASS=Cp3mMdP!#
|
||||||
|
- QBITTORRENT_PORT=8188
|
||||||
|
- QBITTORRENT_USER=noham
|
||||||
|
image: prom-qb-alltime
|
||||||
|
labels:
|
||||||
|
icon: https://raw.githubusercontent.com/esanchezm/prometheus-qbittorrent-exporter/master/logo.png
|
||||||
|
ports:
|
||||||
|
- target: 8000
|
||||||
|
published: "9101"
|
||||||
|
protocol: tcp
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes: []
|
||||||
|
devices: []
|
||||||
|
cap_add: []
|
||||||
|
network_mode: bridge
|
||||||
|
privileged: false
|
||||||
|
container_name: ""
|
||||||
|
x-casaos:
|
||||||
|
author: self
|
||||||
|
category: self
|
||||||
|
hostname: ""
|
||||||
|
icon: https://raw.githubusercontent.com/esanchezm/prometheus-qbittorrent-exporter/master/logo.png
|
||||||
|
index: /metrics
|
||||||
|
port_map: "9101"
|
||||||
|
scheme: http
|
||||||
|
store_app_id: relaxed_albert
|
||||||
|
title:
|
||||||
|
custom: prom-qb-alltime
|
@ -1,11 +1,13 @@
|
|||||||
import faulthandler
|
import faulthandler
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
load_dotenv()
|
||||||
import signal
|
import signal
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from enum import StrEnum, auto
|
from enum import Enum, auto
|
||||||
from typing import Any, Iterable
|
from typing import Any, Iterable
|
||||||
|
|
||||||
from prometheus_client import start_http_server
|
from prometheus_client import start_http_server
|
||||||
@ -17,8 +19,7 @@ from qbittorrentapi import Client, TorrentStates
|
|||||||
faulthandler.enable()
|
faulthandler.enable()
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
|
|
||||||
|
class MetricType(Enum):
|
||||||
class MetricType(StrEnum):
|
|
||||||
"""
|
"""
|
||||||
Represents possible metric types (used in this project).
|
Represents possible metric types (used in this project).
|
||||||
"""
|
"""
|
||||||
@ -159,6 +160,59 @@ class QbittorrentMetricsCollector:
|
|||||||
help_text="Total data uploaded, in bytes.",
|
help_text="Total data uploaded, in bytes.",
|
||||||
metric_type=MetricType.COUNTER,
|
metric_type=MetricType.COUNTER,
|
||||||
),
|
),
|
||||||
|
Metric(
|
||||||
|
name=f"{self.config['metrics_prefix']}_total_peer_connections",
|
||||||
|
value=server_state.get("total_peer_connections", 0),
|
||||||
|
labels={}, # no labels in the example
|
||||||
|
help_text="total_peer_connections.",
|
||||||
|
metric_type=MetricType.COUNTER,
|
||||||
|
),
|
||||||
|
|
||||||
|
|
||||||
|
#### Disk metrics
|
||||||
|
Metric(
|
||||||
|
name=f"{self.config['metrics_prefix']}_write_cache_overload",
|
||||||
|
value=server_state.get("write_cache_overload", 0),
|
||||||
|
labels={}, # no labels in the example
|
||||||
|
help_text="write_cache_overload.",
|
||||||
|
metric_type=MetricType.COUNTER,
|
||||||
|
),
|
||||||
|
Metric(
|
||||||
|
name=f"{self.config['metrics_prefix']}_read_cache_overload",
|
||||||
|
value=server_state.get("read_cache_overload", 0),
|
||||||
|
labels={}, # no labels in the example
|
||||||
|
help_text="read_cache_overload.",
|
||||||
|
metric_type=MetricType.COUNTER,
|
||||||
|
),
|
||||||
|
|
||||||
|
Metric(
|
||||||
|
name=f"{self.config['metrics_prefix']}_read_cache_hits",
|
||||||
|
value=server_state.get("read_cache_hits", 0),
|
||||||
|
labels={}, # no labels in the example
|
||||||
|
help_text="read_cache_hits.",
|
||||||
|
metric_type=MetricType.COUNTER,
|
||||||
|
),
|
||||||
|
Metric(
|
||||||
|
name=f"{self.config['metrics_prefix']}_average_time_queue",
|
||||||
|
value=server_state.get("average_time_queue", 0),
|
||||||
|
labels={}, # no labels in the example
|
||||||
|
help_text="average_time_queue.",
|
||||||
|
metric_type=MetricType.COUNTER,
|
||||||
|
),
|
||||||
|
Metric(
|
||||||
|
name=f"{self.config['metrics_prefix']}_free_space_on_disk",
|
||||||
|
value=server_state.get("free_space_on_disk", 0),
|
||||||
|
labels={}, # no labels in the example
|
||||||
|
help_text="free_space_on_disk.",
|
||||||
|
metric_type=MetricType.COUNTER,
|
||||||
|
),
|
||||||
|
Metric(
|
||||||
|
name=f"{self.config['metrics_prefix']}_queued_io_jobs",
|
||||||
|
value=server_state.get("queued_io_jobs", 0),
|
||||||
|
labels={}, # no labels in the example
|
||||||
|
help_text="queued_io_jobs.",
|
||||||
|
metric_type=MetricType.COUNTER,
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
def _fetch_categories(self) -> dict:
|
def _fetch_categories(self) -> dict:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user