about summary refs log tree commit diff
path: root/modules/alloy.nix
diff options
context:
space:
mode:
authorazahi <azat@bahawi.net>2025-03-12 20:17:13 +0300
committerazahi <azat@bahawi.net>2025-03-12 20:17:13 +0300
commitc81dc5a13b469c511fac6fa2390b70422d1b4da5 (patch)
tree4dab5909006ab5c25da6bd9fde6a714c7719ded7 /modules/alloy.nix
parent2025-02-17 (diff)
2025-03-12 HEAD master
Diffstat (limited to '')
-rw-r--r--modules/alloy.nix103
1 files changed, 103 insertions, 0 deletions
diff --git a/modules/alloy.nix b/modules/alloy.nix
new file mode 100644
index 0000000..d4a2e58
--- /dev/null
+++ b/modules/alloy.nix
@@ -0,0 +1,103 @@
+{
+  config,
+  lib,
+  ...
+}:
+let
+  cfg = config.nixfiles.modules.alloy;
+in
+{
+  options.nixfiles.modules.alloy.enable = lib.mkEnableOption "Alloy";
+
+  config = lib.mkIf cfg.enable {
+    services.alloy.enable = true;
+
+    environment.etc."alloy/config.alloy".text = ''
+      logging {
+        level  = "warn"
+        format = "logfmt"
+      }
+
+      prometheus.remote_write "default" {
+        endpoint {
+          url = "https://${config.nixfiles.modules.mimir.domain}/api/v1/push"
+        }
+      }
+      prometheus.exporter.self "default" { }
+      prometheus.scrape "self" {
+        targets    = prometheus.exporter.self.default.targets
+        forward_to = [prometheus.relabel.default.receiver]
+      }
+      prometheus.exporter.unix "default" { }
+      prometheus.scrape "unix" {
+        targets    = prometheus.exporter.unix.default.targets
+        forward_to = [prometheus.relabel.default.receiver]
+      }
+      prometheus.relabel "default" {
+        rule {
+          action        = "replace"
+          regex         = "([^:]+):[0-9]+"
+          replacement   = "$1"
+          source_labels = ["__address__"]
+          target_label  = "instance"
+        }
+        forward_to = [prometheus.remote_write.default.receiver]
+      }
+
+      loki.write "default" {
+        endpoint {
+          url = "https://${config.nixfiles.modules.loki.domain}/loki/api/v1/push"
+        }
+      }
+      discovery.relabel "journal" {
+        targets = []
+        rule {
+          source_labels = ["__journal__systemd_unit"]
+          target_label  = "unit"
+        }
+        rule {
+          source_labels = ["__journal_priority_keyword"]
+          target_label  = "level"
+        }
+        rule {
+          action = "labeldrop"
+          regex  = "service_name"
+        }
+        rule {
+          action        = "drop"
+          source_labels = ["unit"]
+          regex         = "^acme.*"
+        }
+        rule {
+          action        = "drop"
+          source_labels = ["unit"]
+          regex         = "^home-manager.*"
+        }
+        rule {
+          action        = "drop"
+          source_labels = ["unit"]
+          regex         = ".*\\.scope$"
+        }
+        rule {
+          action        = "drop"
+          source_labels = ["unit"]
+          regex         = "^user@.*"
+        }
+        rule {
+          action        = "drop"
+          source_labels = ["unit"]
+          regex         = "^serial-getty@.*"
+        }
+        rule {
+          action        = "drop"
+          source_labels = ["unit"]
+          regex         = "^nixos-rebuild.*"
+        }
+      }
+      loki.source.journal "default" {
+        forward_to    = [loki.write.default.receiver]
+        relabel_rules = discovery.relabel.journal.rules
+      }
+    '';
+  };
+}

Consider giving Nix/NixOS a try! <3