Files
platform/modules/hpc/slurm-exporter.nix
2025-06-30 12:21:05 +02:00

68 lines
1.7 KiB
Nix

{pkgs, config, lib, ...}:
with lib;
let
cfg = config.features.monitoring.slurm-exporter;
slurm-exporter-service = {
systemd.services.slurm-exporter = {
enable = true;
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
description = "Prometheus SLURM exporter";
script = ''
PATH=$(${pkgs.nix}/bin/nix-store -q --referrers ${pkgs.slurm} | ${pkgs.gnugrep}/bin/grep wrappedSlurm)/bin
${slurm-exporter}/bin/prometheus-slurm-exporter -listen-address :${builtins.toString cfg.port}
'';
serviceConfig = {
RestartSec = "15s";
Restart = "on-failure";
};
};
};
slurm-exporter = pkgs.buildGoModule rec {
pname = "prometheus-slurm-exporter";
version = "master";
src = pkgs.fetchFromGitHub {
owner = "vpenso";
repo = "prometheus-slurm-exporter";
rev = "master";
sha256 = "sha256-KS9LoDuLQFq3KoKpHd8vg1jw20YCNRJNJrnBnu5vxvs=";
};
vendorHash = "sha256-A1dd9T9SIEHDCiVT2UwV6T02BSLh9ej6LC/2l54hgwI=";
nativeBuildInputs = [ pkgs.slurm ];
# subPackages = [ "." ];
# deleteVendor = true;
# runVend = true;
doCheck = false;
meta = with lib; {
description = "Simple command-line snippet manager, written in Go";
homepage = "https://github.com/knqyf263/pet";
license = licenses.mit;
maintainers = with maintainers; [ kalbasit ];
platforms = platforms.linux ++ platforms.darwin;
};
};
in {
options.features.monitoring.slurm-exporter = {
enable = mkEnableOption "Enable SLURM prometheus exporter";
port = mkOption {
type = types.ints.unsigned;
default = 8080;
description = "Collector http port";
};
};
config = mkIf cfg.enable slurm-exporter-service;
}