Skip to content

Repository files navigation

pve-coretemp-chart

简体中文

pve-coretemp-chart adds the current Intel CPU package temperature and a native-style temperature history chart to the Proxmox VE node Summary page.

It is intentionally narrow: it reads Linux coretemp only, stores history in an independent fixed-size RRD, and never polls disks.

CPU temperature history chart

Warning

This is an unofficial community patch. It modifies two files shipped by pve-manager. Read the compatibility and rollback sections before installing. A Proxmox VE update can overwrite the patch.

Features

  • Current Package id 0 temperature on the node Summary page.
  • Native proxmoxRRDChart temperature graph.
  • Hour, day, week, month, and year ranges.
  • AVERAGE and MAX consolidation functions.
  • Independent fixed-size RRD with one sample per minute.
  • Version/hash classification, backups, automatic failure recovery, verification, and rollback.
  • Explicit unsupported-mode workflow without disabling hard safety checks.

Safety boundary

The collector reads only:

/sys/class/hwmon/hwmon*/name                 -> coretemp
/sys/class/hwmon/hwmon*/temp*_label          -> Package id 0
/sys/class/hwmon/hwmon*/temp*_input          -> -50°C to 200°C

It does not install or invoke disk-health, NVMe-management, drive-temperature, or general sensor-enumeration tools. It does not scan block devices. The systemd service uses PrivateDevices=true, NoNewPrivileges=true, ProtectSystem=strict, and an explicit write allowlist.

The project does not modify the native PVE node RRD, pvestatd, pmxcfs, or proxmoxlib.js.

Verified compatibility

Status pve-manager Nodes.pm SHA-256 pvemanagerlib.js SHA-256
Verified pve-manager 8.4.19 8de083d1f3c4e134ebd85c1a238e9bf3dae66c7028a01a4e03e308f2f16d036e 5a32a8e187ffed6eff0b1d909fb9868695a7423ddade1f6e2fb677dbbf78813c

“Verified” means the complete collector, API, service, RRD, browser chart, refresh, and rollback workflow was tested on a real host. Community reports do not automatically extend this table.

How it works

  1. pve-coretemp-rrd-update.timer runs every 60 seconds.
  2. The oneshot collector reads coretemp/Package id 0 and updates /var/lib/rrdcached/db/pve-coretemp/<node>.
  3. A Sys.Audit protected API endpoint exposes the RRD through /nodes/{node}/coretemp-rrddata.
  4. An independent ExtJS model/store feeds a native PVE chart.
  5. The existing PVE time-range selector controls both native charts and the temperature chart.

The RRD contains one cpu_temp GAUGE data source with a 120-second heartbeat. AVERAGE and MAX archives retain 70 rows at PVE-compatible resolutions.

Prerequisites

  • A Proxmox VE host using an Intel CPU supported by the Linux coretemp driver.
  • pve-manager and rrdcached installed and healthy.
  • Root shell access to the PVE host.
  • The downloaded fixed-version release archive and its SHA256SUMS file.

No additional sensor package is required when the kernel hwmon interface already exposes coretemp.

Download and verify v1.0.0

Download both release assets from the GitHub Releases page:

pve-coretemp-chart-v1.0.0.tar.gz
SHA256SUMS

On the PVE host, verify before extracting:

sha256sum -c SHA256SUMS
tar -xzf pve-coretemp-chart-v1.0.0.tar.gz
cd pve-coretemp-chart-v1.0.0

Do not pipe a network response directly into a shell. Download a fixed release, verify its hash, inspect it, and run the local script.

Install on a verified environment

Review the pending changes first:

less patches/pve-manager-8.4.19/Nodes.patch
less patches/pve-manager-8.4.19/pvemanagerlib.patch

Install:

./scripts/install.sh

A matching host is recorded as:

installation_class=verified

The installer:

  1. checks root access, PVE services, version, and hashes;
  2. requires both patches to pass patch --dry-run --fuzz=0;
  3. backs up both PVE files and records hashes;
  4. patches copies and validates Perl, JavaScript markers, and systemd;
  5. installs the collector and timer;
  6. lets the timer perform the first sample exactly once;
  7. restarts pvedaemon and pveproxy to load the protected API;
  8. restores the original files automatically if installation fails.

Restarting those two management daemons does not restart running guests.

Install on an unmatched environment

If the PVE version or either file hash is not in the verified matrix, the normal command stops with exit code 2. Inspect the reported version, hashes, patch, and upstream changes before deciding.

To attempt an unsupported installation explicitly:

./scripts/install.sh --force-unsupported

The result is recorded as:

installation_class=unsupported/unverified

--force-unsupported bypasses only the compatibility policy. It cannot bypass:

  • patch --dry-run --fuzz=0;
  • Perl/JavaScript validation;
  • systemd validation;
  • backup creation;
  • atomic target replacement;
  • service/result checks;
  • automatic failure restoration.

If an exact patch cannot apply, installation is rejected even in force mode.

Verify

Wait for at least three one-minute sampling intervals, then run:

./scripts/verify.sh

Manual checks:

systemctl status pve-coretemp-rrd-update.timer --no-pager
systemctl show pve-coretemp-rrd-update.service -p Result --value
pvesh get /nodes/$(hostname)/coretemp-rrddata --timeframe hour --cf AVERAGE
pvesh get /nodes/$(hostname)/coretemp-rrddata --timeframe hour --cf MAX

Expected service state:

  • timer: active;
  • oneshot service after completion: inactive (dead);
  • oneshot Result: success.

Open the node Summary page and perform a hard refresh if an older same-version JavaScript file is cached.

Roll back

From the extracted project directory:

./scripts/rollback.sh

You can also run the copy stored in the current backup directory:

/root/pve-coretemp-chart-current-backup/rollback.sh

To select a specific backup:

./scripts/rollback.sh --backup /root/pve-coretemp-chart-backup-YYYYMMDD-HHMMSS

Rollback restores the exact files saved by that installation, disables the timer, removes only project-owned service files, restarts the PVE management daemons, and moves the custom RRD into archived-rrd/. Historical data is preserved rather than deleted.

PVE upgrades

Preferred sequence:

  1. run rollback before upgrading pve-manager;
  2. perform the PVE upgrade;
  3. wait for a verified compatibility entry for the new version, or independently review upstream changes;
  4. use normal or explicit unsupported installation as appropriate;
  5. rerun verification and browser checks.

Do not replay a patch merely because the package version looks similar. PVE package updates can change either target file without changing the surrounding feature behavior visibly.

Troubleshooting

No coretemp directory

Confirm that the CPU and kernel expose the Intel core temperature driver. This project does not install a fallback sensor stack.

Exit code 2 during installation

The host is outside the verified version/hash matrix. This is a policy stop, not a partial installation. Review the diff before considering --force-unsupported.

Patch dry-run fails

Do not force or add fuzz. The installed PVE file differs structurally from the supported patch. Roll back other local modifications or prepare and test a version-specific patch.

The chart exists but shows an empty or 1970 axis

Inspect the browser request for coretemp-rrddata. A 501 response after changing the protected API means pvedaemon has not loaded the new method. Restart pvedaemon and pveproxy, then refresh the page.

Current temperature is visible but history is empty

Check timer state, collector Result, the custom RRD path, and allow three sampling intervals. Missing sensor samples are stored as unknown rather than fabricated values.

Chart is missing after a successful install

Perform a hard browser refresh. PVE may cache the JavaScript file because the package version in its asset URL did not change.

Installed files

/usr/local/sbin/pve-coretemp-rrd-update
/etc/systemd/system/pve-coretemp-rrd-update.service
/etc/systemd/system/pve-coretemp-rrd-update.timer
/var/lib/rrdcached/db/pve-coretemp/<node>
/root/pve-coretemp-chart-backup-<timestamp>/

The installer also modifies:

/usr/share/perl5/PVE/API2/Nodes.pm
/usr/share/pve-manager/js/pvemanagerlib.js

Development and tests

./tests/test_public_safety.sh .
./tests/test_patches.sh
./tests/test_install_contract.sh
./tests/test_docs_consistency.sh

Collector RRD tests require Perl RRDs. See CONTRIBUTING.md for compatibility evidence requirements.

Security and support

See SECURITY.md for private security reports. Use GitHub Issues for reproducible non-sensitive bugs. Never attach full host configuration, credentials, raw task logs, or unredacted screenshots.

License and trademark notice

Original project code is licensed under the MIT License.

This project is not affiliated with, endorsed by, or supported by Proxmox Server Solutions GmbH. Proxmox and Proxmox VE names are used only to describe compatibility.

About

Native-style Intel coretemp history chart for the Proxmox VE node Summary page

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages