پیامک، تلگرام یا بله؟ انتخاب کانال هشدار بدون خستگی از هشدار
کدوم هشدارهای قطعی با پیامک برن و کدوم با تلگرام یا بله، چطور بر اساس فوریت مسیریابی کنیم و چطور هشدارهای مهم زیر هشدارهای بیمورد گم نشن.
بیشتر مانیتورینگها از سرویس میپرسن «هستی؟». مانیتورینگ Heartbeat این رو برعکس میکنه: کار به مانیتور میگه «تموم شد» و سکوت یعنی زنگ خطر. تنها راه مطمئن برای پیدا کردن رایجترین خرابی کرون، یعنی کاری که خیلی ساده دیگه اجرا نمیشه، همینه.
&&) تا هم اجرای ناموفق و هم اجرای جاافتاده هشدار بدن.noc724 سایت، سرور و APIهای شما رو شبانهروز چک میکنه و همون لحظهای که چیزی خراب شد با پیامک، تلگرام یا بله خبرتون میکنه.
چک آپتایم یه چیزی لازم داره که بهش وصل بشه. بکاپ شبانه پورت و آدرسی نداره؛ چند دقیقه اجرا میشه و تموم میشه. اگه خط crontabش موقع دیپلوی پاک شده باشه، سرور از نو ساخته شده باشه، یا کار برای همیشه گیر کرده باشه، هیچ خطایی تولید نمیشه. چند هفته بعد یکی به بکاپ نیاز پیدا میکنه و میبینه آخرینش مال مرداده.
به این الگو کلید مرد مرده هم میگن: زنگ خطر به صدا درمیاد مگر اینکه یکی مدام دکمه رو فشار بده.
0 2 * * * /opt/app/backup.sh && curl -fsS -m 10 --retry 3 https://YOUR-HEARTBEAT-URL > /dev/null&& پینگ رو فقط وقتی میفرسته که بکاپ با کد ۰ تموم بشه.-f باعث میشه curl روی خطای HTTP شکست بخوره، -m 10 سقف انتظار رو تعیین میکنه و --retry 3 از یه اختلال کوتاه شبکه جون سالم به در میبره.#!/bin/bash
set -euo pipefail
pg_dump mydb | gzip > "/backup/mydb-$(date +%F).sql.gz"
find /backup -name 'mydb-*.sql.gz' -mtime +14 -delete
curl -fsS -m 10 --retry 3 https://YOUR-HEARTBEAT-URL > /dev/nullبا set -e هر مرحلهای که شکست بخوره، اسکریپت رو قبل از پینگ متوقف میکنه.
workerهایی که مدام اجرا میشن میتونن از حلقهی اصلیشون پینگ کنن (مثلاً دقیقهای یه بار بعد از پردازش یه دسته) تا workerی که بدون کرش کردن یخ زده هم پیدا بشه.
| کار | فاصله | مهلت |
|---|---|---|
| هر ۵ دقیقه، چند ثانیه اجرا | ۵ دقیقه | ۲ تا ۵ دقیقه |
| گزارش ساعتی، ۲ تا ۱۰ دقیقه اجرا | ۱ ساعت | ۱۵ دقیقه |
| بکاپ شبانه، ۲۰ تا ۶۰ دقیقه اجرا | ۲۴ ساعت | ۱ تا ۲ ساعت |
| پاکسازی هفتگی | ۷ روز | چند ساعت |
مهلت خیلی کوتاه روی هر اجرای کند هشدار میده؛ مهلت خیلی بلند هشدار واقعی رو دیر میکنه. اون رو بر اساس کندترین اجرای عادیای که دیدید تعیین کنید.
درستی خروجی رو چک نمیکنه؛ بکاپی که یه فایل خالی مینویسه هم با کد ۰ تموم میشه. برای کارهای مهم، قبل از پینگ یه بررسی ساده (حجم فایل، تعداد ردیف) اضافه کنید.
یه مانیتور کرون جاب بسازید، فاصلهی مورد انتظار و مهلت رو تعیین کنید و آدرس رو توی کار کپی کنید. اگه پینگ دیر بشه با پیامک، تلگرام یا بله هشدار میگیرید و مانیتور هر بار اعلام حضور رو توی تاریخچهاش نشون میده تا زمانبندی اجرا به اجرا رو یهجا ببینید.
توی curl از --retry استفاده کنید تا مشکلهای کوتاه شبکه هشدار اشتباه ندن. اگه پینگ واقعاً شکست بخوره، مانیتور هشدار میده؛ که درسته، چون نمیتونید مطمئن بشید کار اجرا شده.
بله؛ خیلی از تنظیمات وقتی کار شکست میخوره یه آدرس جدا رو پینگ میکنن یا کد خروج رو میفرستن، تا از شکست فوراً باخبر بشید نه بعد از تموم شدن مهلت.
نه. یه درخواست HTTP کوچیک در پایان اجراست و معمولاً کمتر از یه ثانیه طول میکشه.
نویسنده
تیم noc724
تیم فنی مانیتورینگ آپتایم
ما noc724 رو میسازیم و اداره میکنیم؛ سرویس مانیتورینگ آپتایمی که سایت، سرور و API رو از چند شهر ایران چک میکنه. این راهنماها از مشکلهایی میان که خودمون و کاربرهامون موقع آنلاین نگه داشتن سرویسها باهاشون روبهرو میشیم.
تماس با تیمتخصص:مانیتورینگ کرون
کدوم هشدارهای قطعی با پیامک برن و کدوم با تلگرام یا بله، چطور بر اساس فوریت مسیریابی کنیم و چطور هشدارهای مهم زیر هشدارهای بیمورد گم نشن.
چرا مانیتورهای آپتایم هشدار اشتباه میدن (اختلال شبکه، timeout، محدودیت نرخ، تغییر محتوا) و تنظیماتی که اینها رو حذف میکنه و هشدار واقعی رو سریع نگه میداره.
چطور یه چرخهی آنکال ساده و سیاست ارجاع هشدار بچینیم که هر هشدار حیاتی جواب داده بشه، بدون اینکه یه تیم کوچیک فرسوده بشه.