پیامک، تلگرام یا بله؟ انتخاب کانال هشدار بدون خستگی از هشدار
کدوم هشدارهای قطعی با پیامک برن و کدوم با تلگرام یا بله، چطور بر اساس فوریت مسیریابی کنیم و چطور هشدارهای مهم زیر هشدارهای بیمورد گم نشن.
APIی که 200 OK برمیگردونه هنوز ممکنه خراب باشه. شاید یه لیست خالی برگردونه، یه پیام خطا داخل JSON معتبر، دادهی کهنه از کش، یا هشت ثانیه طول بکشه تا جواب بده. مانیتورینگ خوب API چک میکنه پاسخ چی میگه، نه فقط اینکه پاسخی رسید.
noc724 سایت، سرور و APIهای شما رو شبانهروز چک میکنه و همون لحظهای که چیزی خراب شد با پیامک، تلگرام یا بله خبرتون میکنه.
حداقل چک یه درخواست میفرسته و یه کد وضعیت مشخص انتظار داره:
curl -s -o /dev/null -w "%{http_code} %{time_total}\n" https://api.example.com/v1/health
200 0.142این چک سرورهای کرشکرده، دیپلویهای خرابی که 502 برمیگردونن و گواهیهای منقضی رو پیدا میکنه. هر چیزی که «مؤدبانه» خراب بشه رو نمیبینه.
یه حد زمان پاسخ بذارید که با تحمل کلاینتها جور باشه. اگه اپ موبایلتون بعد از ۱۰ ثانیه timeout میشه، هشدار در ۳ ثانیه برای واکنش جا میذاره. روند رو هم دنبال کنید: endpointی که طی یه هفته از ۱۵۰ میلیثانیه به ۹۰۰ میلیثانیه میرسه معمولاً یه کوئری در حال رشد یا یه ایندکس جاافتاده داره.
روی بدنهی پاسخ شرط بذارید. برای APIهای JSON، فیلدهایی رو چک کنید که مقدارشون ثابت میکنه سیستم از سر تا ته کار میکنه:
{
"status": "ok",
"database": "connected",
"queue_depth": 12,
"version": "2.14.0"
}شرطهای کاربردی:
status برابر ok؛ سرویس خودش رو سالم گزارش میکنه.database برابر connected؛ endpoint سلامت واقعاً دیتابیس رو تست کرده.queue_depth کمتر از یه حد؛ کارهای پسزمینه تلنبار نشدن.Content-Type باید application/json باشه؛ صفحهی خطای HTML از یه پراکسی معمولاً با کد 200 و text/html میرسه. هدرهای کش و CORS وقتی یه دیپلوی تغییرشون میده کلاینتها رو به شکلهای عجیبی خراب میکنن.
باارزشترین endpointها معمولاً توکن لازم دارن. با یه حساب تست اختصاصی مانیتورشون کنید که:
اطلاعات ورودش رو توی فیلدهای امن ابزار مانیتورینگ نگه دارید، نه توی query string آدرس که سر از لاگها درمیاره.
خیلی از جریانهای واقعی درخواستها رو زنجیر میکنن: ورود، گرفتن توکن، صدا زدن API با اون، و شاید دنبال کردن یه شناسهی برگشتی. مانیتور تکدرخواستی نمیتونه این رو تست کنه. مانیتورینگ API چندمرحلهای مرحلهها رو به ترتیب اجرا میکنه، مقدارها رو از یه پاسخ به درخواست بعدی میبره و میگه کدوم مرحله شکست خورد:
POST /auth/login؛ access_token رو از پاسخ بیرون بکش.GET /v1/orders?limit=1 با Authorization: Bearer {token}؛ کد 200 و یه لیست غیرخالی انتظار داریم.GET /v1/orders/{id} با شناسهی مرحلهی ۲؛ همون شناسه باید برگرده.وقتی مرحلهی ۱ شکست میخوره میدونید مشکل از احراز هویته؛ وقتی فقط مرحلهی ۳ خرابه، مشکل از endpoint جزئیاته.
GET رو ترجیح بدید. اگه مجبورید نوشتن رو تست کنید، از sandbox یا یه رکورد تستی استفاده کنید که هر اجرا بازنویسیش کنه.User-Agent قابل تشخیص بذارید تا تیم بتونه ترافیک مانیتورینگ رو از لاگ و آمار جدا کنه.| سیگنال | حد معمول |
|---|---|
| کد وضعیت | هر کدی جز کد مورد انتظار، با تأیید از ۲ لوکیشن یا بیشتر |
| زمان پاسخ | بالاتر از timeout کلاینت منهای یه حاشیهی اطمینان، برای چند چک |
| شرط بدنه | هر شرطی که رد بشه |
| گواهی | کمتر از ۱۴ تا ۳۰ روز تا انقضا |
هر دو. endpoint سلامت میگه سرویس فکر میکنه حالش خوبه؛ endpoint واقعی ثابت میکنه کاربرها واقعاً داده میگیرن. endpointهای سلامتی که به دیتابیس دست نمیزنن راحت گول میخورن.
برای بیشتر APIها هر ۱ تا ۵ دقیقه، و برای APIهای پرداخت یا ورود که چند دقیقه قطعی گرون تموم میشه، هر ۳۰ تا ۶۰ ثانیه.
بله. کوئری رو بهشکل بدنهی POST بفرستید و روی فیلدهای پاسخ شرط بذارید؛ دقیقاً مثل REST.
نویسنده
تیم noc724
تیم فنی مانیتورینگ آپتایم
ما noc724 رو میسازیم و اداره میکنیم؛ سرویس مانیتورینگ آپتایمی که سایت، سرور و API رو از چند شهر ایران چک میکنه. این راهنماها از مشکلهایی میان که خودمون و کاربرهامون موقع آنلاین نگه داشتن سرویسها باهاشون روبهرو میشیم.
تماس با تیمتخصص:مانیتورینگ
کدوم هشدارهای قطعی با پیامک برن و کدوم با تلگرام یا بله، چطور بر اساس فوریت مسیریابی کنیم و چطور هشدارهای مهم زیر هشدارهای بیمورد گم نشن.
چرا مانیتورهای آپتایم هشدار اشتباه میدن (اختلال شبکه، timeout، محدودیت نرخ، تغییر محتوا) و تنظیماتی که اینها رو حذف میکنه و هشدار واقعی رو سریع نگه میداره.
چطور یه چرخهی آنکال ساده و سیاست ارجاع هشدار بچینیم که هر هشدار حیاتی جواب داده بشه، بدون اینکه یه تیم کوچیک فرسوده بشه.