{ name, hostInfo, dsl, pkgs, lib, containers, ... }: let inherit (dsl) mkContainer; inherit (hostInfo.paths) data; nodePort = 9100; cadvPort = 9200; containerNetworkRulesFile = let mkRules = metric: record: lib.mapAttrsToList (cname: c: { inherit record; expr = "rate(${metric}{device=\"${c.iface}\"}[5m])"; labels = { container = cname; }; }) containers; in pkgs.writeText "container-network.yml" ( builtins.toJSON { groups = [ { name = "container-network"; rules = mkRules "node_network_receive_bytes_total" "container_network_receive_rate" ++ mkRules "node_network_transmit_bytes_total" "container_network_transmit_rate"; } ]; } ); containerDefinedRulesFile = pkgs.writeText "container-defined.yml" ( builtins.toJSON { groups = [ { name = "container-defined"; rules = lib.mapAttrsToList (cname: _: { record = "container_defined"; expr = "1"; labels = { container = cname; }; }) containers; } ]; } ); alloyConfig = pkgs.writeText "config.alloy" '' loki.source.journal "journal" { max_age = "12h" path = "/var/log/journal" labels = { job = "systemd-journal" } relabel_rules = loki.relabel.journal.rules forward_to = [loki.write.local.receiver] } loki.relabel "journal" { forward_to = [] rule { source_labels = ["__journal__systemd_unit"] target_label = "unit" } rule { source_labels = ["__journal__hostname"] target_label = "host" } rule { source_labels = ["__journal_syslog_identifier"] target_label = "syslog_id" } rule { source_labels = ["__journal_priority_keyword"] target_label = "level" } rule { source_labels = ["__journal__systemd_machine_name"] target_label = "container" } } loki.write "local" { endpoint { url = "http://127.0.0.1:3100/loki/api/v1/push" } } ''; dashboards = lib.filterAttrs (name: _: lib.hasSuffix "-dashboard" name) ( dsl.listMap ./overseer (_: path: import path { inherit pkgs lib; }) ); dashboardDir = pkgs.linkFarm "grafana-dashboards" ( lib.mapAttrsToList (name: dashboard: { name = "${lib.removeSuffix "-dashboard" name}.json"; path = dashboard; }) dashboards ); landingRoot = pkgs.writeTextDir "index.html" ''