اگر میخواهید بدون نیاز به ورود مداوم به داشبورد مانیتورینگ، از وضعیت وبسایت یا سرور خود مطلع شوید، استفاده از Discord Webhook یکی از سادهترین و سریعترین راهکارها است. با کمک Webhookهای دیسکورد میتوانید هر زمان که وبسایت از دسترس خارج شد، دوباره آنلاین شد یا خطایی در سرویس رخ داد، بهصورت خودکار در یک کانال Discord اعلان دریافت کنید.
در این آموزش یاد میگیرید چگونه روی Ubuntu 24.04 LTS و Ubuntu 26.04 LTS یک سیستم اعلان راهاندازی کنید که وضعیت وبسایت را بررسی کرده و نتیجه را از طریق Discord Webhook ارسال کند.
پیشنیازها
قبل از شروع، موارد زیر را آماده کنید:
- یک سرور با Ubuntu 24.04 یا Ubuntu 26.04
- دسترسی کاربر دارای دسترسی sudo
- یک سرور Discord که در آن مجوز مدیریت کانال دارید
- اتصال اینترنت
مرحله اول: ساخت Discord Webhook
- وارد سرور Discord شوید.
- روی کانال موردنظر کلیک راست کرده و Edit Channel را انتخاب کنید.
- وارد بخش Integrations شوید.
- گزینه Webhooks را انتخاب کنید.
- روی New Webhook کلیک کنید.
- یک نام مناسب مانند:
Website Monitor
برای آن انتخاب کنید.
- روی 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 را نیز بررسی کردیم. این روش، راهکاری سبک، رایگان و کاربردی برای اطلاعرسانی سریع درباره سلامت سرویسها و وبسایتها است.
از همراهی شما با پارمین کلود سپاسگزاریم.
نظرات کاربران