diff --git a/nixos/modules/monitoring/exporters/megacli2prom.nix b/nixos/modules/monitoring/exporters/megacli2prom.nix new file mode 100644 index 0000000000000000000000000000000000000000..186acc0a345d277757bf42cf604c140667e6a4c0 --- /dev/null +++ b/nixos/modules/monitoring/exporters/megacli2prom.nix @@ -0,0 +1,49 @@ +# MegaCli to Prometheus text format exporter +# +# Scope: Gets data from MegaRAID compatible storage controllers and mogrifies +# to Prometheus text format, saves to a temp file, to later be scraped +# by the node exporter. +# +# Usage: Import this to every server with a MegaRAID card that you want to +# include in the central monitoring system +# +# See https://nixos.org/manual/nixos/stable/#module-services-prometheus-exporters + +{ config, lib, ourpkgs }: + +let + cfg = config.services.private-storage.monitoring.megacli2prom; + +in { + options.services.private-storage.monitoring.megacli2prom = { + enable = lib.mkEnableOption "MegaCli2Prom metrics gathering service"; + outFile = lib.mkOption { + type = lib.types.path; + description = "Where to store the temporary file for node exporter to scrape?"; + default = /run/prometheus-node-exporter/megacli.prom + }; + interval = lib.mkOption { + type = lib.types.str; + description = '' + How often to do it? + See https://www.freedesktop.org/software/systemd/man/systemd.time.html#Calendar%20Events + ''; + default = "hourly"; + }; + }; + + config = + lib.mkIf cfg.enable { + + environment.systemPackages = [ ourpkgs.megacli2prom ]; + + systemd.services.megacli2prom = { + enable = true; + description = "MegaCli2Prom metrics gathering service"; + wantedBy = [ "multi-user.target" ]; + startAt = cfg.interval; + script = "${ourpkgs.megacli2prom}/bin/megacli2prom > ${cfg.outFile}"; + }; + }; +} +