diff options
author | Jörg Thalheim <joerg@higgsboson.tk> | 2016-09-08 15:30:20 +0200 |
---|---|---|
committer | Jörg Thalheim <joerg@higgsboson.tk> | 2016-09-14 07:19:55 +0200 |
commit | 8fddcad3f9831d1961ffd8f6f35f14c759a99cdd (patch) | |
tree | 72ac059cd70fa364446c872f1eb5c7570e983a84 /nixos/modules/services | |
parent | 2ff10415bc3ac505958c77a179315662971cd402 (diff) | |
download | nixpkgs-8fddcad3f9831d1961ffd8f6f35f14c759a99cdd.tar nixpkgs-8fddcad3f9831d1961ffd8f6f35f14c759a99cdd.tar.gz nixpkgs-8fddcad3f9831d1961ffd8f6f35f14c759a99cdd.tar.bz2 nixpkgs-8fddcad3f9831d1961ffd8f6f35f14c759a99cdd.tar.lz nixpkgs-8fddcad3f9831d1961ffd8f6f35f14c759a99cdd.tar.xz nixpkgs-8fddcad3f9831d1961ffd8f6f35f14c759a99cdd.tar.zst nixpkgs-8fddcad3f9831d1961ffd8f6f35f14c759a99cdd.zip |
telegraf: init at 1.0.0
Signed-off-by: Jörg Thalheim <joerg@higgsboson.tk>
Diffstat (limited to 'nixos/modules/services')
-rw-r--r-- | nixos/modules/services/monitoring/telegraf.nix | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/nixos/modules/services/monitoring/telegraf.nix b/nixos/modules/services/monitoring/telegraf.nix new file mode 100644 index 00000000000..49dc9d8143e --- /dev/null +++ b/nixos/modules/services/monitoring/telegraf.nix @@ -0,0 +1,71 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.telegraf; + + configFile = pkgs.runCommand "config.toml" { + buildInputs = [ pkgs.remarshal ]; + } '' + remarshal -if json -of toml \ + < ${pkgs.writeText "config.json" (builtins.toJSON cfg.extraConfig)} \ + > $out + ''; +in { + ###### interface + options = { + services.telegraf = { + enable = mkEnableOption "telegraf server"; + + package = mkOption { + default = pkgs.telegraf; + defaultText = "pkgs.telegraf"; + description = "Which telegraf derivation to use"; + type = types.package; + }; + + extraConfig = mkOption { + default = {}; + description = "Extra configuration options for telegraf"; + type = types.attrs; + example = { + outputs = { + influxdb = { + urls = ["http://localhost:8086"]; + database = "telegraf"; + }; + }; + inputs = { + statsd = { + service_address = ":8125"; + delete_timings = true; + }; + }; + }; + }; + }; + }; + + + ###### implementation + config = mkIf config.services.telegraf.enable { + systemd.services.telegraf = { + description = "Telegraf Agent"; + wantedBy = [ "multi-user.target" ]; + after = [ "network-online.target" ]; + serviceConfig = { + ExecStart=''${cfg.package}/bin/telegraf -config "${configFile}"''; + ExecReload="${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + User = "telegraf"; + Restart = "on-failure"; + }; + }; + + users.extraUsers = [{ + name = "telegraf"; + uid = config.ids.uids.telegraf; + description = "telegraf daemon user"; + }]; + }; +} |