about summary refs log tree commit diff
path: root/modules/nixos/promtail.nix
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2024-04-21 02:15:42 +0300
committerAzat Bahawi <azat@bahawi.net>2024-04-21 02:15:42 +0300
commite6ed60548397627bf10f561f9438201dbba0a36e (patch)
treef9a84c5957d2cc4fcd148065ee9365a0c851ae1c /modules/nixos/promtail.nix
parent2024-04-18 (diff)
2024-04-21
Diffstat (limited to 'modules/nixos/promtail.nix')
-rw-r--r--modules/nixos/promtail.nix135
1 files changed, 0 insertions, 135 deletions
diff --git a/modules/nixos/promtail.nix b/modules/nixos/promtail.nix
deleted file mode 100644
index 65d88d4..0000000
--- a/modules/nixos/promtail.nix
+++ /dev/null
@@ -1,135 +0,0 @@
-{
-  config,
-  lib,
-  this,
-  ...
-}:
-with lib;
-let
-  cfg = config.nixfiles.modules.promtail;
-in
-{
-  options.nixfiles.modules.promtail = {
-    enable = mkEnableOption "Promtail";
-
-    port = mkOption {
-      description = "Port.";
-      type = with types; port;
-      default = 30181;
-    };
-
-    loki.url = mkOption {
-      description = "Address of a listening Loki service.";
-      type = with types; str;
-      default = "https://${config.nixfiles.modules.loki.domain}";
-    };
-
-    filters = mkOption {
-      description = ''Filters to use with "scrape_config.pipeline_stages".'';
-      type = with types; listOf attrs;
-      default = [ ];
-    };
-  };
-
-  config = mkIf cfg.enable {
-    services.promtail = {
-      enable = true;
-
-      configuration = {
-        server = rec {
-          http_listen_address = this.wireguard.ipv4.address;
-          http_listen_port = cfg.port;
-
-          grpc_listen_address = this.wireguard.ipv4.address;
-          grpc_listen_port = http_listen_port + 1;
-
-          log_level = "warn";
-        };
-
-        clients = [
-          {
-            url = "${cfg.loki.url}/loki/api/v1/push";
-            batchwait = "30s";
-            batchsize = 100000;
-            external_labels.host_id = config.networking.hostId;
-          }
-        ];
-
-        positions = {
-          filename = "/tmp/positions.yaml";
-          sync_period = "30s";
-          ignore_invalid_yaml = true;
-        };
-
-        scrape_configs = [
-          {
-            job_name = "journal";
-            journal.max_age = "24h";
-            relabel_configs =
-              map
-                (
-                  n:
-                  let
-                    label = toLower n;
-                  in
-                  {
-                    source_labels = [ "__journal_${label}" ];
-                    target_label = if hasPrefix "_" label then substring 1 (stringLength label - 1) label else label;
-                  }
-                )
-                [
-                  # Derived from systemd.journal fields[1].
-                  #
-                  # [1]: https://github.com/coreos/go-systemd/blob/main/sdjournal/journal.go#L335
-                  # [1]: https://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html
-
-                  "MESSAGE"
-                  # "MESSAGE_ID"
-                  "PRIORITY"
-                  # "CODE_FILE"
-                  # "CODE_LINE"
-                  # "CODE_FUNC"
-                  # "ERRNO"
-                  "SYSLOG_FACILITY"
-                  "SYSLOG_IDENTIFIER"
-                  # "SYSLOG_PID"
-                  # "_PID"
-                  # "_UID"
-                  # "_GID"
-                  # "_COMM"
-                  # "_EXE"
-                  "_CMDLINE"
-                  # "_CAP_EFFECTIVE"
-                  # "_AUDIT_SESSION"
-                  # "_AUDIT_LOGINUID"
-                  # "_SYSTEMD_CGROUP"
-                  # "_SYSTEMD_SESSION"
-                  # "_SYSTEMD_UNIT"
-                  # "_SYSTEMD_USER_UNIT"
-                  # "_SYSTEMD_OWNER_UID"
-                  # "_SYSTEMD_SLICE"
-                  # "_SELINUX_CONTEXT"
-                  # "_SOURCE_REALTIME_TIMESTAMP"
-                  # "_BOOT_ID"
-                  # "_MACHINE_ID"
-                  "_HOSTNAME"
-                  # "_TRANSPORT"
-                  # "__CURSOR"
-                  # "__REALTIME_TIMESTAMP"
-                  # "__MONOTONIC_TIMESTAMP"
-                ]
-              ++ [
-                {
-                  # This is weird. I can't find where is this defined in the
-                  # source code but apparently it exists.
-                  source_labels = [ "__journal_priority_keyword" ];
-                  target_label = "level";
-                }
-              ];
-            pipeline_stages = cfg.filters;
-          }
-        ];
-      };
-    };
-  };
-}

Consider giving Nix/NixOS a try! <3