1{ pkgs, ... }:
2{
3 name = "mimir";
4 nodes = {
5 server =
6 { ... }:
7 {
8 environment.systemPackages = [ pkgs.jq ];
9 services.mimir.enable = true;
10 services.mimir.configuration = {
11 ingester.ring.replication_factor = 1;
12 };
13
14 services.telegraf.enable = true;
15 services.telegraf.extraConfig = {
16 agent.interval = "1s";
17 agent.flush_interval = "1s";
18 inputs.exec = {
19 commands = [
20 "${pkgs.coreutils}/bin/echo 'foo i=42i'"
21 ];
22 data_format = "influx";
23 };
24 outputs = {
25 http = {
26 # test remote write
27 url = "http://localhost:8080/api/v1/push";
28
29 # Data format to output.
30 data_format = "prometheusremotewrite";
31
32 headers = {
33 Content-Type = "application/x-protobuf";
34 Content-Encoding = "snappy";
35 X-Scope-OrgID = "nixos";
36 X-Prometheus-Remote-Write-Version = "0.1.0";
37 };
38 };
39 };
40 };
41 };
42 };
43
44 testScript = ''
45 start_all()
46 server.wait_for_unit("mimir.service")
47 server.wait_for_unit("telegraf.service")
48 server.wait_for_open_port(8080)
49 server.wait_until_succeeds(
50 "curl -H 'X-Scope-OrgID: nixos' http://127.0.0.1:8080/prometheus/api/v1/label/host/values | jq -r '.data[0]' | grep server"
51 )
52 '';
53}