about summary refs log tree commit diff
path: root/nixos/modules/services/monitoring/telegraf.nix
diff options
context:
space:
mode:
authorJörg Thalheim <joerg@higgsboson.tk>2016-09-08 15:30:20 +0200
committerJörg Thalheim <joerg@higgsboson.tk>2016-09-14 07:19:55 +0200
commit8fddcad3f9831d1961ffd8f6f35f14c759a99cdd (patch)
tree72ac059cd70fa364446c872f1eb5c7570e983a84 /nixos/modules/services/monitoring/telegraf.nix
parent2ff10415bc3ac505958c77a179315662971cd402 (diff)
downloadnixlib-8fddcad3f9831d1961ffd8f6f35f14c759a99cdd.tar
nixlib-8fddcad3f9831d1961ffd8f6f35f14c759a99cdd.tar.gz
nixlib-8fddcad3f9831d1961ffd8f6f35f14c759a99cdd.tar.bz2
nixlib-8fddcad3f9831d1961ffd8f6f35f14c759a99cdd.tar.lz
nixlib-8fddcad3f9831d1961ffd8f6f35f14c759a99cdd.tar.xz
nixlib-8fddcad3f9831d1961ffd8f6f35f14c759a99cdd.tar.zst
nixlib-8fddcad3f9831d1961ffd8f6f35f14c759a99cdd.zip
telegraf: init at 1.0.0
Signed-off-by: Jörg Thalheim <joerg@higgsboson.tk>
Diffstat (limited to 'nixos/modules/services/monitoring/telegraf.nix')
-rw-r--r--nixos/modules/services/monitoring/telegraf.nix71
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 000000000000..49dc9d8143e6
--- /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";
+    }];
+  };
+}