Loading nixos/modules/services/monitoring/prometheus/exporters.nix +1 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ let "bird" "bitcoin" "blackbox" "borgmatic" "buildkite-agent" "collectd" "deluge" Loading nixos/modules/services/monitoring/prometheus/exporters/borgmatic.nix 0 → 100644 +34 −0 Original line number Diff line number Diff line { config, lib, pkgs, ... }: let cfg = config.services.prometheus.exporters.borgmatic; in { port = 9996; extraOpts.configFile = lib.mkOption { type = lib.types.path; default = "/etc/borgmatic/config.yaml"; description = '' The path to the borgmatic config file ''; }; serviceOpts = { serviceConfig = { DynamicUser = false; ProtectSystem = false; ProtectHome = lib.mkForce false; ExecStart = '' ${pkgs.prometheus-borgmatic-exporter}/bin/borgmatic-exporter run \ --port ${toString cfg.port} \ --config ${toString cfg.configFile} \ ${lib.concatMapStringsSep " " (f: lib.escapeShellArg f) cfg.extraFlags} ''; }; }; } nixos/tests/prometheus-exporters.nix +20 −0 Original line number Diff line number Diff line Loading @@ -177,6 +177,26 @@ let ''; }; borgmatic = { exporterConfig = { enable = true; user = "root"; }; metricProvider = { services.borgmatic.enable = true; services.borgmatic.settings.source_directories = [ "/home" ]; services.borgmatic.settings.repositories = [ { label = "local"; path = "/var/backup"; } ]; services.borgmatic.settings.keep_daily = 10; }; exporterTest = '' succeed("borgmatic rcreate -e none") succeed("borgmatic") wait_for_unit("prometheus-borgmatic-exporter.service") wait_for_open_port(9996) succeed("curl -sSf localhost:9996/metrics | grep 'borg_total_backups{repository=\"/var/backup\"} 1'") ''; }; collectd = { exporterConfig = { enable = true; Loading pkgs/by-name/pr/prometheus-borgmatic-exporter/package.nix 0 → 100644 +47 −0 Original line number Diff line number Diff line { lib, fetchFromGitHub, python3Packages, borgmatic, }: python3Packages.buildPythonApplication rec { pname = "prometheus-borgmatic-exporter"; version = "0.2.5"; pyproject = true; src = fetchFromGitHub { owner = "maxim-mityutko"; repo = "borgmatic-exporter"; rev = "v${version}"; hash = "sha256-SgP1utu4Eqs9214pYOT9wP0Ms7AUQH1A3czQF8+qBRo="; }; nativeCheckInputs = with python3Packages; [ pytestCheckHook pytest-mock ]; buildInputs = [python3Packages.poetry-core]; propagatedBuildInputs = [ borgmatic ] ++ (with python3Packages; [ flask arrow click loguru pretty-errors prometheus-client timy waitress ]); meta = with lib; { description = "Prometheus exporter for Borgmatic"; homepage = "https://github.com/maxim-mityutko/borgmatic-exporter"; license = licenses.mit; maintainers = with maintainers; [ flandweber ]; mainProgram = "borgmatic-exporter"; platforms = platforms.unix; }; } Loading
nixos/modules/services/monitoring/prometheus/exporters.nix +1 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ let "bird" "bitcoin" "blackbox" "borgmatic" "buildkite-agent" "collectd" "deluge" Loading
nixos/modules/services/monitoring/prometheus/exporters/borgmatic.nix 0 → 100644 +34 −0 Original line number Diff line number Diff line { config, lib, pkgs, ... }: let cfg = config.services.prometheus.exporters.borgmatic; in { port = 9996; extraOpts.configFile = lib.mkOption { type = lib.types.path; default = "/etc/borgmatic/config.yaml"; description = '' The path to the borgmatic config file ''; }; serviceOpts = { serviceConfig = { DynamicUser = false; ProtectSystem = false; ProtectHome = lib.mkForce false; ExecStart = '' ${pkgs.prometheus-borgmatic-exporter}/bin/borgmatic-exporter run \ --port ${toString cfg.port} \ --config ${toString cfg.configFile} \ ${lib.concatMapStringsSep " " (f: lib.escapeShellArg f) cfg.extraFlags} ''; }; }; }
nixos/tests/prometheus-exporters.nix +20 −0 Original line number Diff line number Diff line Loading @@ -177,6 +177,26 @@ let ''; }; borgmatic = { exporterConfig = { enable = true; user = "root"; }; metricProvider = { services.borgmatic.enable = true; services.borgmatic.settings.source_directories = [ "/home" ]; services.borgmatic.settings.repositories = [ { label = "local"; path = "/var/backup"; } ]; services.borgmatic.settings.keep_daily = 10; }; exporterTest = '' succeed("borgmatic rcreate -e none") succeed("borgmatic") wait_for_unit("prometheus-borgmatic-exporter.service") wait_for_open_port(9996) succeed("curl -sSf localhost:9996/metrics | grep 'borg_total_backups{repository=\"/var/backup\"} 1'") ''; }; collectd = { exporterConfig = { enable = true; Loading
pkgs/by-name/pr/prometheus-borgmatic-exporter/package.nix 0 → 100644 +47 −0 Original line number Diff line number Diff line { lib, fetchFromGitHub, python3Packages, borgmatic, }: python3Packages.buildPythonApplication rec { pname = "prometheus-borgmatic-exporter"; version = "0.2.5"; pyproject = true; src = fetchFromGitHub { owner = "maxim-mityutko"; repo = "borgmatic-exporter"; rev = "v${version}"; hash = "sha256-SgP1utu4Eqs9214pYOT9wP0Ms7AUQH1A3czQF8+qBRo="; }; nativeCheckInputs = with python3Packages; [ pytestCheckHook pytest-mock ]; buildInputs = [python3Packages.poetry-core]; propagatedBuildInputs = [ borgmatic ] ++ (with python3Packages; [ flask arrow click loguru pretty-errors prometheus-client timy waitress ]); meta = with lib; { description = "Prometheus exporter for Borgmatic"; homepage = "https://github.com/maxim-mityutko/borgmatic-exporter"; license = licenses.mit; maintainers = with maintainers; [ flandweber ]; mainProgram = "borgmatic-exporter"; platforms = platforms.unix; }; }