diff --git a/monitor.sh b/monitor.sh new file mode 100644 index 0000000..b77d987 --- /dev/null +++ b/monitor.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +# Configuration +LOG_FILE="api.log" +GHAYMAH_URL="GHAYMAH_ENDPOINT_HERE" # don't forget to edit it + +echo "Starting log monitor..." +echo "Watching file: $LOG_FILE" + +# Check if log file exists +if [ ! -f "$LOG_FILE" ]; then + echo "Warning: $LOG_FILE not found. Creating it..." + touch "$LOG_FILE" +fi + +# Function to get server info +get_server_info() { + # Get IP address + IP=$(hostname -I | awk '{print $1}') + + # Get CPU usage + CPU=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1) + + # Get available RAM + RAM=$(free -h | grep Mem | awk '{print $7}') + + # Get available disk space + DISK=$(df -h / | tail -1 | awk '{print $4}') + + echo "$IP|$CPU|$RAM|$DISK" +} + +# Function to send alert +send_alert() { + ERROR_MSG=$1 + TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + + # Get server metrics + SERVER_INFO=$(get_server_info) + IP=$(echo $SERVER_INFO | cut -d'|' -f1) + CPU=$(echo $SERVER_INFO | cut -d'|' -f2) + RAM=$(echo $SERVER_INFO | cut -d'|' -f3) + DISK=$(echo $SERVER_INFO | cut -d'|' -f4) + + # Create JSON payload + JSON_PAYLOAD=$(cat <> alerts.log + echo "Alert saved to alerts.log" +} + +# Monitor log file continuously +tail -f "$LOG_FILE" | while read line +do + # Check for error patterns + if echo "$line" | grep -E "(ERROR|400|404|500|failed|timeout)" > /dev/null; then + echo "Error found: $line" + send_alert "$line" + fi +done