Skip to content

mikeodr/intel-gpu-exporter-go

Repository files navigation

Intel GPU Exporter for Prometheus

A Prometheus exporter for Intel GPU metrics, built in Go. This exporter uses intel_gpu_top to collect GPU statistics and exposes them as Prometheus metrics for monitoring and alerting.

Features

  • Real-time GPU Metrics: Continuously monitors Intel GPU statistics
  • Prometheus Integration: Native Prometheus metrics format
  • Multiple Metrics: Tracks frequency, power states, engine utilization, and IRQ rates
  • Lightweight: Minimal resource usage with efficient CSV parsing
  • Robust Error Handling: Context-aware cancellation and graceful shutdowns

Metrics Exposed

Metric Description Labels
intel_gpu_freq_mhz_requested GPU requested frequency in MHz -
intel_gpu_freq_mhz_actual GPU actual frequency in MHz -
intel_gpu_irq_per_sec GPU IRQs per second -
intel_gpu_rc6_percent GPU RC6 power state percentage -
intel_gpu_engine_percent GPU engine busy percentage engine, type

Requirements

  • Linux system with Integrated Intel GPU
  • intel_gpu_top command available in PATH (part of intel-gpu-tools package)
  • Intel GPU drivers properly installed and configured
  • Go 1.25+ (for building from source)

Installing intel_gpu_top

On Ubuntu/Debian:

sudo apt-get install intel-gpu-tools

On NixOS:

environment.systemPackages = with pkgs; [
    intel-gpu-tools
];

Installation

Pre-built Binaries

Download the latest release from the releases page:

# Download and extract (replace VERSION and ARCH as needed)
wget https://github.com/mikeodr/intel-gpu-exporter-go/releases/download/vX.Y.Z/intel-gpu-exporter-vX.Y.Z-linux-amd64.tar.gz
tar -xzf intel-gpu-exporter-vX.Y.Z-linux-amd64.tar.gz
chmod +x intel-gpu-exporter-vX.Y.Z-linux-amd64

Building from Source

git clone https://github.com/mikeodr/intel-gpu-exporter-go.git
cd intel-gpu-exporter-go
make build

Install with go

go install github.com/mikeodr/intel-gpu-exporter-go

Nix/NixOS

Add to your NixOS configuration:

{
  # Import the flake
  inputs.intel-gpu-exporter.url = "github:mikeodr/intel-gpu-exporter-go";
  
  # In your system configuration
  imports = [ inputs.intel-gpu-exporter.nixosModules.default ];
  
  services.intel-gpu-exporter = {
    enable = true;
    port = 8080;
    openFirewall = true;
  };
}

Usage

Basic Usage

Start the exporter on the default port (8080):

./intel-gpu-exporter

Accessing Metrics

Once running, metrics are available at:

http://localhost:8080/metrics

Prometheus Configuration

Add the following job to your prometheus.yml:

scrape_configs:
  - job_name: 'intel-gpu-exporter'
    static_configs:
      - targets: ['localhost:8080']
    scrape_interval: 15s
    metrics_path: /metrics

Systemd Service

Create a systemd service file at /etc/systemd/system/intel-gpu-exporter.service:

[Unit]
Description=Intel GPU Exporter for Prometheus
After=network.target

[Service]
Type=simple
User=nobody
Group=nogroup
ExecStart=/usr/local/bin/intel-gpu-exporter
Restart=on-failure
RestartSec=5
Environment=PORT=8080

[Install]
WantedBy=multi-user.target

Enable and start the service:

sudo systemctl daemon-reload
sudo systemctl enable intel-gpu-exporter
sudo systemctl start intel-gpu-exporter

Development

Prerequisites

  • Go 1.25 or later
  • intel_gpu_top available in PATH

Building

make build

Testing

make test

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Prometheus Exporter for Intel GPU via intel_gpu_top

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •