prometheus-pacman-exporter
A Prometheus metrics exporter for pacman, designed to be run via a systemd timer and consumed by the node exporter textfile collector.
Requirements
- Python 3.12+
- pacman
- checkupdates (optional)
- An AUR helper or other update command (optional)
Installation
pip install prometheus-pacman-exporter
Usage
Usage: prometheus-pacman-exporter [OPTIONS]
Collect pacman package metrics and export them for Prometheus.
Queries pacman for installed package statistics and available updates, then
writes them to a .prom file for consumption by the Prometheus node exporter
textfile collector.
By default, updateable packages are determined using pacman --query
--upgrades. Use --use-checkupdates to query updates with checkupdates
instead. AUR update metrics can optionally be collected by providing --aur
together with --aur-command.
Options:
--textfile-collector-dir DIRECTORY
Directory where the Prometheus collector
textfile will be written.
[default: /var/lib/prometheus/node-exporter]
--use-checkupdates Use checkupdates instead of pacman --query
--upgrades to check for available updates.
--aur Include AUR updates.
--aur-command TEXT Command used to check for AUR updates.
--color [auto|always|never] Colorize the output. A bare --color is the
same as --color=always.
[default: auto]
--no-color Disable colorization (alias of
--color=never).
-q, --quiet Suppress all non-error output.
-v, --verbose Enable verbose output.
--version Show version information and exit.
-h, --help, -? Show this message and exit.
Checking for updates
By default, available repository updates are determined using:
pacman --query --upgrades
This only reports updates already known to the local package database.
Use --use-checkupdates to instead use
checkupdates, which checks
for available updates without modifying the system's package database:
prometheus-pacman-exporter --use-checkupdates
AUR updates
AUR updates can be included with --aur. An update command must also be
provided with --aur-command:
prometheus-pacman-exporter \
--aur \
--aur-command "paru --query --upgrades --aur"
The AUR command may use any AUR helper or custom program, provided its standard output contains exactly one available package update per line. The exporter counts the number of output lines; it does not interpret the contents of those lines.
For example, output such as:
package-one 1.2.3-1 -> 1.2.4-1
package-two 4.5.6-1 -> 4.6.0-1
is interpreted as two available AUR updates.
Diagnostic or informational messages from the command should therefore be written to standard error rather than standard output.
The value of --aur-command is split into command-line arguments and executed
directly. It is not executed through a shell, so shell features such as pipes,
redirections, variable expansion, and command substitution are not available.
Metrics
| Metric | Description |
|---|---|
pacman_installed_packages |
Total number of installed packages |
pacman_explicit_packages |
Number of explicitly installed packages |
pacman_depends_packages |
Number of packages installed as dependencies |
pacman_unrequired_packages |
Number of packages not required by another package |
pacman_foreign_packages |
Number of packages not present in sync databases |
pacman_native_packages |
Number of packages present in sync databases |
pacman_orphan_packages |
Number of orphaned dependency packages |
pacman_updateable_packages |
Number of available repository package updates |
pacman_aur_updateable_packages |
Number of available AUR package updates |
The AUR update metric is only collected when --aur is enabled.
License
BSD-3-Clause. See LICENSE for details.
