aboutsummaryrefslogtreecommitdiff
path: root/modules/monitoring
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--modules/monitoring/default.nix7
-rw-r--r--modules/monitoring/grafana.nix29
-rw-r--r--modules/monitoring/prometheus.nix34
3 files changed, 70 insertions, 0 deletions
diff --git a/modules/monitoring/default.nix b/modules/monitoring/default.nix
new file mode 100644
index 0000000..d93681b
--- /dev/null
+++ b/modules/monitoring/default.nix
@@ -0,0 +1,7 @@
+{ ... }:
+{
+ imports = [
+ ./grafana.nix
+ ./prometheus.nix
+ ];
+}
diff --git a/modules/monitoring/grafana.nix b/modules/monitoring/grafana.nix
new file mode 100644
index 0000000..8e98ffc
--- /dev/null
+++ b/modules/monitoring/grafana.nix
@@ -0,0 +1,29 @@
+{ lib, ... }:
+let
+ settings = import ../../settings.nix { inherit lib; };
+ ports = settings.network.ports;
+in
+{
+ services.grafana = {
+ enable = true;
+ settings = {
+ server = {
+ protocol = "http";
+ http_addr = "0.0.0.0";
+ http_port = ports.grafana;
+ domain = "grafana.local";
+ serve_from_sub_path = true;
+ };
+ security = {
+ secret_key = settings.grafana.secretKey;
+ allow_sign_up = false;
+ disable_initial_admin_creation = false;
+ disable_gravatar = true;
+ admin_user = settings.grafana.adminUser;
+ admin_email = settings.grafana.adminEmail;
+ admin_password = settings.grafana.adminPassword;
+ allow_embedding = true;
+ };
+ };
+ };
+}
diff --git a/modules/monitoring/prometheus.nix b/modules/monitoring/prometheus.nix
new file mode 100644
index 0000000..5f71c58
--- /dev/null
+++ b/modules/monitoring/prometheus.nix
@@ -0,0 +1,34 @@
+{ lib, ... }:
+let
+ settings = import ../../settings.nix { inherit lib; };
+ ports = settings.network.ports;
+in
+{
+ services.prometheus = {
+ enable = true;
+ port = ports.prometheus;
+
+ exporters.node = {
+ enable = true;
+ port = ports.prometheusNodeExporter;
+ enabledCollectors = [ "systemd" ];
+ extraFlags = [
+ "--collector.ethtool"
+ "--collector.softirqs"
+ "--collector.tcpstat"
+ "--collector.wifi"
+ ];
+ };
+
+ scrapeConfigs = [
+ {
+ job_name = "system";
+ scrape_interval = "10s";
+ static_configs = [{
+ targets = [ "127.0.0.1:${toString ports.prometheusNodeExporter}" ];
+ }];
+ }
+ ];
+ };
+}
+