{ config, lib, pkgs, ... }: let cfg = config.my.services.monitoring.promtail; in { options.my.services.monitoring.promtail = with lib; { enable = mkEnableOption "promtail logs exporter"; }; config = lib.mkIf cfg.enable { services.promtail = { enable = true; configuration = { clients = [{ url = "http://192.168.6.40:3100/loki/api/v1/push"; }]; scrape_configs = [ { job_name = "journal"; journal = { json = true; path = "/var/log/journal"; max_age = "12h"; labels = { host = config.networking.hostName; job = "journal"; "__path__" = "/var/log/journal"; }; }; relabel_configs = [ { source_labels = [ "__journal__systemd_unit" ]; target_label = "unit"; } { source_labels = [ "__journal_priority" ]; target_label = "priority"; } { source_labels = [ "__journal_syslog_identifier" ]; target_label = "syslog_id"; } ]; } { job_name = "nginx"; static_configs = [{ labels = { host = config.networking.hostName; job = "nginx"; __path__ = "/var/log/nginx/*"; }; }]; } ]; server = { http_listen_port = 9832; http_path_prefix = "/promtail"; grpc_listen_port = 0; }; }; }; }; }