diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix index 78b3bc2f311..98f1b52aba4 100644 --- a/nixos/modules/misc/ids.nix +++ b/nixos/modules/misc/ids.nix @@ -145,6 +145,7 @@ mlmmj = 135; neo4j = 136; riemann = 137; + riemanndash = 138; # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! @@ -263,6 +264,7 @@ siproxd = 134; mlmmj = 135; riemann = 137; + riemanndash = 138; # When adding a gid, make sure it doesn't match an existing uid. And don't use gids above 399! diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 532083aa6bd..c45fa3e3f05 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -171,6 +171,7 @@ ./services/monitoring/munin.nix ./services/monitoring/nagios.nix ./services/monitoring/riemann.nix + ./services/monitoring/riemann-dash.nix ./services/monitoring/smartd.nix ./services/monitoring/statsd.nix ./services/monitoring/systemhealth.nix diff --git a/nixos/modules/services/monitoring/riemann-dash.nix b/nixos/modules/services/monitoring/riemann-dash.nix new file mode 100644 index 00000000000..f647b92f914 --- /dev/null +++ b/nixos/modules/services/monitoring/riemann-dash.nix @@ -0,0 +1,79 @@ +{ config, pkgs, ... }: + +with pkgs; +with pkgs.lib; + +let + + cfg = config.services.riemann-dash; + + conf = writeText "config.rb" '' + riemann_base = "${cfg.dataDir}" + config.store[:ws_config] = "#{riemann_base}/config/config.json" + ${cfg.config} + ''; + + launcher = writeScriptBin "riemann-dash" '' + #!/bin/sh + exec ${rubyLibs.riemann_dash}/bin/riemann-dash ${conf} + ''; + +in { + + options = { + + services.riemann-dash = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Enable the riemann-dash dashboard daemon. + ''; + }; + config = mkOption { + type = types.lines; + description = '' + Contents added to the end of the riemann-dash configuration file. + ''; + }; + dataDir = mkOption { + type = types.str; + default = "/var/riemann-dash"; + description = '' + Location of the riemann-base dir. The dashboard configuration file is + is stored to this directory. The directory is created automatically on + service start, and owner is set to the riemanndash user. + ''; + }; + }; + + }; + + config = mkIf cfg.enable { + + users.extraGroups.riemanndash.gid = config.ids.gids.riemanndash; + + users.extraUsers.riemanndash = { + description = "riemann-dash daemon user"; + uid = config.ids.uids.riemanndash; + group = "riemanndash"; + }; + + systemd.services.riemann-dash = { + wantedBy = [ "multi-user.target" ]; + wants = [ "riemann.service" ]; + after = [ "riemann.service" ]; + preStart = '' + mkdir -p ${cfg.dataDir}/config + chown -R riemanndash:riemanndash ${cfg.dataDir} + ''; + serviceConfig = { + User = "riemanndash"; + ExecStart = "${launcher}/bin/riemann-dash"; + PermissionsStartOnly = true; + }; + }; + + }; + +}