Servera veselības monitorings ar Discord paziņojumiem

Šis dokuments apraksta, kā uzstādīt automātiskus servera veselības paziņojumus Discord. Katru rītu plkst. 6:00 Discord saņemsi ziņojumu ar servera statusu.


📦 Nepieciešamās atkarības

sudo apt update
sudo apt install curl lm-sensors -y

Pēc lm-sensors instalēšanas jāatrod temperatūras sensori:

sudo sensors-detect --auto

Ielādē sensora draiveri uzreiz:

sudo modprobe coretemp

Pievieno, lai ielādētos automātiski pēc pārstartēšanas:

echo "coretemp" | sudo tee -a /etc/modules

Pārbaudi sensoru izvadi:

sensors

⚠️ Atkarībā no procesora sensora nosaukums var atšķirties. Intel Atom gadījumā tas ir Core 0, nevis Package id 0. Pielāgo skriptu atbilstoši sava datora izvadei.


🔗 Discord Webhook izveidošana

  1. Atver Discord serveri
  2. Izvēlies kanālu → Rediģēt kanāluIntegrācijasWebhooks
  3. Noklikšķini Jauns Webhook
  4. Nokopē Webhook URL — tas izskatās šādi: https://discord.com/api/webhooks/XXXXXXXXXX/XXXXXXXXXXXXXXXX

📝 Skripta izveide

Izveido failu:

sudo nano /usr/local/bin/health_check.sh

Ielīmē šo saturu (aizstāj YOUR_WEBHOOK_ID/YOUR_WEBHOOK_TOKEN ar savu webhook URL):

#!/bin/bash

WEBHOOK_URL="https://discord.com/api/webhooks/YOUR_WEBHOOK_ID/YOUR_WEBHOOK_TOKEN"

# Savāc sistēmas datus
HOSTNAME=$(hostname)
UPTIME=$(uptime -p)
LOAD=$(uptime | awk '{print $(NF-2)}' | tr -d ',')
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}' | awk '{printf "%.0f", $1}')
RAM_TOTAL=$(free -m | awk '/Mem:/ {print $2}')
RAM_USED=$(free -m | awk '/Mem:/ {print $3}')
RAM_PERC=$((RAM_USED * 100 / RAM_TOTAL))
DISK_USAGE=$(df -h / | tail -1 | awk '{print $5}' | tr -d '%')
TEMP=$(sensors 2>/dev/null | grep -oP 'Core 0:\s+\+\K[0-9.]+' || echo "N/A")

# Pievieno brīdinājuma ikonas, ja vērtības pārsniedz normu
[ "$CPU_USAGE" -gt 85 ]  && CPU_WARN="⚠️" || CPU_WARN="✅"
[ "$RAM_PERC" -gt 85 ]   && RAM_WARN="⚠️" || RAM_WARN="✅"
[ "$DISK_USAGE" -gt 85 ] && DISK_WARN="⚠️" || DISK_WARN="✅"

# Sagatavo ziņojumu
MESSAGE="**System Status: $HOSTNAME**
🕒 Uptime: $UPTIME
⚡ Load Average: $LOAD  _(normal: below 1.0 per CPU core)_
🔥 CPU: ${CPU_USAGE}%  $CPU_WARN  _(normal: < 85%)_
💾 RAM: ${RAM_USED}/${RAM_TOTAL} MB (${RAM_PERC}%)  $RAM_WARN  _(normal: < 85%)_
💿 Disk /: ${DISK_USAGE}%  $DISK_WARN  _(normal: < 85%)_
🌡️ CPU Temp: ${TEMP}°C  _(normal: < 70°C)_"

# Ekranē JSON speciālās rakstzīmes
ESCAPED_MESSAGE=$(echo "$MESSAGE" | sed 's/\\/\\\\/g; s/"/\\"/g' | awk '{printf "%s\\n", $0}' | sed '$ s/\\n$//')

# Nosūta uz Discord
curl -s -o /dev/null -w "%{http_code}" \
     -H "Content-Type: application/json" \
     -d "{\"content\": \"$ESCAPED_MESSAGE\", \"username\": \"DietPi Health\"}" \
     "$WEBHOOK_URL"

Saglabā: Ctrl+OEnterCtrl+X


⚙️ Skripta palaišanas tiesības

sudo chmod +x /usr/local/bin/health_check.sh

chmod +x — piešķir failam izpildes tiesības. Bez tā Linux neļaus skriptu palaist.


🧪 Testēšana

bash /usr/local/bin/health_check.sh

Jāatgriežas 204 — tas nozīmē, ka Discord pieņēma ziņojumu. Pārbaudi Discord kanālu.


⏰ Automātiska palaišana ar Cron

Cron ir Linux uzdevumu plānotājs — kā “modinātājs” komandām.

sudo crontab -e

Pievieno šo rindu faila beigās:

0 6 * * * /usr/local/bin/health_check.sh

Skaidrojums: 0 6 * * * — katru dienu plkst. 6:00.

Pārbaudi, vai uzdevums pievienots:

sudo crontab -l

🧹 Ja kaut kas nogāja greizi — kā notīrīt

Ja instalēja ko lieku (piemēram, netdata vai python3):

sudo apt purge <pakotnes-nosaukums> -y
sudo apt autoremove -y
sudo apt clean

✅ Gala rezultāts

Katru rītu plkst. 6:00 Discord saņemsi šādu ziņojumu:

System Status: DietPiMusic
🕒 Uptime: up 2 days
⚡ Load Average: 0.4  (normal: below 1.0 per CPU core)
🔥 CPU: 23%  ✅  (normal: < 85%)
💾 RAM: 512/2048 MB (25%)  ✅  (normal: < 85%)
💿 Disk /: 45%  ✅  (normal: < 85%)
🌡️ CPU Temp: 52.0°C  (normal: < 70°C)

Ja kāda vērtība pārsniegs 85% — ikona mainīsies no ✅ uz ⚠️.

Leave a Reply