blob: 6c91639ff5fc379938e168135137940811d6fe2e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
{
lib,
config,
services,
listenAddress,
nodeExporterPort,
nginxExporterPort,
nginxLogExporterPort,
cadvisorExporterPort,
dnsmasqExporterPort,
...
}:
{
foundation.tailnetServices =
let
exporter = name: "promethes-${name}-exporter";
in
[
(exporter "node")
(exporter "nginx")
(exporter "nginxlog")
# note: it doesn't matter if the service is only enabled conditionally.
(exporter "dnsmasq")
"cadvisor"
];
services = {
prometheus.exporters = {
node = {
enable = true;
openFirewall = false;
port = nodeExporterPort;
inherit listenAddress;
};
nginx = {
enable = true;
openFirewall = false;
port = nginxExporterPort;
inherit listenAddress;
};
nginxlog = {
enable = true;
openFirewall = false;
port = nginxLogExporterPort;
inherit listenAddress;
user = "nginx";
group = "nginx";
settings.namespaces =
let
namespace = name: log: {
inherit name;
source_files = [ log ];
parser = "json";
metrics_override.prefix = "nginx";
namespace_label = "vhost";
};
vhost = name: (namespace name "/var/log/nginx/${name}.access.log");
in
[
(namespace "default" "/var/log/nginx/access.log")
]
++ (map vhost services);
};
dnsmasq = lib.mkIf config.services.dnsmasq.enable {
enable = true;
port = dnsmasqExporterPort;
inherit listenAddress;
};
};
cadvisor = {
enable = true;
port = cadvisorExporterPort;
inherit listenAddress;
};
};
}
|