98 lines
3.3 KiB
Bash
98 lines
3.3 KiB
Bash
|
|
#!/usr/bin/env bash
|
|||
|
|
# Check memory limits for all containers on r630-02
|
|||
|
|
# Usage: ./scripts/check-container-memory-limits.sh
|
|||
|
|
|
|||
|
|
set -euo pipefail
|
|||
|
|
|
|||
|
|
# Load IP configuration
|
|||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|||
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|||
|
|
source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true
|
|||
|
|
|
|||
|
|
|
|||
|
|
PROXMOX_HOST="${PROXMOX_HOST_R630_02}"
|
|||
|
|
|
|||
|
|
# Colors
|
|||
|
|
CYAN='\033[0;36m'
|
|||
|
|
GREEN='\033[0;32m'
|
|||
|
|
YELLOW='\033[1;33m'
|
|||
|
|
RED='\033[0;31m'
|
|||
|
|
BLUE='\033[0;34m'
|
|||
|
|
NC='\033[0m'
|
|||
|
|
|
|||
|
|
log_info() { echo -e "${CYAN}ℹ${NC} $1"; }
|
|||
|
|
log_success() { echo -e "${GREEN}✓${NC} $1"; }
|
|||
|
|
log_warn() { echo -e "${YELLOW}⚠${NC} $1"; }
|
|||
|
|
log_error() { echo -e "${RED}✗${NC} $1"; }
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|||
|
|
echo -e "${BLUE}Container Memory Limits Review - r630-02${NC}"
|
|||
|
|
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# Get all containers
|
|||
|
|
CONTAINER_VMIDS=$(ssh -o StrictHostKeyChecking=no root@"$PROXMOX_HOST" \
|
|||
|
|
"pct list 2>/dev/null | tail -n +2 | awk '{print \$1}'" || echo "")
|
|||
|
|
|
|||
|
|
if [ -z "$CONTAINER_VMIDS" ]; then
|
|||
|
|
log_warn "No containers found"
|
|||
|
|
exit 0
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "VMID | Name | Memory Limit | Swap | Current Usage | Status"
|
|||
|
|
echo "-----|------|--------------|------|---------------|--------"
|
|||
|
|
|
|||
|
|
for vmid in $CONTAINER_VMIDS; do
|
|||
|
|
# Get container info
|
|||
|
|
CONTAINER_INFO=$(ssh -o StrictHostKeyChecking=no root@"$PROXMOX_HOST" \
|
|||
|
|
"pct list 2>/dev/null | grep \"^$vmid\" || echo \"\"" 2>/dev/null)
|
|||
|
|
|
|||
|
|
if [ -z "$CONTAINER_INFO" ]; then
|
|||
|
|
continue
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
name=$(echo "$CONTAINER_INFO" | awk '{print $3}')
|
|||
|
|
status=$(echo "$CONTAINER_INFO" | awk '{print $2}')
|
|||
|
|
|
|||
|
|
# Get memory configuration
|
|||
|
|
MEMORY=$(ssh -o StrictHostKeyChecking=no root@"$PROXMOX_HOST" \
|
|||
|
|
"pct config $vmid 2>/dev/null | grep '^memory:' | awk '{print \$2}'" 2>/dev/null || echo "N/A")
|
|||
|
|
|
|||
|
|
SWAP=$(ssh -o StrictHostKeyChecking=no root@"$PROXMOX_HOST" \
|
|||
|
|
"pct config $vmid 2>/dev/null | grep '^swap:' | awk '{print \$2}'" 2>/dev/null || echo "N/A")
|
|||
|
|
|
|||
|
|
# Get current memory usage if running
|
|||
|
|
if [ "$status" = "running" ]; then
|
|||
|
|
CURRENT_USAGE=$(ssh -o StrictHostKeyChecking=no root@"$PROXMOX_HOST" \
|
|||
|
|
"pct exec $vmid -- free -m 2>/dev/null | grep Mem | awk '{print \$3}'" 2>/dev/null || echo "N/A")
|
|||
|
|
else
|
|||
|
|
CURRENT_USAGE="N/A (stopped)"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Format memory values (memory is in bytes, convert to MB)
|
|||
|
|
if [ "$MEMORY" != "N/A" ] && [ -n "$MEMORY" ] && [ "$MEMORY" != "0" ]; then
|
|||
|
|
MEMORY_MB=$((MEMORY / 1024 / 1024))
|
|||
|
|
MEMORY_DISPLAY="${MEMORY_MB}MB"
|
|||
|
|
else
|
|||
|
|
MEMORY_DISPLAY="Not set"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
if [ "$SWAP" != "N/A" ] && [ -n "$SWAP" ] && [ "$SWAP" != "0" ]; then
|
|||
|
|
SWAP_MB=$((SWAP / 1024 / 1024))
|
|||
|
|
SWAP_DISPLAY="${SWAP_MB}MB"
|
|||
|
|
else
|
|||
|
|
SWAP_DISPLAY="Not set"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
if [ "$CURRENT_USAGE" != "N/A" ] && [ "$CURRENT_USAGE" != "N/A (stopped)" ]; then
|
|||
|
|
CURRENT_DISPLAY="${CURRENT_USAGE}MB"
|
|||
|
|
else
|
|||
|
|
CURRENT_DISPLAY="$CURRENT_USAGE"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "$vmid | $name | $MEMORY_DISPLAY | $SWAP_DISPLAY | $CURRENT_DISPLAY | $status"
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
echo ""
|