main @ 96 LINES
[ HISTORY ] [ UP ]
┌─ NIX ──────────────────────────────────────────────────────────────────────┐
│ { │
│ config, │
│ lib, │
│ ... │
│ }: let │
│ inherit (lib) mkIf elem; │
│ inherit (config.ooknet.server) services; │
│ in { │
│ config = mkIf (elem "monitoring" services) { │
│ services.loki = { │
│ enable = true; │
│ configuration = { │
│ server.http_listen_port = 3100; │
│ auth_enabled = false; │
│ │
│ common = { │
│ ring = { │
│ instance_addr = "127.0.0.1"; │
│ kvstore.store = "inmemory"; │
│ }; │
│ replication_factor = 1; │
│ path_prefix = "/var/lib/loki"; │
│ }; │
│ │
│ schema_config = { │
│ configs = [ │
│ { │
│ from = "2024-01-01"; │
│ store = "tsdb"; │
│ object_store = "filesystem"; │
│ schema = "v13"; │
│ index = { │
│ prefix = "index_"; │
│ period = "24h"; │
│ }; │
│ } │
│ ]; │
│ }; │
│ │
│ storage_config = { │
│ filesystem.directory = "/var/lib/loki/chunks"; │
│ tsdb_shipper = { │
│ active_index_directory = "/var/lib/loki/tsdb-index"; │
│ cache_location = "/var/lib/loki/tsdb-cache"; │
│ }; │
│ }; │
│ │
│ limits_config = { │
│ reject_old_samples = true; │
│ reject_old_samples_max_age = "168h"; │
│ }; │
│ }; │
│ }; │
│ │
│ # Promtail to ship logs to Loki │
│ services.promtail = { │
│ enable = true; │
│ configuration = { │
│ server = { │
│ http_listen_port = 3031; │
│ grpc_listen_port = 0; │
│ }; │
│ │
│ positions = { │
│ filename = "/tmp/positions.yaml"; │
│ }; │
│ │
│ clients = [ │
│ { │
│ url = "http://127.0.0.1:3100/loki/api/v1/push"; │
│ } │
│ ]; │
│ │
│ scrape_configs = [ │
│ { │
│ job_name = "journal"; │
│ journal = { │
│ max_age = "12h"; │
│ labels = { │
│ job = "systemd-journal"; │
│ host = config.networking.hostName; │
│ }; │
│ }; │
│ relabel_configs = [ │
│ { │
│ source_labels = ["__journal__systemd_unit"]; │
│ target_label = "unit"; │
│ } │
│ ]; │
│ } │
│ ]; │
│ }; │
│ }; │
│ }; │
│ } │
└────────────────────────────────────────────────────────────────────────────────────┘
┌─ NIX ────────────────────────────────┐
│ { │
│ config, │
│ lib, │
│ ... │
│ }: let │
│ inherit (lib) mkIf elem; │
│ inherit (config.ooknet.server) services; │
│ in { │
│ config = mkIf (elem "monitoring" services) │
│ { │
│ services.loki = { │
│ enable = true; │
│ configuration = { │
│ server.http_listen_port = 3100; │
│ auth_enabled = false; │
│ │
│ common = { │
│ ring = { │
│ instance_addr = "127.0.0.1"; │
│ kvstore.store = "inmemory"; │
│ }; │
│ replication_factor = 1; │
│ path_prefix = "/var/lib/loki"; │
│ }; │
│ │
│ schema_config = { │
│ configs = [ │
│ { │
│ from = "2024-01-01"; │
│ store = "tsdb"; │
│ object_store = "filesystem"; │
│ schema = "v13"; │
│ index = { │
│ prefix = "index_"; │
│ period = "24h"; │
│ }; │
│ } │
│ ]; │
│ }; │
│ │
│ storage_config = { │
│ filesystem.directory = "/var/lib/l │
│ oki/chunks"; │
│ tsdb_shipper = { │
│ active_index_directory = "/var/l │
│ ib/loki/tsdb-index"; │
│ cache_location = "/var/lib/loki/ │
│ tsdb-cache"; │
│ }; │
│ }; │
│ │
│ limits_config = { │
│ reject_old_samples = true; │
│ reject_old_samples_max_age = "168h │
│ "; │
│ }; │
│ }; │
│ }; │
│ │
│ # Promtail to ship logs to Loki │
│ services.promtail = { │
│ enable = true; │
│ configuration = { │
│ server = { │
│ http_listen_port = 3031; │
│ grpc_listen_port = 0; │
│ }; │
│ │
│ positions = { │
│ filename = "/tmp/positions.yaml"; │
│ }; │
│ │
│ clients = [ │
│ { │
│ url = "http://127.0.0.1:3100/lok │
│ i/api/v1/push"; │
│ } │
│ ]; │
│ │
│ scrape_configs = [ │
│ { │
│ job_name = "journal"; │
│ journal = { │
│ max_age = "12h"; │
│ labels = { │
│ job = "systemd-journal"; │
│ host = config.networking.hos │
│ tName; │
│ }; │
│ }; │
│ relabel_configs = [ │
│ { │
│ source_labels = ["__journal_ │
│ _systemd_unit"]; │
│ target_label = "unit"; │
│ } │
│ ]; │
│ } │
│ ]; │
│ }; │
│ }; │
│ }; │
│ } │
└──────────────────────────────────────────────┘
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET