From 3a53f289b2bd8fecbb365351235c0a1988e72273 Mon Sep 17 00:00:00 2001
From: Florian Sesser <florian@private.storage>
Date: Fri, 26 Nov 2021 16:16:10 +0000
Subject: [PATCH] Loki: Add promtail to monitoring machine

---
 morph/lib/monitoring.nix                      |  3 +-
 .../modules/monitoring/exporters/promtail.nix | 34 +++++++++++++++++++
 2 files changed, 36 insertions(+), 1 deletion(-)
 create mode 100644 nixos/modules/monitoring/exporters/promtail.nix

diff --git a/morph/lib/monitoring.nix b/morph/lib/monitoring.nix
index 066f554c..32454abd 100644
--- a/morph/lib/monitoring.nix
+++ b/morph/lib/monitoring.nix
@@ -24,8 +24,9 @@
     ../../nixos/modules/monitoring/vpn/server.nix
     ../../nixos/modules/monitoring/server/grafana.nix
     ../../nixos/modules/monitoring/server/prometheus.nix
+    ../../nixos/modules/monitoring/server/loki.nix
     ../../nixos/modules/monitoring/exporters/node.nix
     ../../nixos/modules/monitoring/exporters/blackbox.nix
-     ../../nixos/modules/monitoring/server/loki.nix
+    ../../nixos/modules/monitoring/exporters/promtail.nix
   ];
 }
diff --git a/nixos/modules/monitoring/exporters/promtail.nix b/nixos/modules/monitoring/exporters/promtail.nix
new file mode 100644
index 00000000..8b5e45ac
--- /dev/null
+++ b/nixos/modules/monitoring/exporters/promtail.nix
@@ -0,0 +1,34 @@
+# Promtail log forwarder configuration
+#
+# Scope: Tail logs on the local system and send them to Loki
+#
+# Description: This is not strictly an "exporter" like the Prometheus
+#              exporters, but it is very similar in what it is doing -
+#              preparing local data and sending it off to a TSDB.
+
+{
+  config.services.promtail.enable = true;
+  config.services.promtail.configuration = {
+    server = {
+      http_listen_port = 9080;
+      grpc_listen_port = 0;
+    };
+
+    clients = [{
+        url = "http://monitoring:3100/loki/api/v1/push";
+    }];
+
+    scrape_configs = [{
+      job_name = "systemd-journal";
+      journal = {
+        labels = {
+          job = "systemd-journal";
+        };
+      };
+      relabel_configs = [{
+        source_labels = [ "__journal__systemd_unit" ];
+        target_label = "unit";
+      }];
+    }];
+  };
+}
-- 
GitLab