- 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>
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! 🏥
Languages
Shell
100%