monitoring: add module option to add dashboards to grafana

This commit is contained in:
ibizaman 2026-01-19 21:31:09 +01:00 committed by Pierre Penninckx
parent ef19e76b97
commit 7787957488
3 changed files with 25 additions and 9 deletions

View file

@ -983,9 +983,6 @@
"blocks-monitoring-options-shb.monitoring.prometheusPort": [ "blocks-monitoring-options-shb.monitoring.prometheusPort": [
"blocks-monitoring.html#blocks-monitoring-options-shb.monitoring.prometheusPort" "blocks-monitoring.html#blocks-monitoring-options-shb.monitoring.prometheusPort"
], ],
"blocks-monitoring-options-shb.monitoring.provisionDashboards": [
"blocks-monitoring.html#blocks-monitoring-options-shb.monitoring.provisionDashboards"
],
"blocks-monitoring-options-shb.monitoring.secretKey": [ "blocks-monitoring-options-shb.monitoring.secretKey": [
"blocks-monitoring.html#blocks-monitoring-options-shb.monitoring.secretKey" "blocks-monitoring.html#blocks-monitoring-options-shb.monitoring.secretKey"
], ],

View file

@ -96,10 +96,10 @@ in
default = 1; default = 1;
}; };
provisionDashboards = lib.mkOption { dashboards = lib.mkOption {
type = lib.types.bool; type = lib.types.listOf lib.types.path;
description = "Provision Self Host Blocks dashboards under 'Self Host Blocks' folder."; description = "Dashboards to provision under 'Self Host Blocks' folder.";
default = true; default = [ ];
}; };
contactPoints = lib.mkOption { contactPoints = lib.mkOption {
@ -302,14 +302,29 @@ in
}; };
}; };
}; };
})
(lib.mkIf cfg.enable {
shb.monitoring.dashboards = [
./monitoring/dashboards/Backups.json
./monitoring/dashboards/Errors.json
./monitoring/dashboards/Nextcloud.json
./monitoring/dashboards/Performance.json
./monitoring/dashboards/Scraping_Jobs.json
./monitoring/dashboards/SSL.json
./monitoring/dashboards/Torrents.json
];
services.grafana.provision = { services.grafana.provision = {
dashboards.settings = lib.mkIf cfg.provisionDashboards { dashboards.settings = lib.mkIf (cfg.dashboards != [ ]) {
apiVersion = 1; apiVersion = 1;
providers = [ providers = [
{ {
folder = "Self Host Blocks"; folder = "Self Host Blocks";
options.path = ./monitoring/dashboards; options.path = pkgs.symlinkJoin {
name = "dashboards";
paths = map (p: pkgs.runCommand "dashboard" { } "mkdir $out; cp ${p} $out") cfg.dashboards;
};
allowUiUpdates = true; allowUiUpdates = true;
disableDeletion = true; disableDeletion = true;
} }
@ -400,7 +415,9 @@ in
# any updates. # any updates.
}; };
}; };
})
(lib.mkIf cfg.enable {
services.prometheus = { services.prometheus = {
enable = true; enable = true;
port = cfg.prometheusPort; port = cfg.prometheusPort;
@ -567,7 +584,9 @@ in
}; };
}; };
}; };
})
(lib.mkIf cfg.enable {
services.prometheus.scrapeConfigs = [ services.prometheus.scrapeConfigs = [
{ {
job_name = "node"; job_name = "node";