#!/bin/bash INSTALL_DIR="$HOME/JotunMonitoring" PROMETHEUS_VERSION="3.0.1" SNMP_EXPORTER_VERSION="0.26.0" ARCH="linux-arm64" # Adjust if running on another architecture echo "🚀 Starting installation of Esports Monitoring System..." # Update system packages echo "📦 Updating package lists..." sudo apt update && sudo apt upgrade -y # Install required packages echo "📥 Installing dependencies..." sudo apt-get install -y apt-transport-https software-properties-common wget python3 python3-venv python3-pip tar arp-scan # ✅ Install Grafana from the official APT repository echo "📊 Installing Grafana..." sudo mkdir -p /etc/apt/keyrings/ wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list sudo apt-get update sudo apt-get install -y grafana # Enable and start Grafana service sudo systemctl enable grafana-server sudo systemctl start grafana-server echo "✅ Grafana installed and running!" # Create necessary directories inside JotunMonitoring mkdir -p "$INSTALL_DIR/prometheus" "$INSTALL_DIR/snmp_exporter" "$INSTALL_DIR/PcMonitor" # Download and install Prometheus (if not already installed) cd "$INSTALL_DIR/prometheus" if [ ! -f "prometheus-${PROMETHEUS_VERSION}.${ARCH}.tar.gz" ]; then echo "📥 Downloading Prometheus v$PROMETHEUS_VERSION..." wget https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.${ARCH}.tar.gz tar -xzf prometheus-${PROMETHEUS_VERSION}.${ARCH}.tar.gz --strip-components=1 chmod +x prometheus promtool echo "✅ Prometheus installed successfully!" else echo "⚡ Prometheus v$PROMETHEUS_VERSION already exists." fi # Download and install SNMP Exporter (if not already installed) cd "$INSTALL_DIR/snmp_exporter" if [ ! -f "snmp_exporter-${SNMP_EXPORTER_VERSION}.${ARCH}.tar.gz" ]; then echo "📥 Downloading SNMP Exporter v$SNMP_EXPORTER_VERSION..." wget https://github.com/prometheus/snmp_exporter/releases/download/v${SNMP_EXPORTER_VERSION}/snmp_exporter-${SNMP_EXPORTER_VERSION}.${ARCH}.tar.gz tar -xzf snmp_exporter-${SNMP_EXPORTER_VERSION}.${ARCH}.tar.gz --strip-components=1 chmod +x snmp_exporter echo "✅ SNMP Exporter installed successfully!" else echo "⚡ SNMP Exporter v$SNMP_EXPORTER_VERSION already exists." fi # ✅ Setting up Python environment for PcMonitor in the same folder echo "🐍 Setting up Python environment..." cd "$INSTALL_DIR/PcMonitor" python3 -m venv venv source venv/bin/activate pip install prometheus_client ping3 scapy # Create requirements.txt if it doesn't exist if [ ! -f "requirements.txt" ]; then echo "prometheus_client" > requirements.txt echo "ping3" >> requirements.txt echo "scapy" >> requirements.txt fi pip install -r requirements.txt || echo "⚠️ Some Python dependencies failed to install!" deactivate # ✅ Copy Prometheus configuration echo "⚙️ Configuring Prometheus..." if [ ! -f "$INSTALL_DIR/prometheus/prometheus.yml" ]; then cp "$INSTALL_DIR/prometheus/prometheus.yml" "$INSTALL_DIR/prometheus/" fi # ✅ Copy SNMP Exporter configuration echo "📡 Configuring SNMP Exporter..." if [ ! -f "$INSTALL_DIR/snmp_exporter/snmp.yml" ]; then cp "$INSTALL_DIR/snmp_exporter/snmp.yml" "$INSTALL_DIR/snmp_exporter/" fi # ✅ Create systemd services for Prometheus and SNMP Exporter echo "🛠 Setting up Prometheus and SNMP Exporter as systemd services..." # Prometheus Service PROMETHEUS_SERVICE="/etc/systemd/system/prometheus.service" echo "[Unit] Description=Prometheus Service After=network.target [Service] ExecStart=$INSTALL_DIR/prometheus/prometheus --config.file=$INSTALL_DIR/prometheus/prometheus.yml --storage.tsdb.path=$INSTALL_DIR/prometheus/data WorkingDirectory=$INSTALL_DIR/prometheus Restart=always User=$USER RestartSec=10 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target" | sudo tee $PROMETHEUS_SERVICE # SNMP Exporter Service SNMP_EXPORTER_SERVICE="/etc/systemd/system/snmp_exporter.service" echo "[Unit] Description=SNMP Exporter Service After=network.target [Service] ExecStart=$INSTALL_DIR/snmp_exporter/snmp_exporter --config.file=$INSTALL_DIR/snmp_exporter/snmp.yml WorkingDirectory=$INSTALL_DIR/snmp_exporter Restart=always User=$USER RestartSec=10 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target" | sudo tee $SNMP_EXPORTER_SERVICE # ✅ Create systemd service file for PcMonitor PC_MONITOR_SERVICE="/etc/systemd/system/pc_monitor.service" echo "🔧 Creating pc_monitor.service..." echo "[Unit] Description=PcMonitor Service After=network.target [Service] ExecStart=$INSTALL_DIR/PcMonitor/venv/bin/python3 $INSTALL_DIR/PcMonitor/PcMonitorV2.py WorkingDirectory=$INSTALL_DIR/PcMonitor Restart=always User=root # Add a reasonable restart delay to prevent rapid restart loops RestartSec=10 # Add environment variables Environment=\"PATH=$INSTALL_DIR/PcMonitor/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\" # Capture stdout and stderr to system journal StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target" | sudo tee $PC_MONITOR_SERVICE echo "🔧 Configuring PcMonitor as a systemd service..." sudo systemctl daemon-reload sudo systemctl enable pc_monitor # ✅ Enable services on boot echo "⏳ Enabling services on boot..." sudo systemctl enable prometheus sudo systemctl enable snmp_exporter sudo systemctl enable pc_monitor sudo systemctl enable grafana-server # ✅ Restart services to apply changes echo "🔄 Restarting services..." sudo systemctl restart prometheus sudo systemctl restart snmp_exporter sudo systemctl restart pc_monitor sudo systemctl restart grafana-server echo "✅ Installation completed successfully! 🎉" echo "🖥️ Access Grafana at: http://:3000" echo "📊 Access Prometheus at: http://:9090" echo "🔍 Monitoring metrics: http://:8003/metrics" echo "📡 Access SNMP Exporter: http://:9116/snmp?target="