diff --git a/nixos/doc/manual/release-notes/rl-2505.section.md b/nixos/doc/manual/release-notes/rl-2505.section.md index 5f3ac5d12f1b..24e37aa420ac 100644 --- a/nixos/doc/manual/release-notes/rl-2505.section.md +++ b/nixos/doc/manual/release-notes/rl-2505.section.md @@ -42,6 +42,8 @@ - [mqtt-exporter](https://github.com/kpetremann/mqtt-exporter/), a Prometheus exporter for exposing messages from MQTT. Available as [services.prometheus.exporters.mqtt](#opt-services.prometheus.exporters.mqtt.enable). +- [nvidia-gpu](https://github.com/utkuozdemir/nvidia_gpu_exporter), a Prometheus exporter that scrapes `nvidia-smi` for GPU metrics. Available as [services.prometheus.exporters.nvidia-gpu](#opt-services.prometheus.exporters.nvidia-gpu.enable). + - [Buffyboard](https://gitlab.postmarketos.org/postmarketOS/buffybox/-/tree/master/buffyboard), a framebuffer on-screen keyboard. Available as [services.buffyboard](option.html#opt-services.buffyboard). - [KanBoard](https://github.com/kanboard/kanboard), a project management tool that focuses on the Kanban methodology. Available as [services.kanboard](#opt-services.kanboard.enable). diff --git a/nixos/modules/services/monitoring/prometheus/exporters.nix b/nixos/modules/services/monitoring/prometheus/exporters.nix index 26a59c317d8e..1b0a8777324d 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters.nix @@ -66,6 +66,7 @@ let "nginxlog" "node" "nut" + "nvidia-gpu" "pgbouncer" "php-fpm" "pihole" diff --git a/nixos/modules/services/monitoring/prometheus/exporters/nvidia-gpu.nix b/nixos/modules/services/monitoring/prometheus/exporters/nvidia-gpu.nix new file mode 100644 index 000000000000..bf3d6ffa8ec9 --- /dev/null +++ b/nixos/modules/services/monitoring/prometheus/exporters/nvidia-gpu.nix @@ -0,0 +1,29 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + cfg = config.services.prometheus.exporters.nvidia-gpu; + inherit (lib) + types + concatStringsSep + ; +in +{ + port = 9835; + serviceOpts = { + serviceConfig = { + ExecStart = '' + ${pkgs.prometheus-nvidia-gpu-exporter}/bin/nvidia_gpu_exporter \ + --web.listen-address ${cfg.listenAddress}:${toString cfg.port} \ + --nvidia-smi-command ${config.hardware.nvidia.package.bin}/bin/nvidia-smi \ + ${concatStringsSep " " cfg.extraFlags} + ''; + PrivateDevices = false; + }; + wantedBy = [ "multi-user.target" ]; + }; +}