feat: Fix discovery system critical issues
Resolved multiple critical discovery system issues: ## Discovery System Fixes - Fixed console commands not being discovered on first run - Implemented fallback discovery for empty caches - Added context-aware caching with separate cache keys - Fixed object serialization preventing __PHP_Incomplete_Class ## Cache System Improvements - Smart caching that only caches meaningful results - Separate caches for different execution contexts (console, web, test) - Proper array serialization/deserialization for cache compatibility - Cache hit logging for debugging and monitoring ## Object Serialization Fixes - Fixed DiscoveredAttribute serialization with proper string conversion - Sanitized additional data to prevent object reference issues - Added fallback for corrupted cache entries ## Performance & Reliability - All 69 console commands properly discovered and cached - 534 total discovery items successfully cached and restored - No more __PHP_Incomplete_Class cache corruption - Improved error handling and graceful fallbacks ## Testing & Quality - Fixed code style issues across discovery components - Enhanced logging for better debugging capabilities - Improved cache validation and error recovery Ready for production deployment with stable discovery system. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
#!/bin/bash
|
||||
# System Resource Monitoring Script
|
||||
# Custom PHP Framework - {{ environment | upper }}
|
||||
# Generated by Ansible
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Configuration
|
||||
LOG_DIR="{{ monitoring_logs_dir }}"
|
||||
LOG_FILE="${LOG_DIR}/system-monitor.log"
|
||||
ALERT_SCRIPT="{{ monitoring_scripts_dir }}/send-alert.sh"
|
||||
CONFIG_FILE="{{ monitoring_config_dir }}/monitoring.conf"
|
||||
|
||||
# Load configuration
|
||||
source "${CONFIG_FILE}"
|
||||
|
||||
# Create log directory if it doesn't exist
|
||||
mkdir -p "${LOG_DIR}"
|
||||
|
||||
# Function to log with timestamp
|
||||
log() {
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" >> "${LOG_FILE}"
|
||||
}
|
||||
|
||||
# Function to check CPU usage
|
||||
check_cpu() {
|
||||
local cpu_usage
|
||||
cpu_usage=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
|
||||
cpu_usage=${cpu_usage%.*} # Remove decimal part
|
||||
|
||||
log "CPU Usage: ${cpu_usage}%"
|
||||
|
||||
if (( cpu_usage > {{ monitoring_thresholds.cpu_usage_critical }} )); then
|
||||
"${ALERT_SCRIPT}" "CRITICAL" "CPU Usage Critical" "CPU usage is ${cpu_usage}% (Critical threshold: {{ monitoring_thresholds.cpu_usage_critical }}%)"
|
||||
elif (( cpu_usage > {{ monitoring_thresholds.cpu_usage_warning }} )); then
|
||||
"${ALERT_SCRIPT}" "WARNING" "CPU Usage High" "CPU usage is ${cpu_usage}% (Warning threshold: {{ monitoring_thresholds.cpu_usage_warning }}%)"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to check memory usage
|
||||
check_memory() {
|
||||
local mem_usage
|
||||
mem_usage=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100.0}')
|
||||
|
||||
log "Memory Usage: ${mem_usage}%"
|
||||
|
||||
if (( mem_usage > {{ monitoring_thresholds.memory_usage_critical }} )); then
|
||||
"${ALERT_SCRIPT}" "CRITICAL" "Memory Usage Critical" "Memory usage is ${mem_usage}% (Critical threshold: {{ monitoring_thresholds.memory_usage_critical }}%)"
|
||||
elif (( mem_usage > {{ monitoring_thresholds.memory_usage_warning }} )); then
|
||||
"${ALERT_SCRIPT}" "WARNING" "Memory Usage High" "Memory usage is ${mem_usage}% (Warning threshold: {{ monitoring_thresholds.memory_usage_warning }}%)"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to check disk usage
|
||||
check_disk() {
|
||||
local disk_usage
|
||||
disk_usage=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
|
||||
|
||||
log "Disk Usage: ${disk_usage}%"
|
||||
|
||||
if (( disk_usage > {{ monitoring_thresholds.disk_usage_critical }} )); then
|
||||
"${ALERT_SCRIPT}" "CRITICAL" "Disk Usage Critical" "Disk usage is ${disk_usage}% (Critical threshold: {{ monitoring_thresholds.disk_usage_critical }}%)"
|
||||
elif (( disk_usage > {{ monitoring_thresholds.disk_usage_warning }} )); then
|
||||
"${ALERT_SCRIPT}" "WARNING" "Disk Usage High" "Disk usage is ${disk_usage}% (Warning threshold: {{ monitoring_thresholds.disk_usage_warning }}%)"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to check load average
|
||||
check_load() {
|
||||
local load_avg
|
||||
load_avg=$(uptime | awk -F'load average:' '{ print $2 }' | cut -d, -f1 | tr -d ' ')
|
||||
|
||||
log "Load Average: ${load_avg}"
|
||||
|
||||
if (( $(echo "${load_avg} > {{ monitoring_thresholds.load_average_critical }}" | bc -l) )); then
|
||||
"${ALERT_SCRIPT}" "CRITICAL" "Load Average Critical" "Load average is ${load_avg} (Critical threshold: {{ monitoring_thresholds.load_average_critical }})"
|
||||
elif (( $(echo "${load_avg} > {{ monitoring_thresholds.load_average_warning }}" | bc -l) )); then
|
||||
"${ALERT_SCRIPT}" "WARNING" "Load Average High" "Load average is ${load_avg} (Warning threshold: {{ monitoring_thresholds.load_average_warning }})"
|
||||
fi
|
||||
}
|
||||
|
||||
# Main monitoring function
|
||||
main() {
|
||||
log "Starting system monitoring check"
|
||||
|
||||
check_cpu
|
||||
check_memory
|
||||
check_disk
|
||||
check_load
|
||||
|
||||
log "System monitoring check completed"
|
||||
}
|
||||
|
||||
# Run main function
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user