وقتی سایت شما برای چند دقیقه از دسترس خارج میشود، اولین کسی که باید بفهمد شما هستید، نه کاربر یا مدیر فروش. تأخیر در اطلاع از قطعی، یعنی از دست دادن فروش، اعتماد و سئو. پایش آپتایم (Uptime Monitoring) دقیقاً برای همین ساخته شده است: بررسی دورهای در دسترس بودن سایت و اطلاعرسانی فوری هنگام بروز مشکل. اما اگر ابزار را اشتباه تنظیم کنید، به جای کمک، تبدیل به منبع استرس میشود؛ هشدارهای کاذب نیمهشب، اعلانهای بیمورد و در نهایت بیاعتمادی تیم به سیستم هشدار. در این راهنما یاد میگیرید که پایش آپتایم را درست راهاندازی کنید، فاصله بررسی بهینه را انتخاب کنید و هشدارهای کاذب را به حداقل برسانید.
چرا پایش آپتایم ساده به نظر میرسد اما اکثراً خراب میشود؟
ایده اصلی ساده است: یک سرویس خارجی هر چند دقیقه یک بار به سایت شما درخواست HTTP میفرستد و اگر پاسخی دریافت نکند، به شما پیام میدهد. اما مشکل از جایی شروع میشود که «پاسخی دریافت نکند» تعریف دقیقی ندارد. آیا یعنی timeout؟ یعنی کد خطای 500؟ یعنی کندی بیش از حد؟ هر کدام از اینها میتواند معنای متفاوتی داشته باشد و اگر تعریف را شفاف نکنید، سیستم شما یا بیش از حد حساس میشود یا آنقدر کند که عملاً بیفایده است.
تفاوت بین Downtime واقعی و اختلال موقت
یک قطعی واقعی یعنی سایت برای چند دقیقه یا بیشتر کاملاً در دسترس نیست. اما یک اختلال موقت میتواند یک پاسخی باشد که ۳ ثانیه طول کشیده، یا یک خطای 503 که از طرف CDN برگشته و بلافاصله رفع شده. ابزار پایش آپتایم باید بتواند این دو را از هم تشخیص دهد. اگر برای هر خطای گذرا هشدار بدهید، تیم شما به سرعت یاد میگیرد که اعلانها را نادیده بگیرد — و این دقیقاً همان چیزی است که نباید اتفاق بیفتد.
انتخاب فاصله بررسی؛ تعادل بین سرعت و هزینه
رایجترین سؤال در پایش آپتایم این است: «هر چند وقت یک بار چک کنم؟» پاسخ کوتاه: بستگی به بودجه و نیاز شما دارد. پاسخ فنی: معمولاً بین ۳۰ ثانیه تا ۵ دقیقه.
فاصله ۳۰ ثانیه تا ۱ دقیقه
این فاصله برای سایتهای حیاتی مثل درگاه پرداخت، سرویسهای API که قرارداد سطح خدمات (SLA) سخت دارند، یا پلتفرمهای فروش آنلاین با ترافیک بالا مناسب است. مزیت: قطعی را تقریباً بلافاصله میفهمید. عیب: هزینه بیشتر (چون ترافیک بیشتری به سرور شما وارد میشود) و احتمال بالاتر هشدار کاذب اگر تنظیمات درست نباشد.
فاصله ۲ تا ۵ دقیقه
برای اکثر سایتهای شرکتی، وبلاگها و فروشگاههای متوسط، فاصله ۲ تا ۵ دقیقه کاملاً منطقی است. در این بازه، اگر سایت ۱۰ دقیقه قطع باشد، شما حداکثر ۵ دقیقه بعد از شروع قطعی خبردار میشوید. این معمولاً برای واکنش به موقع کافی است و هزینه و نویز را پایین نگه میدارد.
فاصله بیشتر از ۵ دقیقه
برای سایتهای غیرحساس که قطعی چند دقیقهای بحران ایجاد نمیکند، میتوانید فاصله ۱۰ یا ۱۵ دقیقه را انتخاب کنید. اما به یاد داشته باشید: اگر سایت شما ۲۰ دقیقه قطع باشد و شما ۱۵ دقیقه بعد بفهمید، کاربران زیادی دیدهاند که سایت کار نمیکند.
نکته مهم: فاصله بررسی را با سقف پاسخگویی تیم خود هماهنگ کنید. اگر تیم شما فقط در ساعت کاری فعال است، پایش ۳۰ ثانیهای در نیمهشب فقط هشدارهای بیپاسخ تولید میکند.
ابزارهای پایش آپتایم؛ از ساده تا پیشرفته
ابزارهای زیادی برای پایش آپتایم وجود دارد. انتخاب شما به بودجه، تعداد سایت و نیاز به یکپارچگی با ابزارهای دیگر بستگی دارد.
سرویسهای ابری عمومی
سرویسهایی مثل UptimeRobot، Pingdom و StatusCake جزو معروفترینها هستند. UptimeRobot نسخه رایگان با فاصله بررسی ۵ دقیقه و حداکثر ۵۰ مانیتور دارد که برای شروع عالی است. Pingdom امکانات بیشتری مثل بررسی سرعت و گزارشهای دقیقتر دارد اما هزینه آن بالاتر است. این سرویسها از سرورهای مختلف در نقاط مختلف جهان بررسی میکنند، که مزیت بزرگی است: اگر یک دیتاسنتر در اروپا مشکل داشته باشد، مانیتور از آمریکا همچنان سایت شما را میبیند و هشدار کاذب نمیفرستد.
راهاندازی مانیتور اختصاصی با اسکریپت ساده
اگر میخواهید کنترل کامل داشته باشید و هزینه اضافی نپردازید، میتوانید یک اسکریپت ساده روی یک سرور مجزا (نه روی همان سرور سایت!) اجرا کنید. نمونه زیر با Bash و curl کار میکند:
#!/bin/bash
URL="https://example.com"
EXPECTED_CODE=200
TIMEOUT=10
HTTP_CODE=$(curl -o /dev/null -s -w "%{http_code}" --max-time $TIMEOUT "$URL")
if [ "$HTTP_CODE" != "$EXPECTED_CODE" ]; then
echo "ALERT: $URL returned $HTTP_CODE at $(date)" >> /var/log/uptime-alerts.log
# ارسال پیام از طریق API تلگرام یا ایمیل
curl -s -X POST "https://api.telegram.org/botYOUR_TOKEN/sendMessage" \
-d chat_id=YOUR_CHAT_ID \
-d text="⚠️ قطعی سایت: $URL (HTTP $HTTP_CODE)"
fi
این اسکریپت را با cron اجرا کنید:
*/2 * * * * /usr/local/bin/check-uptime.sh
مزیت این روش: هزینه صفر، کنترل کامل روی منطق هشدار. عیب: شما فقط از یک نقطه بررسی میکنید، پس اگر سرور مانیتورینگ خودتان مشکل داشته باشد، هشدار کاذب میگیرید.
پرهیز از هشدار کاذب؛ مهمترین بخش پایش آپتایم
هشدار کاذب یعنی سیستم به شما بگوید سایت قطع است در حالی که نیست. این اتفاق بیشتر از آن چیزی که فکر میکنید رخ میدهد و دلیل اصلی آن تنظیمات نادرست است. در این بخش سه تکنیک عملی برای کاهش هشدار کاذب را مرور میکنیم.
۱. استفاده از آستانه خطا (Threshold) به جای تکخطا
به جای اینکه به سرویس بگویید «اگر یک بار خطا دیدی، هشدار بده»، بگویید «اگر ۳ بار پیاپی خطا دیدی، هشدار بده». اکثر ابزارهای حرفهای این قابلیت را دارند. در UptimeRobot این تنظیم با نام "Max Retries" یا "Attempts" وجود دارد. با این کار، یک خطای گذرا (مثلاً به دلیل نوسان شبکه) باعث هشدار نمیشود، اما قطعی واقعی که چند دقیقه طول بکشد، حتماً هشدار میدهد.
۲. بررسی از چند نقطه جغرافیایی
اگر سرویس شما فقط از یک نقطه بررسی کند و آن نقطه (مثلاً یک دیتاسنتر در فرانکفورت) دچار مشکل شبکه شود، شما هشدار کاذب میگیرید. ابزارهای حرفهای به شما اجازه میدهند تعیین کنید که حداقل ۲ یا ۳ نقطه از ۵ نقطه باید خطا ببینند تا هشدار صادر شود. این کار احتمال هشدار کاذب را به شدت کاهش میدهد.
۳. تنظیم Timeout هوشمندانه
بسیاری از هشدارهای کاذب به دلیل Timeout کوتاه رخ میدهند. اگر سایت شما معمولاً در ۲ ثانیه پاسخ میدهد اما گاهی به دلیل پردازش یک گزارش سنگین، ۵ ثانیه طول میکشد، Timeout را روی ۳ ثانیه تنظیم نکنید. مقدار ۱۰ تا ۱۵ ثانیه برای اکثر سایتها منطقی است. به یاد داشته باشید: هدف پایش آپتایم، تشخیص قطعی کامل است، نه تشخیص کندی. برای کندی، ابزار جداگانهای مثل بررسی Performance لازم است.
اشتباه رایج: تنظیم Timeout روی ۵ ثانیه برای سایتی که روی هاست اشتراکی با منابع محدود اجرا میشود. در این حالت، حتی یک افزایش ترافیک کوچک میتواند باعث شود سایت در ۶ ثانیه پاسخ بدهد و شما هشدار کاذب بگیرید. همیشه Timeout را حداقل ۲ برابر میانگین زمان پاسخ سایت خود تنظیم کنید.
تنظیم هشدار؛ به چه کسی، از چه طریقی، با چه محتوایی؟
هشدار خوب یعنی پیام درست، به فرد درست، در زمان درست. اگر هشدار را به همه بدهید، هیچکس مسئولیت نمیپذیرد. اگر فقط به یک نفر بدهید و او در دسترس نباشد، کل سیستم بیفایده میشود.
کانالهای هشدار
- تلگرام یا پیامک: برای هشدارهای فوری که نیاز به واکنش دارند. تلگرام رایگان است و با Bot API به راحتی متصل میشود. پیامک هزینه دارد اما برای قطعیهای بحرانی ارزش آن را دارد.
- ایمیل: برای گزارشهای دورهای و هشدارهای غیرفوری. ایمیل را برای قطعی واقعی استفاده نکنید چون ممکن است ساعتها دیده نشود.
- سیستم تیکت (مثل Slack یا Rocket.Chat): برای ثبت هشدار و پیگیری تیمی. این کانال را به عنوان کانال اصلی هشدار قطعی در نظر نگیرید چون ممکن است نوتیفیکیشن آن خاموش باشد.
محتوای هشدار
یک هشدار خوب باید شامل این موارد باشد:
- نام سایت یا سرویس (مثلاً «فروشگاه اصلی» نه فقط example.com)
- کد خطای HTTP دریافتی (مثلاً 500 یا 503)
- زمان دقیق شروع مشکل (به وقت محلی)
- نقطهای که خطا را مشاهده کرده (مثلاً فرانکفورت)
- لینک مستقیم به داشبورد مانیتورینگ برای بررسی وضعیت لحظهای
نمونه پیام خوب:
⚠️ قطعی سرویس: فروشگاه اصلی (shop.example.com)
کد خطا: HTTP 503
زمان شروع: 2025-06-15 14:32:10 (UTC+3:30)
منبع خطا: Frankfurt, Germany
وضعیت فعلی: در حال بررسی مجدد (تلاش 2 از 3)
داشبورد: https://status.example.com
بررسی سلامت واقعی؛ فراتر از پاسخ HTTP
پایش آپتایم فقط به این معنا نیست که سایت یک کد 200 برگرداند. یک سایت میتواند کد 200 بدهد اما صفحه اصلی آن خطای PHP نشان دهد یا دیتابیس آن قطع شده باشد. برای پایش واقعی، باید محتوای پاسخ را هم بررسی کنید.
بررسی محتوای کلیدی (Keyword Checking)
بیشتر ابزارهای پایش آپتایم به شما اجازه میدهند یک متن خاص را در پاسخ جستجو کنید. مثلاً میتوانید بگویید «اگر عبارت "ورود به حساب" در صفحه اصلی نبود، هشدار بده». این کار از هشدارهای کاذب ناشی از خطاهای جزئی جلوگیری میکند و مطمئن میشوید که سایت واقعاً کار میکند، نه اینکه فقط یک صفحه خطای سفید با کد 200 برگرداند.
# بررسی وجود متن کلیدی در پاسخ
if curl -s --max-time 10 "$URL" | grep -q "ورود به حساب"; then
echo "OK"
else
echo "ALERT: keyword not found"
fi
پایش لایههای مختلف
برای یک سایت کامل، بهتر است سه مانیتور جداگانه داشته باشید:
- مانیتور HTTP: بررسی در دسترس بودن صفحه اصلی (فاصله ۲ دقیقه)
- مانیتور API: بررسی یک endpoint حیاتی مثل /api/health (فاصله ۱ دقیقه)
- مانیتور DNS: بررسی اینکه رکورد DNS سایت به درستی پاسخ میدهد (فاصله ۱۵ دقیقه)
این تفکیک به شما کمک میکند وقتی مشکلی پیش میآید، سریعتر ریشهیابی کنید. اگر DNS درست کار میکند اما HTTP خطا میدهد، مشکل از وبسرور است نه DNS.
جمعبندی؛ چکلیست نهایی راهاندازی پایش آپتایم
برای اینکه پایش آپتایم شما از روز اول درست کار کند، این مراحل را به ترتیب انجام دهید:
- فاصله بررسی را بر اساس اهمیت سایت انتخاب کنید (۲ دقیقه برای سایتهای حیاتی، ۵ دقیقه برای بقیه)
- Timeout را حداقل ۲ برابر میانگین زمان پاسخ سایت تنظیم کنید
- آستانه خطا را روی ۳ تلاش پیاپی بگذارید
- بررسی از حداقل ۲ نقطه جغرافیایی را فعال کنید
- یک مانیتور محتوایی (Keyword) برای صفحه اصلی اضافه کنید
- کانال هشدار اصلی را تلگرام یا پیامک انتخاب کنید، نه ایمیل
- هشدار را فقط به افراد مسئول بدهید، نه کل تیم
- یک مانیتور جداگانه برای API یا مسیر حیاتی سایت بسازید
- اسکریپت یا سرویس پایش را روی سروری جدا از سایت اصلی اجرا کنید
- یک بار در ماه تنظیمات را مرور کنید و در صورت تغییر زیرساخت، بهروزرسانی کنید
پایش آپتایم یک سرمایهگذاری کوچک با بازده بزرگ است. با تنظیمات درست، شما نهتنها از قطعیها زودتر باخبر میشوید، بلکه اعتماد تیم به سیستم هشدار را هم حفظ میکنید. اگر به دنبال راهکاری هستید که نیاز به مدیریت زیرساخت مانیتورینگ نداشته باشد، سرویسهای پایش ابری که توسط شرکتهای میزبانی مانند سرورنت ارائه میشوند میتوانند گزینه مناسبی باشند. اما در هر صورت، اصولی که در این راهنما مرور کردیم — فاصله بررسی، آستانه خطا و بررسی محتوا — در هر ابزاری که انتخاب کنید، یکسان است.
دیدگاهها ۰
هنوز دیدگاهی ثبت نشده؛ اولین نفر باشید!