Files
loc_az_hci/scripts/monitoring/collect-metrics.sh
defiQUG c39465c2bd
Some checks failed
Test / test (push) Has been cancelled
Initial commit: loc_az_hci (smom-dbis-138 excluded via .gitignore)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-08 09:04:46 -08:00

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 "$@"