Features
- System performance benchmarking
- Network throughput and latency testing
- Disk I/O stress testing
- System information and diagnostics
- Lightweight with minimal dependecies
What Gets Checked
Operating System & Kernel
- OS name and version detection
- Kernel version and architecture
- System uptime and boot information
CPU Analysis
- Physical cores and logical threads
- CPU model and frequency information
- NUMA configuration
- Performance benchmarking (
sysbench)
Memory Analysis
- Total, available, and used memory
- Swap usage and configuration
- Memory throughput benchmarking
Storage & Filesystem
- Disk type detection (SSD/HDD/NVMe)
- Filesystem information and mount options
- Disk usage and available space
- I/O performance testing (FIO)
Network Configuration
- Network interface enumeration
- IP address configuration
- DNS resolution testing
- Interconnectivity validation
- Throughput testing (iperf3)
Security Analysis
- SELinux: Status, mode, policy, boolean settings
- AppArmor: Profile statistics and enforcement status
- Firewall: UFW, firewalld, or iptables analysis
- SSH Configuration: Port, authentication methods, security settings
- Security Services: Status of critical security services
System Configuration
- ulimit values (open files, stack size)
- Important sysctl parameters
- Process limits and system constraints
Kernel & Journal Log Capture
- Copies
dmesgandjournalctllogs from hosts when present for troubleshooting - Hardware-related message extraction and categorization are available within host scripts
Prerequisites & Dependencies
Operating System Prerequisites
PreFlight currently supports:- Linux-based distributions (RHEL, CentOS, Rocky, Alma, Ubuntu, Debian, Oracle Linux, etc.)
- x86-64 architecture (minimum required)
Dependency Management
There are two dependency groups required for running PreFlight:- Orchestrator (
preFlight.sh) Dependencies - Installed on the machine running the orchestrator script. - Remote Host Dependencies - Installed on target hosts that PreFlight will test.
- These can be automatically installed using
--auto-install-deps(internet required). - If not using automatic installation, all dependencies must be manually installed beforehand.
- These can be automatically installed using
Orchestrator (preFlight.sh) Dependencies
These must be installed manually on the orchestrator machine:
jq- JSON processing for parsing resultsbc- mathematical calculations (compression ratios, analysis)tar/gzip- archive creation (for —compress option)ssh/scp- remote host communicationcoreutils- common utilities (find, grep, awk, sed, etc.)
Remote Host Dependencies
These can be installed automatically using--auto-install-deps, provided the hosts have internet access:
curlbctarfindutilsnet-toolsbind-utilsiperf3- network throughput benchmarkingfio- disk I/O benchmarkingsysbench- CPU and memory benchmarking
SSH
SSH key-based access is required for PreFlight to connect to target hosts. For single-For single-node deployments where PreFlight runs on the same machine it evaluates, you can enable local SSH access with:Quick Start
All Options (Parameters) for the preFlight.sh
Configuration Parameters
Test Parameters
Examples
Inventory File Format
This file specifies the target hosts and which storage devices should be tested on each. It can be generated usingutil/detect_devices.sh.
Example:
FIO Files
Custom fio test files can be used with--fio-files. They must follow the standard fio configuration format:
Output & Results
File Structure Overview
Troubleshooting
SSH Connectivity Issues
Permission Issues
Advanced
Execution Flow
The system uses an orchestrator → hosts model:The orchestrator triggers tests on all target hosts from the inventory file, collects results, and performs cleanup.
Orchestrator Machine
- Script:
preFlight.sh - Purpose: Coordinates all remote tests and aggregates results
- Libraries: All files in
/lib/*.sh - Dependencies: Primarily SSH utilities, JSON tools, and core utilities
Remote Hosts (Target Machines)
- Scripts: Files in
/host_files/directorysystem_readiness_check.sh- Main remote diagnostic scriptfio_benchmark_only.sh-FIOtesting scriptremote_fio_wrapper.sh-FIOwrapper for remote executioninstall_dependencies.sh- Dependency installation script
- Purpose: Execute system tests and diagnostics
- Libraries:
lib/common.sh(copied to hosts) - Dependencies: Performance and system analysis tools
Responsibilities of Individual Scripts
System Readiness Check (host_files/system_readiness_check.sh)
- Invoked by the orchestrator with prepared parameters.
- Performs system diagnostics, CPU/memory benchmarks, and optional disk tests
- Outputs structured JSON consumed by the orchestrator
Cluster Orchestrator (preFlight.sh)
- Multi-machine coordination
- Interconnectivity tests
- Parallel and sequential FIO testing
- Network throughput benchmarks (all-to-all or server-to-all)
- Automatic dependency installation (
--auto-install-deps)
FIO Benchmark Tool (host_files/fio_benchmark_only.sh)
- Disk I/O performance testing
- Supports basic and extensive test modes
- Automatic device detection
- Supports custom test configurations