prometheus-nixos-exporter: wrap into python package
This wraps the executable into a standard python build, which fixes import lag, due to its previous location in the nix store.
Martin Weinelt committed
Feb 3, 2024 at 22:29 UTC
ffa1f35c4cd1f8b7d5e1effa01124efd191c0cfa
4 files changed
+47
-12
modules/prometheus/default.nix
+5
-9
@@ -1,4 +1,8 @@
1
{ pkgs, ... }:
2
+
3
+let
4
+ prometheus-nixos-exporter = pkgs.callPackage ./nixos-exporter {};
5
+in
6
{
7
networking.firewall.allowedTCPPorts = [
8
9100 # node-exporter
@@ -19,7 +23,6 @@
23
${./system-version-exporter.sh} | ${pkgs.moreutils}/bin/sponge system-version.prom
24
'';
25
22
-
26
systemd.services.prometheus-nixos-exporter = {
27
wantedBy = [ "multi-user.target" ];
28
after = [ "network.target" ];
@@ -27,14 +30,7 @@
30
serviceConfig = {
31
Restart = "always";
32
RestartSec = "60s";
30
- ExecStart = let
31
- python = pkgs.python3.withPackages (ps: with ps; [
32
- packaging
33
- prometheus-client
34
- ]);
35
- in ''
36
- ${python}/bin/python ${./nixos-exporter.py}
37
- '';
33
+ ExecStart = "${prometheus-nixos-exporter}/bin/prometheus-nixos-exporter";
34
};
35
};
36
}
modules/prometheus/nixos-exporter/default.nix
new
+20
@@ -0,0 +1,20 @@
1
+{ python3Packages }:
2
+
3
+with python3Packages;
4
+
5
+buildPythonApplication {
6
+ pname = "prometheus-nixos-exporter";
7
+ version = "0.0";
8
+ pyproject = true;
9
+
10
+ src = ./.;
11
+
12
+ nativeBuildInputs = [
13
+ setuptools
14
+ ];
15
+
16
+ propagatedBuildInputs = [
17
+ packaging
18
+ prometheus-client
19
+ ];
20
+}
modules/prometheus/nixos-exporter/prometheus_nixos_exporter/__main__.py
renamed
+7
-3
@@ -80,12 +80,16 @@ class NixosSystemCollector:
80
return 0
81
82
83
-registry = CollectorRegistry()
84
-registry.register(NixosSystemCollector())
83
+def main():
84
+ registry = CollectorRegistry()
85
+ registry.register(NixosSystemCollector())
86
86
-if __name__ == "__main__":
87
# Start up the server to expose the metrics.
88
start_http_server(9300, registry=registry)
89
90
while True:
91
time.sleep(100000)
92
+
93
+
94
+if __name__ == "__main__":
95
+ main()
modules/prometheus/nixos-exporter/pyproject.toml
new
+15
@@ -0,0 +1,15 @@
1
+[build-system]
2
+requires = ["setuptools"]
3
+build-backend = "setuptools.build_meta"
4
+
5
+[project]
6
+name = "prometheus-nixos-exporter"
7
+version = "0.0.0"
8
+description = "Export informations about booted aund current NixOS generation"
9
+dependencies = [
10
+ "packaging",
11
+ "prometheus-client",
12
+]
13
+
14
+[project.scripts]
15
+prometheus-nixos-exporter = "prometheus_nixos_exporter.__main__:main"