scollector: New NixOS module

wip/yesman
Oliver Charles 10 years ago
parent 751a2943f4
commit 2ed07c6cc1
  1. 2
      nixos/modules/misc/ids.nix
  2. 1
      nixos/modules/module-list.nix
  3. 88
      nixos/modules/services/monitoring/scollector.nix

@ -167,6 +167,7 @@
docker-registry = 157;
hbase = 158;
opentsdb = 159;
scollector = 160;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
@ -298,6 +299,7 @@
systemd-resolve = 153;
systemd-timesync = 154;
liquidsoap = 155;
scollector = 156;
# When adding a gid, make sure it doesn't match an existing uid. And don't use gids above 399!

@ -198,6 +198,7 @@
./services/monitoring/nagios.nix
./services/monitoring/riemann.nix
./services/monitoring/riemann-dash.nix
./services/monitoring/scollector.nix
./services/monitoring/smartd.nix
./services/monitoring/statsd.nix
./services/monitoring/systemhealth.nix

@ -0,0 +1,88 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.scollector;
in {
options = {
services.scollector = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to run scollector.
'';
};
package = mkOption {
type = types.package;
default = pkgs.scollector;
example = literalExample "pkgs.scollector";
description = ''
scollector binary to use.
'';
};
user = mkOption {
type = types.string;
default = "scollector";
description = ''
User account under which scollector runs.
'';
};
group = mkOption {
type = types.string;
default = "scollector";
description = ''
Group account under which scollector runs.
'';
};
opentsdbHost = mkOption {
type = types.string;
default = "localhost:4242";
description = ''
Host and port of the OpenTSDB database that will store the collected
data.
'';
};
};
};
config = mkIf config.services.scollector.enable {
systemd.services.scollector = {
description = "scollector metrics collector (part of Bosun)";
wantedBy = [ "multi-user.target" ];
path = [ pkgs.coreutils pkgs.iproute ];
serviceConfig = {
PermissionsStartOnly = true;
User = cfg.user;
Group = cfg.group;
ExecStart = ''
${cfg.package}/bin/scollector -h=${cfg.opentsdbHost}
'';
};
};
users.extraUsers.scollector = {
description = "scollector user";
group = "scollector";
uid = config.ids.uids.scollector;
};
users.extraGroups.scollector.gid = config.ids.gids.scollector;
};
}
Loading…
Cancel
Save