summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--flake.nix14
-rw-r--r--usecases/server/monitoring-server.nix55
2 files changed, 66 insertions, 3 deletions
diff --git a/flake.nix b/flake.nix
index e2fc4b5..ba8fc24 100644
--- a/flake.nix
+++ b/flake.nix
@@ -79,6 +79,7 @@
79 gotifyServer = (import ./usecases/server/gotify-server.nix inputs); 79 gotifyServer = (import ./usecases/server/gotify-server.nix inputs);
80 hydraServer = (import ./usecases/server/hydra-server.nix inputs); 80 hydraServer = (import ./usecases/server/hydra-server.nix inputs);
81 jellyfin = (import ./usecases/server/jellyfin.nix inputs); 81 jellyfin = (import ./usecases/server/jellyfin.nix inputs);
82 monitoringServer = (import ./usecases/server/monitoring-server.nix inputs);
82 monitoringTarget = (import ./usecases/server/monitoring-target.nix inputs); 83 monitoringTarget = (import ./usecases/server/monitoring-target.nix inputs);
83 radicale = (import ./usecases/server/radicale.nix inputs); 84 radicale = (import ./usecases/server/radicale.nix inputs);
84 smartd = (import ./usecases/server/smartd.nix inputs); 85 smartd = (import ./usecases/server/smartd.nix inputs);
@@ -177,10 +178,17 @@
177 self.nixosModules.usecases.server.gotifyServer 178 self.nixosModules.usecases.server.gotifyServer
178 self.nixosModules.usecases.server.hydraServer 179 self.nixosModules.usecases.server.hydraServer
179 self.nixosModules.usecases.server.jellyfin 180 self.nixosModules.usecases.server.jellyfin
181 self.nixosModules.usecases.server.monitoringServer
180 self.nixosModules.usecases.server.radicale 182 self.nixosModules.usecases.server.radicale
181 self.nixosModules.usecases.server.zfs 183 self.nixosModules.usecases.server.zfs
182 184
183 { 185 ({ modulesPath, ... }: {
186 imports = [
187 (modulesPath + "/virtualisation/qemu-vm.nix")
188 ];
189
190 virtualisation.memorySize = 1024;
191
184 # Needed for ZFS 192 # Needed for ZFS
185 networking.hostId = "4e98920d"; 193 networking.hostId = "4e98920d";
186 194
@@ -192,8 +200,8 @@
192 "testServer:0d5jJjOxIoe6sTr2YKWkQxsM3ZcW+9GAk52yYNVxfYBUxS2nUfzfQk5Jo0OwHnT95bTLXCVNQETGV4m6KHsVCA=="; 200 "testServer:0d5jJjOxIoe6sTr2YKWkQxsM3ZcW+9GAk52yYNVxfYBUxS2nUfzfQk5Jo0OwHnT95bTLXCVNQETGV4m6KHsVCA==";
193 }; 201 };
194 202
195 services.jellyfin.allowedPaths = []; 203 services.jellyfin.allowedPaths = [ ];
196 } 204 })
197 ]; 205 ];
198 }; 206 };
199 testScript = '' 207 testScript = ''
diff --git a/usecases/server/monitoring-server.nix b/usecases/server/monitoring-server.nix
new file mode 100644
index 0000000..823f4f9
--- /dev/null
+++ b/usecases/server/monitoring-server.nix
@@ -0,0 +1,55 @@
1inputs:
2
3{ config, ... }:
4
5{
6 imports = [
7 (import ./monitoring-target.nix inputs)
8 ];
9
10 services.prometheus = {
11 enable = true;
12
13 listenAddress = "127.0.0.1";
14
15 # TODO: for NixOS 21.05
16 extraFlags = [ "--storage.tsdb.retention=15w" ];
17 #retentionTime = "15w";
18
19 scrapeConfigs = [
20 {
21 job_name = "prometheus";
22 static_configs = [
23 { targets = [ "localhost:${toString config.services.prometheus.port}" ]; }
24 ];
25 }
26
27 {
28 job_name = "node_exporter";
29 static_configs = [
30 { targets = [ "localhost:${toString config.services.prometheus.exporters.node.port}" ]; }
31 ];
32 }
33
34 {
35 job_name = "grafana";
36 static_configs = [
37 { targets = [ "localhost:${toString config.services.grafana.port}" ]; }
38 ];
39 }
40 ];
41 };
42
43 services.grafana = {
44 enable = true;
45
46 addr = config.topology.mainVpn.currentNodeIP;
47 port = 3001;
48
49 analytics.reporting.enable = false;
50 };
51
52 networking.firewall.interfaces.${config.topology.mainVpn.interfaceName}.allowedTCPPorts = [
53 config.services.grafana.port
54 ];
55}