استفاده از Webhookهای Discord برای دریافت اعلان وضعیت وب‌سایت در Ubuntu 24.04 و Ubuntu 26.04

اگر می‌خواهید بدون نیاز به ورود مداوم به داشبورد مانیتورینگ، از وضعیت وب‌سایت یا سرور خود مطلع شوید، استفاده از Discord Webhook یکی از ساده‌ترین و سریع‌ترین راهکارها است. با کمک Webhookهای دیسکورد می‌توانید هر زمان که وب‌سایت از دسترس خارج شد، دوباره آنلاین شد یا خطایی در سرویس رخ داد، به‌صورت خودکار در یک کانال Discord اعلان دریافت کنید.

در این آموزش یاد می‌گیرید چگونه روی Ubuntu 24.04 LTS و Ubuntu 26.04 LTS یک سیستم اعلان راه‌اندازی کنید که وضعیت وب‌سایت را بررسی کرده و نتیجه را از طریق Discord Webhook ارسال کند.


پیش‌نیازها

قبل از شروع، موارد زیر را آماده کنید:

  • یک سرور با Ubuntu 24.04 یا Ubuntu 26.04
  • دسترسی کاربر دارای دسترسی sudo
  • یک سرور Discord که در آن مجوز مدیریت کانال دارید
  • اتصال اینترنت

مرحله اول: ساخت Discord Webhook

  1. وارد سرور Discord شوید.
  2. روی کانال موردنظر کلیک راست کرده و Edit Channel را انتخاب کنید.
  3. وارد بخش Integrations شوید.
  4. گزینه Webhooks را انتخاب کنید.
  5. روی New Webhook کلیک کنید.
  6. یک نام مناسب مانند:
Website Monitor

برای آن انتخاب کنید.

  1. روی Copy Webhook URL کلیک کنید.

آدرس شما چیزی مشابه زیر خواهد بود:

https://discord.com/api/webhooks/123456789/abcdefghijklmnopqrstuvwxyz

این آدرس را نگه دارید زیرا در ادامه از آن استفاده خواهیم کرد.


مرحله دوم: بروزرسانی سیستم

ابتدا سیستم را بروزرسانی کنید:

sudo apt update
sudo apt upgrade -y

مرحله سوم: نصب ابزارهای موردنیاز

برای ارسال درخواست HTTP و پردازش داده‌ها، ابزارهای زیر را نصب کنید:

sudo apt install curl jq -y

مرحله چهارم: ایجاد اسکریپت مانیتورینگ

یک فایل جدید ایجاد کنید:

nano monitor.sh

کد زیر را داخل فایل قرار دهید:

#!/bin/bash

URL="https://example.com"
WEBHOOK="YOUR_DISCORD_WEBHOOK_URL"

STATUS=$(curl -L -s -o /dev/null -w "%{http_code}" "$URL")

if [ "$STATUS" = "200" ]; then
MESSAGE="🟢 Website is ONLINE
Status Code: $STATUS"
else
MESSAGE="🔴 Website is DOWN
Status Code: $STATUS"
fi

curl -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"$MESSAGE\"}" \
"$WEBHOOK"

مرحله پنجم: تنظیم آدرس سایت و Webhook

دو مقدار زیر را تغییر دهید:

URL="https://example.com"

به آدرس سایت خود تبدیل کنید.

و

WEBHOOK="YOUR_DISCORD_WEBHOOK_URL"

را با Webhook واقعی جایگزین کنید.


مرحله ششم: ذخیره فایل

فایل را ذخیره کرده و خارج شوید.

سپس مجوز اجرا بدهید:

chmod +x monitor.sh

مرحله هفتم: تست اسکریپت

اسکریپت را اجرا کنید:

./monitor.sh

اگر همه چیز درست باشد، در کانال Discord پیامی مشابه زیر مشاهده خواهید کرد:

🟢 Website is ONLINE
Status Code: 200

یا در صورت بروز مشکل:

🔴 Website is DOWN
Status Code: 500

مرحله هشتم: اجرای خودکار با Cron

برای اجرای خودکار هر ۵ دقیقه:

crontab -e

خط زیر را اضافه کنید:

*/5 * * * * /home/username/monitor.sh

به‌جای:

username

نام کاربری خود را وارد کنید.


مرحله نهم: جلوگیری از ارسال اعلان تکراری

اگر اسکریپت در هر بار اجرا پیام ارسال کند، کانال Discord خیلی سریع شلوغ خواهد شد.

راهکار بهتر این است که فقط هنگام تغییر وضعیت، پیام ارسال شود.

فایل را به شکل زیر تغییر دهید:

#!/bin/bash

URL="https://example.com"
WEBHOOK="YOUR_DISCORD_WEBHOOK_URL"
STATEFILE="/tmp/site_state"

STATUS=$(curl -L -s -o /dev/null -w "%{http_code}" "$URL")

if [ "$STATUS" = "200" ]; then
CURRENT="UP"
MESSAGE="🟢 Website is ONLINE"
else
CURRENT="DOWN"
MESSAGE="🔴 Website is DOWN"
fi

LAST=""

if [ -f "$STATEFILE" ]; then
LAST=$(cat "$STATEFILE")
fi

if [ "$CURRENT" != "$LAST" ]; then

curl -H "Content-Type: application/json" \
-X POST \
-d "{\"content\":\"$MESSAGE\"}" \
"$WEBHOOK"

echo "$CURRENT" > "$STATEFILE"

fi

اکنون تنها زمانی اعلان ارسال می‌شود که وضعیت سایت از آنلاین به آفلاین یا برعکس تغییر کند.


مرحله دهم: افزودن اطلاعات بیشتر به اعلان‌ها

می‌توانید پیام را کامل‌تر کنید:

MESSAGE="

🌐 Website Status

URL: $URL

Status Code: $STATUS

Time: $(date)

Server: $(hostname)
"

نمونه خروجی:

🌐 Website Status

URL:
https://example.com

Status Code:
200

Time:
Tue Jul 01 14:30:05 UTC

Server:
web01

بررسی چندین وب‌سایت

اگر چند سایت دارید:

SITES=(
"https://example.com"
"https://api.example.com"
"https://status.example.com"
)

سپس با یک حلقه وضعیت همه آن‌ها را بررسی کنید:

for SITE in "${SITES[@]}"
do

STATUS=$(curl -L -s -o /dev/null -w "%{http_code}" "$SITE")

echo "$SITE -> $STATUS"

done

استفاده از Updown یا Uptime Kuma

اگر از ابزارهای مانیتورینگ مانند Uptime Kuma، Upptime یا سرویس‌های مشابه استفاده می‌کنید، معمولاً نیازی به نوشتن اسکریپت ندارید؛ زیرا این ابزارها از Discord Webhook به‌صورت داخلی پشتیبانی می‌کنند و تنها با وارد کردن آدرس Webhook می‌توانید اعلان‌های قطعی، بازیابی سرویس و سایر رویدادها را مستقیماً در Discord دریافت کنید.


نکات امنیتی

  • آدرس Webhook را عمومی نکنید.
  • آن را در مخزن Git قرار ندهید.
  • بهتر است URL را در یک فایل تنظیمات یا متغیر محیطی نگهداری کنید.
  • در صورت افشای Webhook، فوراً آن را حذف و یک Webhook جدید ایجاد کنید.

جمع‌بندی

در این آموزش یاد گرفتید چگونه روی Ubuntu 24.04 و Ubuntu 26.04 با استفاده از Discord Webhook وضعیت وب‌سایت خود را مانیتور کرده و اعلان‌های لحظه‌ای دریافت کنید. همچنین نحوه اجرای خودکار اسکریپت با Cron، جلوگیری از ارسال اعلان‌های تکراری و ارسال اطلاعات تکمیلی مانند زمان، نام سرور و کد وضعیت HTTP را نیز بررسی کردیم. این روش، راهکاری سبک، رایگان و کاربردی برای اطلاع‌رسانی سریع درباره سلامت سرویس‌ها و وب‌سایت‌ها است.

از همراهی شما با پارمین کلود سپاسگزاریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *