at 23.11-pre 1.6 kB view raw
1import ./make-test-python.nix ({ lib, pkgs, ... }: 2 3{ 4 name = "loki"; 5 6 meta = with lib.maintainers; { 7 maintainers = [ willibutz ]; 8 }; 9 10 nodes.machine = { ... }: { 11 services.loki = { 12 enable = true; 13 configFile = "${pkgs.grafana-loki.src}/cmd/loki/loki-local-config.yaml"; 14 }; 15 services.promtail = { 16 enable = true; 17 configuration = { 18 server = { 19 http_listen_port = 9080; 20 grpc_listen_port = 0; 21 }; 22 clients = [ { url = "http://localhost:3100/loki/api/v1/push"; } ]; 23 scrape_configs = [ 24 { 25 job_name = "system"; 26 static_configs = [ 27 { 28 targets = [ "localhost" ]; 29 labels = { 30 job = "varlogs"; 31 __path__ = "/var/log/*log"; 32 }; 33 } 34 ]; 35 } 36 ]; 37 }; 38 }; 39 }; 40 41 testScript = '' 42 machine.start 43 machine.wait_for_unit("loki.service") 44 machine.wait_for_unit("promtail.service") 45 machine.wait_for_open_port(3100) 46 machine.wait_for_open_port(9080) 47 machine.succeed("echo 'Loki Ingestion Test' > /var/log/testlog") 48 # should not have access to journal unless specified 49 machine.fail( 50 "systemctl show --property=SupplementaryGroups promtail | grep -q systemd-journal" 51 ) 52 machine.wait_until_succeeds( 53 "${pkgs.grafana-loki}/bin/logcli --addr='http://localhost:3100' query --no-labels '{job=\"varlogs\",filename=\"/var/log/testlog\"}' | grep -q 'Loki Ingestion Test'" 54 ) 55 ''; 56})