Verified against Proxmox VE 9.2.4 · Proxmox Backup Server 4.2.5 · Ceph Squid / Tentacle · Debian 13 (Trixie) · Linux kernel 7.0 (PVE 9.2 default) · 2026-08-12
○Not yet marked complete on this device.
Most Proxmox incidents are diagnosed twice. Once badly, in the moment, with
whatever was to hand; and once properly, three days later, from evidence that no
longer exists.
The methodology lesson gave you an order to think in. This one is about the raw
material: what to capture, from where, and — the part that is nearly always
skipped — when.
Evidence has a shelf life
Evidence
Survives a reboot?
Survives a week?
The task log of a failed operation
yes, on disk
usually
journalctl output
yes, only if persistent journald is enabled
depends on retention
The current state of a hung process, its stack, its open files
no
no
dmesg ring buffer
no — the journal keeps a copy if persistent
no
Ceph health detail at the moment of the fault
no
no
Which storages were active, which mounts existed
no
no
The output of pvereport
yes, if you saved it
yes
The rows that say “no” are the reason for this lesson. A node that is behaving
strangely right now contains information that a rebooted node does not, and the
instinct under pressure is to reboot first.
pvereport
pvereport collects the state of a node into one stream: version information,
storage configuration and status, network configuration, cluster state, disk and
filesystem layout, and guest configuration. It is exposed on the API as
/nodes/{node}/report, and in the GUI as Node → Summary → System Report.
Read-only / Safecollect a node report while the fault is present— Read-only. Writes the whole report to a timestamped file in /root. Run it on the affected node, not on a healthy one, and run it before restarting anything. It takes tens of seconds on a busy node because it enumerates storages and guests.
$ grep -n '^# ' /root/pvereport-pve-a2-2026-08-12-0314.txt | head -20
12:# pveversion --verbose
58:# cat /etc/hostname
61:# cat /etc/hosts
72:# cat /etc/network/interfaces
118:# ip -details -statistics address
203:# dmesg
2891:# lscpu
2934:# pvesubscription get
2947:# cat /etc/pve/storage.cfg
2999:# pvesm status
3021:# lsblk --ascii
3078:# zpool status
3115:# pvecm status
3161:# ha-manager status
3190:# qm list
Which daemon answers which question
This is the map worth memorising, because picking the wrong log costs more time
than any other mistake in Proxmox troubleshooting.
Symptom
Ask this unit
Why
Web interface unreachable, TLS error, 596
pveproxy
It terminates the public API and web UI on 8006
API call fails, task fails to start, permission error
pvedaemon
The local API worker that actually executes
Status figures stale or missing in the GUI
pvestatd
It collects node, guest and storage status
/etc/pve read-only, config write fails
pve-cluster
The pmxcfs daemon
Node left or rejoined the cluster, quorum changed
corosync
Membership and the totem ring
A guest migrated on its own, a node fenced
pve-ha-crm, pve-ha-lrm
The cluster and local HA managers
A backup or replication job did not run
pvescheduler
It triggers scheduled jobs
A VM died and PVE reacted
qmeventd
It watches QEMU process events
SPICE console fails
spiceproxy
The SPICE side of console access
Ceph anything
ceph-mon@, ceph-osd@, ceph-mgr@
Plus ceph -s and ceph health detail
Read-only / Saferead the right log, scoped to the incident window— Read-only. Always scope by time. An unscoped journalctl on a busy node returns tens of thousands of lines and the interesting one is not near either end.
The last of those — everything at priority err or above across all units — is
the single best first command when you do not yet know which subsystem is at
fault. It is short, it is rarely empty during an incident, and it usually names
the unit you should have asked.
Task logs
Every operation PVE performs — a backup, a migration, a start, a snapshot — is a
task with a UPID, and each task’s output is written to disk on the node that ran
it, under /var/log/pve/tasks/. Part XX covers the UPID structure; what matters
here is retrieval.
Read-only / Safefind a task and read its log— Read-only. The API route is the reliable one because it works from any node and understands the task index. Falling back to the filesystem is for when the API is the thing that is broken.
Read-only / Safewhen the API is down, read the task log from disk— Read-only. Task logs live under /var/log/pve/tasks/ on the node that ran the task, indexed by the active/index files. This is the path that still works when pveproxy or pvedaemon is the fault.
ls -lt /var/log/pve/tasks/ | head
grep -rl 'vzdump:141' /var/log/pve/tasks/ 2>/dev/null | head
tail -50 /var/log/pve/tasks/active
Key takeaways
Evidence has a shelf life. Process state, mounts, ring buffers and live task
output do not survive a reboot; task logs and a saved pvereport do.
pvereport collects versions, network, storage, cluster, disk and guest state
into one readable stream, sectioned by the command that produced each part.
Run it while the fault is present, and save it to /root.
Review a pvereport before sending it outside the organisation — it describes
your infrastructure in detail.
Map the symptom to the daemon: pveproxy for the web interface, pvedaemon
for API and task execution, pvestatd for stale GUI figures, pve-cluster
for /etc/pve, corosync for membership, pve-ha-* for fencing and
automatic migrations, pvescheduler for jobs that did not run.
journalctl --since ... --until ... -p err across all units is the best first
command when the subsystem is unknown.
Check that journald is persistent on every node now. A volatile journal
means a reboot destroys the incident.
Task logs live under /var/log/pve/tasks/ on the node that ran the task. A
migration has two, and the destination’s usually has the real reason. Use
/cluster/tasks to find which node to look at.
A support package is pvereport, pveversion -v from every node, the scoped
journal, the task log, and a narrative that includes what changed in the
preceding week.
Knowledge check
Knowledge check · 5 questions
Q1. A node is up but behaving strangely, and restarting it will probably clear the symptom. What is the highest-value action first?
Q2. The GUI shows question marks over every guest and storage on one node, but guests are running normally and the API responds. Which daemon should you look at?
Q3. A migration fails with a generic error. Which statements about finding the real cause are correct? Select all that apply.
Q4. Because systemd keeps logs, journalctl output from before an incident is always available after a reboot.
Q5. You are opening a support case for an intermittent fault that has now cleared. Which single piece of evidence is most likely to be missing and most costly to lack?
Passing score: 75%. Answers are checked in this browser.