From 66aa9f5011683b18fd651aa1e8b77019f4be68f8 Mon Sep 17 00:00:00 2001
From: Florian Sesser <florian@private.storage>
Date: Thu, 21 Oct 2021 14:41:29 +0000
Subject: [PATCH] Monitoring MegaRAID: Make it work.

---
 morph/lib/storage.nix                               | 6 ++++++
 nixos/modules/monitoring/exporters/megacli2prom.nix | 8 +++-----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/morph/lib/storage.nix b/morph/lib/storage.nix
index 86e14228..92adc653 100644
--- a/morph/lib/storage.nix
+++ b/morph/lib/storage.nix
@@ -43,8 +43,14 @@ in {
     ../../nixos/modules/monitoring/vpn/client.nix
     # Expose base system metrics over the monitoringvpn.
     ../../nixos/modules/monitoring/exporters/node.nix
+    # At least some of our storage nodes utilize MegaRAID storage controllers.
+    ../../nixos/modules/monitoring/exporters/megacli2prom.nix
   ];
 
+  # Enable statistics gathering for MegaRAID cards.
+  # TODO would be nice to enable only on machines that have such a device.
+  services.private-storage.monitoring.megacli2prom.enable = true;
+
   # Turn on the Private Storage (Tahoe-LAFS) service.
   services.private-storage = {
     # Yep.  Turn it on.
diff --git a/nixos/modules/monitoring/exporters/megacli2prom.nix b/nixos/modules/monitoring/exporters/megacli2prom.nix
index 186acc0a..83370b59 100644
--- a/nixos/modules/monitoring/exporters/megacli2prom.nix
+++ b/nixos/modules/monitoring/exporters/megacli2prom.nix
@@ -9,7 +9,7 @@
 #
 # See https://nixos.org/manual/nixos/stable/#module-services-prometheus-exporters
 
-{ config, lib, ourpkgs }:
+{ config, options, lib, ourpkgs, ... }:
 
 let
   cfg = config.services.private-storage.monitoring.megacli2prom;
@@ -18,9 +18,9 @@ in {
   options.services.private-storage.monitoring.megacli2prom = {
     enable = lib.mkEnableOption "MegaCli2Prom metrics gathering service";
     outFile = lib.mkOption {
-      type = lib.types.path;
+      type = lib.types.str;
       description = "Where to store the temporary file for node exporter to scrape?";
-      default = /run/prometheus-node-exporter/megacli.prom
+      default = "/run/prometheus-node-exporter/megacli.prom";
     };
     interval = lib.mkOption {
       type = lib.types.str;
@@ -34,9 +34,7 @@ in {
 
   config =
     lib.mkIf cfg.enable {
-
       environment.systemPackages = [ ourpkgs.megacli2prom ];
-
       systemd.services.megacli2prom = {
         enable = true;
         description = "MegaCli2Prom metrics gathering service";
-- 
GitLab