1{ pkgs, ... }:
2{
3 name = "telegraf";
4 meta = with pkgs.lib.maintainers; {
5 maintainers = [ mic92 ];
6 };
7
8 nodes.machine =
9 { ... }:
10 {
11 services.telegraf.enable = true;
12 services.telegraf.environmentFiles = [
13 (pkgs.writeText "secrets" ''
14 SECRET=example
15 '')
16 ];
17 services.telegraf.extraConfig = {
18 agent.interval = "1s";
19 agent.flush_interval = "1s";
20 inputs.exec = {
21 commands = [
22 "${pkgs.runtimeShell} -c 'echo $SECRET,tag=a i=42i'"
23 ];
24 timeout = "5s";
25 data_format = "influx";
26 };
27 inputs.ping = {
28 urls = [ "127.0.0.1" ];
29 count = 4;
30 interval = "10s";
31 timeout = 1.0;
32 };
33 outputs.file.files = [ "/tmp/metrics.out" ];
34 outputs.file.data_format = "influx";
35 };
36 };
37
38 testScript = ''
39 start_all()
40
41 machine.wait_for_unit("telegraf.service")
42 machine.wait_until_succeeds("grep -q example /tmp/metrics.out")
43 machine.wait_until_succeeds("grep -q ping /tmp/metrics.out")
44 '';
45}