Some checks failed
Test / test (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
89 lines
2.0 KiB
Bash
Executable File
89 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
source ~/.bashrc
|
|
# Collect Metrics
|
|
# Collects system, application, network, and storage metrics
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
OUTPUT_DIR="${METRICS_OUTPUT_DIR:-$PROJECT_ROOT/metrics}"
|
|
|
|
# Colors
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
log_info() {
|
|
echo -e "${GREEN}[INFO]${NC} $1"
|
|
}
|
|
|
|
log_warn() {
|
|
echo -e "${YELLOW}[WARN]${NC} $1"
|
|
}
|
|
|
|
collect_system_metrics() {
|
|
log_info "Collecting system metrics..."
|
|
|
|
mkdir -p "$OUTPUT_DIR/system"
|
|
|
|
# CPU metrics
|
|
top -bn1 | head -20 > "$OUTPUT_DIR/system/cpu.txt" 2>/dev/null || true
|
|
|
|
# Memory metrics
|
|
free -h > "$OUTPUT_DIR/system/memory.txt" 2>/dev/null || true
|
|
|
|
# Disk metrics
|
|
df -h > "$OUTPUT_DIR/system/disk.txt" 2>/dev/null || true
|
|
|
|
# Load average
|
|
uptime > "$OUTPUT_DIR/system/uptime.txt" 2>/dev/null || true
|
|
}
|
|
|
|
collect_kubernetes_metrics() {
|
|
log_info "Collecting Kubernetes metrics..."
|
|
|
|
if ! command -v kubectl &> /dev/null; then
|
|
log_warn "kubectl not found, skipping Kubernetes metrics"
|
|
return 0
|
|
fi
|
|
|
|
mkdir -p "$OUTPUT_DIR/kubernetes"
|
|
|
|
# Node metrics
|
|
kubectl top nodes > "$OUTPUT_DIR/kubernetes/nodes.txt" 2>/dev/null || true
|
|
|
|
# Pod metrics
|
|
kubectl top pods --all-namespaces > "$OUTPUT_DIR/kubernetes/pods.txt" 2>/dev/null || true
|
|
|
|
# Resource usage
|
|
kubectl get nodes -o json > "$OUTPUT_DIR/kubernetes/nodes.json" 2>/dev/null || true
|
|
}
|
|
|
|
collect_network_metrics() {
|
|
log_info "Collecting network metrics..."
|
|
|
|
mkdir -p "$OUTPUT_DIR/network"
|
|
|
|
# Interface statistics
|
|
ip -s link > "$OUTPUT_DIR/network/interfaces.txt" 2>/dev/null || true
|
|
|
|
# Network connections
|
|
ss -tunap > "$OUTPUT_DIR/network/connections.txt" 2>/dev/null || true
|
|
}
|
|
|
|
main() {
|
|
log_info "Collecting metrics..."
|
|
|
|
mkdir -p "$OUTPUT_DIR"
|
|
|
|
collect_system_metrics
|
|
collect_kubernetes_metrics
|
|
collect_network_metrics
|
|
|
|
log_info "Metrics collected to: $OUTPUT_DIR"
|
|
}
|
|
|
|
main "$@"
|
|
|