75 lines
1.7 KiB
Nix
75 lines
1.7 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
let
|
|
|
|
cfg = config.services.riemann-tools;
|
|
|
|
riemannHost = "${cfg.riemannHost}";
|
|
|
|
healthLauncher = pkgs.writeScriptBin "riemann-health" ''
|
|
#!/bin/sh
|
|
exec ${pkgs.riemann-tools}/bin/riemann-health ${builtins.concatStringsSep " " cfg.extraArgs} --host ${riemannHost}
|
|
'';
|
|
|
|
in
|
|
{
|
|
|
|
options = {
|
|
|
|
services.riemann-tools = {
|
|
enableHealth = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
description = ''
|
|
Enable the riemann-health daemon.
|
|
'';
|
|
};
|
|
riemannHost = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "127.0.0.1";
|
|
description = ''
|
|
Address of the host riemann node. Defaults to localhost.
|
|
'';
|
|
};
|
|
extraArgs = lib.mkOption {
|
|
type = lib.types.listOf lib.types.str;
|
|
default = [ ];
|
|
description = ''
|
|
A list of commandline-switches forwarded to a riemann-tool.
|
|
See for example `riemann-health --help` for available options.
|
|
'';
|
|
example = [
|
|
"-p 5555"
|
|
"--timeout=30"
|
|
"--attribute=myattribute=42"
|
|
];
|
|
};
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enableHealth {
|
|
|
|
users.groups.riemanntools.gid = config.ids.gids.riemanntools;
|
|
|
|
users.users.riemanntools = {
|
|
description = "riemann-tools daemon user";
|
|
uid = config.ids.uids.riemanntools;
|
|
group = "riemanntools";
|
|
};
|
|
|
|
systemd.services.riemann-health = {
|
|
wantedBy = [ "multi-user.target" ];
|
|
path = [ pkgs.procps ];
|
|
serviceConfig = {
|
|
User = "riemanntools";
|
|
ExecStart = "${healthLauncher}/bin/riemann-health";
|
|
};
|
|
};
|
|
|
|
};
|
|
|
|
}
|