summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorKranium Gikos Mendoza <kranium@gikos.net>2016-11-05 20:09:29 +0800
committerKranium Gikos Mendoza <kranium@gikos.net>2016-11-10 16:12:52 +0800
commit2715222f0cca9327f896a2ec1ed2de0b7934ad17 (patch)
tree47524f8ca2bc4ed3f77377f9c613205a391cf71e /nixos
parent858f088007629d44341e81437c30cd1ee34ec0d5 (diff)
downloadnixpkgs-2715222f0cca9327f896a2ec1ed2de0b7934ad17.tar
nixpkgs-2715222f0cca9327f896a2ec1ed2de0b7934ad17.tar.gz
nixpkgs-2715222f0cca9327f896a2ec1ed2de0b7934ad17.tar.bz2
nixpkgs-2715222f0cca9327f896a2ec1ed2de0b7934ad17.tar.lz
nixpkgs-2715222f0cca9327f896a2ec1ed2de0b7934ad17.tar.xz
nixpkgs-2715222f0cca9327f896a2ec1ed2de0b7934ad17.tar.zst
nixpkgs-2715222f0cca9327f896a2ec1ed2de0b7934ad17.zip
netdata service: init
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/monitoring/netdata.nix78
2 files changed, 79 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 356cb5a92ed..7cf836d62a1 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -300,6 +300,7 @@
   ./services/monitoring/monit.nix
   ./services/monitoring/munin.nix
   ./services/monitoring/nagios.nix
+  ./services/monitoring/netdata.nix
   ./services/monitoring/prometheus/default.nix
   ./services/monitoring/prometheus/node-exporter.nix
   ./services/monitoring/prometheus/alertmanager.nix
diff --git a/nixos/modules/services/monitoring/netdata.nix b/nixos/modules/services/monitoring/netdata.nix
new file mode 100644
index 00000000000..e1fde4fc950
--- /dev/null
+++ b/nixos/modules/services/monitoring/netdata.nix
@@ -0,0 +1,78 @@
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+let
+  cfg = config.services.netdata;
+
+  configFile = pkgs.writeText "netdata.conf" cfg.configText;
+
+  defaultUser = "netdata";
+
+in {
+  options = {
+    services.netdata = {
+      enable = mkOption {
+        default = false;
+        type = types.bool;
+        description = "Whether to enable netdata monitoring.";
+      };
+
+      user = mkOption {
+        type = types.str;
+        default = "netdata";
+        description = "User account under which netdata runs.";
+      };
+
+      group = mkOption {
+        type = types.str;
+        default = "netdata";
+        description = "Group under which netdata runs.";
+      };
+
+      configText = mkOption {
+        type = types.lines;
+        default = "";
+        description = "netdata.conf configuration.";
+        example = ''
+          [global]
+          debug log = syslog
+          access log = syslog
+          error log = syslog
+        '';
+      };
+
+    };
+  };
+
+  config = mkIf cfg.enable {
+    systemd.services.netdata = {
+      description = "Real time performance monitoring";
+      after = [ "network.target" ];
+      wantedBy = [ "multi-user.target" ];
+      preStart = concatStringsSep "\n" (map (dir: ''
+        mkdir -vp ${dir}
+        chmod 750 ${dir}
+        chown -R ${cfg.user}:${cfg.group} ${dir}
+        '') [ "/var/cache/netdata"
+              "/var/log/netdata"
+              "/var/lib/netdata" ]);
+      serviceConfig = {
+        User = cfg.user;
+        Group = cfg.group;
+        PermissionsStartOnly = true;
+        ExecStart = "${pkgs.netdata}/bin/netdata -D -c ${configFile}";
+        TimeoutStopSec = 60;
+      };
+    };
+
+    users.extraUsers = optional (cfg.user == defaultUser) {
+      name = defaultUser;
+    };
+
+    users.extraGroups = optional (cfg.group == defaultUser) {
+      name = defaultUser;
+    };
+
+  };
+}