mirror of
https://github.com/netinvent/npbackup.git
synced 2025-10-30 07:17:05 +08:00
Added repo_name to all metrics
This commit is contained in:
parent
4b6e5502a6
commit
eb2b248284
2 changed files with 24 additions and 18 deletions
|
|
@ -7,7 +7,7 @@ __intname__ = "npbackup.gui.core.runner"
|
|||
__author__ = "Orsiris de Jong"
|
||||
__copyright__ = "Copyright (C) 2022-2025 NetInvent"
|
||||
__license__ = "GPL-3.0-only"
|
||||
__build__ = "2025052301"
|
||||
__build__ = "2025061001"
|
||||
|
||||
|
||||
from typing import Optional, Callable, Union, List, Tuple
|
||||
|
|
@ -105,10 +105,12 @@ def metric_analyser(
|
|||
metrics = []
|
||||
|
||||
try:
|
||||
labels = {
|
||||
"npversion": f"{NAME}{version_dict['version']}-{version_dict['build_type']}"
|
||||
}
|
||||
repo_name = repo_config.g("name")
|
||||
labels = {
|
||||
"npversion": f"{NAME}{version_dict['version']}-{version_dict['build_type']}",
|
||||
"repo_name": repo_name,
|
||||
"action": operation,
|
||||
}
|
||||
if repo_config.g("prometheus.metrics"):
|
||||
labels["instance"] = repo_config.g("prometheus.instance")
|
||||
labels["backup_job"] = repo_config.g("prometheus.backup_job")
|
||||
|
|
@ -172,25 +174,31 @@ def metric_analyser(
|
|||
for key, value in labels.items():
|
||||
if value:
|
||||
_labels.append(f'{key.strip()}="{value.strip()}"')
|
||||
labels = ",".join(_labels)
|
||||
labels = ",".join(list(set(_labels)))
|
||||
|
||||
metrics.append(
|
||||
f'npbackup_exec_state{{{labels},action="{operation}",repo_name="{repo_name}",timestamp="{int(datetime.now(timezone.utc).timestamp())}"}} {exec_state}'
|
||||
f'npbackup_exec_state{{{labels},timestamp="{int(datetime.now(timezone.utc).timestamp())}"}} {exec_state}'
|
||||
)
|
||||
|
||||
# Add upgrade state if upgrades activated
|
||||
upgrade_state = os.environ.get("NPBACKUP_UPGRADE_STATE", None)
|
||||
try:
|
||||
upgrade_state = int(upgrade_state)
|
||||
_labels = []
|
||||
labels["action"] = "upgrade"
|
||||
for key, value in labels.items():
|
||||
if value:
|
||||
_labels.append(f'{key.strip()}="{value.strip()}"')
|
||||
labels = ",".join(list(set(_labels)))
|
||||
metrics.append(
|
||||
f'npbackup_exec_state{{{labels},action="upgrade",repo_name="{repo_name}",timestamp="{int(datetime.now(timezone.utc).timestamp())}"}} {upgrade_state}'
|
||||
f'npbackup_exec_state{{{labels},timestamp="{int(datetime.now(timezone.utc).timestamp())}"}} {upgrade_state}'
|
||||
)
|
||||
except (ValueError, TypeError):
|
||||
pass
|
||||
if isinstance(exec_time, (int, float)):
|
||||
try:
|
||||
metrics.append(
|
||||
f'npbackup_exec_time{{{labels},action="{operation}",repo_name="{repo_name}",timestamp="{int(datetime.now(timezone.utc).timestamp())}"}} {exec_time}'
|
||||
f'npbackup_exec_time{{{labels},timestamp="{int(datetime.now(timezone.utc).timestamp())}"}} {exec_time}'
|
||||
)
|
||||
except (ValueError, TypeError):
|
||||
logger.warning("Cannot get exec time from environment")
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ __intname__ = "restic_metrics"
|
|||
__author__ = "Orsiris de Jong"
|
||||
__copyright__ = "Copyright (C) 2022-2025 NetInvent"
|
||||
__license__ = "BSD-3-Clause"
|
||||
__version__ = "2.0.3"
|
||||
__build__ = "2025052301"
|
||||
__version__ = "2.1.0"
|
||||
__build__ = "2025061001"
|
||||
__description__ = (
|
||||
"Converts restic command line output to a text file node_exporter can scrape"
|
||||
)
|
||||
|
|
@ -183,7 +183,7 @@ def restic_json_to_prometheus(
|
|||
for key, value in labels.items():
|
||||
if value:
|
||||
_labels.append(f'{key.strip()}="{value.strip()}"')
|
||||
labels = ",".join(_labels)
|
||||
labels = ",".join(list(set(_labels)))
|
||||
|
||||
# If restic_json is a bool, just fail
|
||||
if isinstance(restic_json, bool):
|
||||
|
|
@ -222,27 +222,25 @@ def restic_json_to_prometheus(
|
|||
if key.endswith(enders):
|
||||
if value is not None:
|
||||
prom_metrics.append(
|
||||
f'restic_{starters}{{{labels},state="{enders}",action="backup"}} {value}'
|
||||
f'restic_{starters}{{{labels},state="{enders}"}} {value}'
|
||||
)
|
||||
skip = True
|
||||
if skip:
|
||||
continue
|
||||
if key == "total_files_processed":
|
||||
if value is not None:
|
||||
prom_metrics.append(
|
||||
f'restic_files{{{labels},state="total",action="backup"}} {value}'
|
||||
)
|
||||
prom_metrics.append(f'restic_files{{{labels},state="total"}} {value}')
|
||||
continue
|
||||
if key == "total_bytes_processed":
|
||||
if value is not None:
|
||||
prom_metrics.append(
|
||||
f'restic_snasphot_size_bytes{{{labels},action="backup",type="processed"}} {value}'
|
||||
f'restic_snasphot_size_bytes{{{labels},type="processed"}} {value}'
|
||||
)
|
||||
continue
|
||||
if "duration" in key:
|
||||
key += "_seconds"
|
||||
if value is not None:
|
||||
prom_metrics.append(f'restic_{key}{{{labels},action="backup"}} {value}')
|
||||
prom_metrics.append(f"restic_{key}{{{labels}}} {value}")
|
||||
|
||||
backup_too_small = False
|
||||
try:
|
||||
|
|
@ -438,7 +436,7 @@ def restic_output_2_metrics(restic_result, output, labels=None):
|
|||
seconds_elapsed = convert_time_to_seconds(matches.group(4))
|
||||
try:
|
||||
metrics.append(
|
||||
'restic_backup_duration_seconds{{{},action="backup"}} {}'.format(
|
||||
"restic_backup_duration_seconds{{{}}} {}".format(
|
||||
labels, int(seconds_elapsed)
|
||||
)
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue