summary refs log tree commit diff
diff options
context:
space:
mode:
authoryvt <i@yvt.jp>2019-09-21 03:00:48 +0900
committeryvt <i@yvt.jp>2019-09-21 13:16:25 +0900
commit832ede6514d2242e93085c0eda0e065c66bdd262 (patch)
tree16489d0ad77b49a031952eb3a78028ce39887054
parent5ef5852b30aa775d6b17e5895c7df917de472477 (diff)
downloadnixpkgs-832ede6514d2242e93085c0eda0e065c66bdd262.tar
nixpkgs-832ede6514d2242e93085c0eda0e065c66bdd262.tar.gz
nixpkgs-832ede6514d2242e93085c0eda0e065c66bdd262.tar.bz2
nixpkgs-832ede6514d2242e93085c0eda0e065c66bdd262.tar.lz
nixpkgs-832ede6514d2242e93085c0eda0e065c66bdd262.tar.xz
nixpkgs-832ede6514d2242e93085c0eda0e065c66bdd262.tar.zst
nixpkgs-832ede6514d2242e93085c0eda0e065c66bdd262.zip
nixos/do-agent: init
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/monitoring/do-agent.nix53
2 files changed, 54 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index fb8453f1d53..d25836c2d8d 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -502,6 +502,7 @@
   ./services/monitoring/das_watchdog.nix
   ./services/monitoring/datadog-agent.nix
   ./services/monitoring/dd-agent/dd-agent.nix
+  ./services/monitoring/do-agent.nix
   ./services/monitoring/fusion-inventory.nix
   ./services/monitoring/grafana.nix
   ./services/monitoring/grafana-reporter.nix
diff --git a/nixos/modules/services/monitoring/do-agent.nix b/nixos/modules/services/monitoring/do-agent.nix
new file mode 100644
index 00000000000..a03c3330348
--- /dev/null
+++ b/nixos/modules/services/monitoring/do-agent.nix
@@ -0,0 +1,53 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.services.do-agent;
+in
+{
+  options.services.do-agent = {
+    enable = mkEnableOption "do-agent, the DigitalOcean droplet metrics agent";
+
+    user = mkOption {
+      type = types.str;
+      default = "do-agent";
+      description = "User account under which do-agent runs.";
+    };
+
+    group = mkOption {
+      type = types.str;
+      default = "do-agent";
+      description = "Group account under which do-agent runs.";
+    };
+  };
+
+  config = mkIf cfg.enable {
+    environment.systemPackages = [ pkgs.do-agent ];
+
+    systemd.services.do-agent = {
+      description = "DigitalOcean Droplet Metrics Agent";
+      wantedBy = [ "multi-user.target" ];
+      after = [ "network.target" ];
+      serviceConfig = {
+        ExecStart = "${pkgs.do-agent}/bin/do-agent --syslog";
+        Restart = "always";
+        OOMScoreAdjust = -900;
+        SyslogIdentifier = "DigitalOceanAgent";
+        PrivateTmp = "yes";
+        ProtectSystem = "full";
+        ProtectHome = "yes";
+        NoNewPrivileges = "yes";
+      };
+    };
+
+    users.users = optionalAttrs (cfg.user == "do-agent") (singleton
+      { name = "do-agent";
+        group = cfg.group;
+      });
+
+    users.groups = optionalAttrs (cfg.group == "do-agent") (singleton
+      { name = "do-agent";
+      });
+  };
+}