Jared Vititoe daafb6c4fb Fix DIMM parsing, memory slot count, and service status bugs
- Fix BASH_REMATCH being wiped by second =~ in Bank Locator exclusion
  check, causing DIMM table to always show empty. Use glob == *pattern*
  instead of =~ for the exclusion so BASH_REMATCH is preserved.
- Remove incorrect bank_locators subtraction from total_slots count
  (grep pattern already excluded Bank Locator lines, so subtracting
  them again produced 0 total slots).
- Fix check_services showing stray "not-found" line after "inactive"
  status by replacing `|| echo "not-found"` with empty-string check.
- Add bc to README requirements list (script checks for it).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 18:50:28 -05:00

ProxDoc - The Proxmox System Doctor

ProxDoc is a comprehensive diagnostic tool for Proxmox server health monitoring and system examination.

Features

  • Complete system diagnostics and health checks
  • DriveAtlas integration for physical drive bay mapping
  • Ceph cluster health monitoring (OSD tree, pool usage, disk usage)
  • Node Exporter status check for Prometheus monitoring
  • hwmon daemon status for hardware monitoring
  • Quick health check mode for fast assessments
  • Temperature monitoring
  • Disk health status via SMART
  • CPU and RAM information
  • Detailed memory DIMM information (slots, speed, manufacturer)
  • Motherboard and system information
  • Storage information including ZFS pools
  • Network diagnostics with ethtool integration
  • Detailed NIC information (driver, firmware, link speed)
  • HBA/Storage controller detection and details
  • Hardware information
  • Service status monitoring
  • VM and Container status

Requirements

The script requires the following tools to be installed:

  • dmidecode
  • lscpu
  • ip
  • smartctl
  • sensors
  • lspci
  • bc

Optional tools for enhanced diagnostics:

  • ethtool (for detailed NIC information including link speed and firmware)
  • netstat (for network statistics)

Usage

Run remotely via curl:

curl -sL "http://10.10.10.63:3000/LotusGuild/proxDoc/raw/branch/main/proxDoc.sh" | bash -s -- [OPTION]

Examples

# Full system diagnostics
curl -sL "http://10.10.10.63:3000/LotusGuild/proxDoc/raw/branch/main/proxDoc.sh" | bash -s -- --diags

# Quick health check
curl -sL "http://10.10.10.63:3000/LotusGuild/proxDoc/raw/branch/main/proxDoc.sh" | bash -s -- --quick

# Check services
curl -sL "http://10.10.10.63:3000/LotusGuild/proxDoc/raw/branch/main/proxDoc.sh" | bash -s -- --services

# Show drive bay mapping
curl -sL "http://10.10.10.63:3000/LotusGuild/proxDoc/raw/branch/main/proxDoc.sh" | bash -s -- --drives

Available Options

  • --help: Show the help guide
  • --diags: Perform full system examination
  • --quick: Quick health check (services, temps, disks)
  • --drives: Show physical drive bay mapping (DriveAtlas)
  • --ceph: Check Ceph cluster health
  • --node-exporter: Check Node Exporter status
  • --hwmon: Check hwmon daemon status
  • --services: Check vital Proxmox services
  • --vm-list: Check VM vitals
  • --ct-list: Check container vitals
  • --backup: Review backup health
  • --checks=LIST: Run only specific checks (comma-separated)
    • Valid checks: cpu, ram, memory, storage, disk, network, hardware, temps, services, ceph, vms, containers

Output Information

The script provides detailed information about:

  • System information and Proxmox version
  • CPU model, cores, and frequency
  • RAM usage and detailed DIMM information
  • Motherboard manufacturer, model, and serial number
  • Storage status
  • Disk health
  • Network configuration
  • Detailed NIC information (driver, MAC, speed, firmware)
  • HBA/Storage controller details
  • Hardware details including PCI devices
  • System load
  • Service status
  • Recent system errors
  • VM and container status

Note

  • This script must be run as root
  • Designed for Proxmox environments
  • Supports Proxmox version 6.0 and above
  • No local installation required - runs directly from Gitea

Version

Current Version: 1.2.0

Changelog

v1.2.0

  • Fixed variable quoting in disk iteration loops (security)
  • Added input validation with whitelist of valid options
  • Added examples to help documentation
  • Added timeout protection to smartctl and ceph commands
  • Added --checks= option for selective diagnostics
  • Extracted magic strings into named constants
  • Added validation for potentially empty variables
  • Standardized error handling with cleanup trap
  • Added optional logging infrastructure (PROXDOC_LOGFILE)
  • Cached disk list and unit files to reduce command overhead
  • Added efficient process wait utility function
  • Fixed CPU MHz parsing showing multiple values
  • Fixed memory DIMM table not displaying data
  • Fixed bonding_masters showing as network interface

v1.1.0

  • Added DriveAtlas integration (--drives) for physical drive bay mapping
  • Added Ceph cluster health monitoring (--ceph)
  • Added Node Exporter status check (--node-exporter)
  • Added hwmon daemon status check (--hwmon)
  • Added quick health check mode (--quick)
  • Added container list option (--ct-list)
  • Full diagnostics now include all monitoring checks
  • Improved error handling with graceful fallbacks
  • Optimized for remote execution via curl

v1.0.0

  • Initial release
Description
A comprehensive diagnostic tool for Proxmox servers that performs system health checks and monitoring - your virtual system's doctor! 🏥
Readme 248 KiB
Languages
Shell 100%