nixos/prometheus: add nvidia-gpu exporter

This exporter allows prometheus-nvidia-gpu-exporter to be installed as a
systemd service.
This commit is contained in:
Daksh Jotwani 2024-12-15 23:05:35 -08:00
parent 046d26e578
commit aa8a2577f1
3 changed files with 32 additions and 0 deletions

View File

@ -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).

View File

@ -66,6 +66,7 @@ let
"nginxlog"
"node"
"nut"
"nvidia-gpu"
"pgbouncer"
"php-fpm"
"pihole"

View File

@ -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" ];
};
}