#!/bin/bash

# === Настройки ===
THRESHOLD=90          # Порог уведомления (%)
INTERVAL=5            # Интервал проверки (сек)
WINDOW=120             # Окно усреднения (сек)
COUNT=$((WINDOW / INTERVAL))
LOGFILE="$HOME/cpu_load.log"
ip=$(curl -4 ifconfig.me)

# Создать лог, если не существует
touch "$LOGFILE"

declare -a values=()

while true; do
    # Получаем процент использования CPU
    # cpu_idle=$(top -bn1 | grep "Cpu(s)" | awk '{print $8}' | cut -d'.' -f1)
    cpu_idle=$(top -bn1 | awk -F',' '/Cpu\(s\)/ {for(i=1;i<=NF;i++) if ($i ~ /id/) {print $i}}' | awk '{print int($1)}')
    cpu_usage=$((100 - cpu_idle))

    # Добавляем новое значение в массив
    values+=($cpu_usage)

    # Если длина массива больше окна усреднения — удаляем старое значение
    if [ ${#values[@]} -gt $COUNT ]; then
        values=("${values[@]:1}")
    fi

    # Считаем среднее за минуту
    if [ ${#values[@]} -lt $COUNT ]; then
    sleep $INTERVAL
    continue
    fi
    sum=0
    for v in "${values[@]}"; do
        sum=$((sum + v))
    done
    avg=$((sum / ${#values[@]}))

    # Записываем в лог
    timestamp=$(date +"%Y-%m-%d %H:%M:%S")
    echo "$timestamp | Текущее: ${cpu_usage}% | Среднее за 1 мин: ${avg}%" >> "$LOGFILE"

    # Если среднее выше порога — уведомление
    if [ "$avg" -ge "$THRESHOLD" ]; then
        echo "$timestamp | ?? CPU перевищує ${THRESHOLD}% протягом хвилини" >> "$LOGFILE"
        echo "$timestamp | ?? Попередження: CPU перевищує ${THRESHOLD}% протягом хвилини" >> "$LOGFILE"
		    wget -q -O- "https://api.telegram.org/bot1095667710:AAH1du03RZbWh_Knz63pHpPMPDjwPoxppY8/sendMessage?chat_id=-1001557705701&text=<a>$ip%0A<b>CRITICAL CPU LOAD!</b>%0A$release</a>&parse_mode=HTML&disable_web_page_preview=true" >/dev/null 2>&1
        pkill nknd
        values=()   # <-- Сбрасываем историю
        sleep $WINDOW  # чтобы не спамить уведомлениями каждую проверку
    fi

    sleep $INTERVAL
done
