پرش به مطلب اصلی

مانیتورینگ آپ‌تایم

مانیتور آپ‌تایم یک آدرس را در بازه‌های ثابت از سمت ارورا صدا می‌زند، دربارهٔ پاسخ شرطی را بررسی می‌کند و وقتی شرط به‌اندازهٔ کافی نقض شود، خطا باز می‌کند.

برخلاف بقیهٔ محصولات، این یکی هیچ SDKای نمی‌خواهد — همه‌چیزش در خود ارورا تنظیم می‌شود.

ساخت مانیتور​

آپ‌تایم ← مانیتور جدید، یا از راه API:

curl -X POST "$ERRORA/api/v1/projects/$PROJECT_ID/uptime-monitors" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Checkout API",
"url": "https://api.example.com/healthz",
"method": "GET",
"interval_seconds": 300,
"timeout_ms": 10000,
"environment": "production",
"headers": [["Authorization", "Bearer …"]],
"body": "",
"expected_status_codes": [200, 204],
"body_match": "\"status\":\"ok\"",
"downtime_threshold": 3,
"recovery_threshold": 1,
"trace_sampling": false
}'

فیلدها​

فیلدمعنی
urlآدرسی که آزموده می‌شود. ریدایرکت‌ها یکی‌یکی و با اعتبارسنجی دنبال می‌شوند.
methodGET، POST، HEAD و …
headersفهرستی از زوج‌های [نام, مقدار] — توکن احراز هویت، هدر Host دلخواه
bodyبدنهٔ درخواست برای بررسی‌های POST/PUT
interval_seconds60، 300، 600، 1200، 1800 یا 3600 (یک دقیقه تا یک ساعت)
timeout_msپیش‌فرض 10000، حداکثر 60000
expected_status_codesخالی یعنی «هر کد ۲xx». در غیر این صورت فهرست مجاز صریح.
body_matchزیررشته‌ای که باید در بدنهٔ پاسخ باشد
downtime_thresholdتعداد شکست پشت‌سرهم تا مانیتور قطع اعلام شود (پیش‌فرض 3)
recovery_thresholdتعداد موفقیت پشت‌سرهم تا دوباره وصل شود (پیش‌فرض 1)
environmentخطا و هشدارهای حاصل را برچسب می‌زند
trace_samplingپیوست‌کردن ترِیس به هر بررسی (وقتی مقصد سرویس ابزارگذاری‌شدهٔ خودتان است مفید است)
is_mutedبررسی ادامه دارد ولی هشدار فرستاده نمی‌شود

شکست یعنی چه​

یک بررسی وقتی شکست می‌خورد که خطای اتصال بدهد، تایم‌اوت شود، کد وضعیت غیرمنتظره برگرداند یا body_match در پاسخ نباشد. دلیل شکست به ازای هر بررسی ثبت می‌شود، پس در تاریخچه «اتصال رد شد» از «کد ۵۰۰ برگشت» و «شرط بدنه برقرار نبود» جدا دیده می‌شود.

پس از downtime_threshold شکست پشت‌سرهم، مانیتور قطع می‌شود: ارورا یک خطای قطعی برای پروژه باز می‌کند و رویداد هشدار uptime.down را فعال می‌کند. پس از recovery_threshold موفقیت، دوباره وصل می‌شود، خطا را می‌بندد و uptime.up را فعال می‌کند.

در پنل​

صفحهٔ آپ‌تایم مانیتورها را با وضعیت فعلی، درصد در دسترس بودن و بررسی‌های اخیر نشان می‌دهد. با باز کردن یکی، تاریخچهٔ بررسی‌ها (کد وضعیت، زمان پاسخ، دلیل شکست)، آمار و دکمهٔ بررسی همین حالا را دارید که بدون منتظرماندن برای زمان‌بندی، یک آزمون فوری اجرا می‌کند.

هشدارها​

رویدادهای uptime.down و uptime.up را در تنظیمات ← وب‌هوک‌ها به تلگرام، بله، Mattermost، ایمیل، پیامک یا وب‌هوک وصل کنید — نگاه کنید به هشدارها.

ارورا به چه چیزی دسترسی دارد​

بررسی‌ها از سرورهای خود ارورا اجرا می‌شوند، نه از داخل شبکهٔ شما؛ پس آدرس باید از اینترنت عمومی در دسترس باشد. آدرس‌های خصوصی/داخلی پذیرفته نمی‌شوند، حتی وقتی ریدایرکت به آن‌ها اشاره کند — اگر لازم است سرویس داخلی را بپایید، یک نقطهٔ سلامت عمومی جلوی آن بگذارید.

API​

GET /api/v1/projects/{project_id}/uptime-monitors
POST /api/v1/projects/{project_id}/uptime-monitors
GET /api/v1/projects/{project_id}/uptime-monitors/overview
GET /api/v1/projects/{project_id}/uptime-monitors/{id}
PATCH /api/v1/projects/{project_id}/uptime-monitors/{id}
DELETE /api/v1/projects/{project_id}/uptime-monitors/{id}
GET /api/v1/projects/{project_id}/uptime-monitors/{id}/checks
GET /api/v1/projects/{project_id}/uptime-monitors/{id}/stats
POST /api/v1/projects/{project_id}/uptime-monitors/{id}/check-now

صفحهٔ وضعیت عمومی​

صفحهٔ وضعیت، مجموعه‌ای از مانیتورهای آپ‌تایم را به صفحه‌ای تبدیل می‌کند که کاربران‌تان می‌خوانند: /status/<نشانی>. این صفحه به حساب کاربری نیاز ندارد، پس وقتی بقیهٔ محصول از کار می‌افتد هم کار می‌کند.

از مسیر آپ‌تایم ← صفحه‌های وضعیت یکی بسازید. هر صفحه چهار بخش دارد:

  • تنظیمات — عنوان، توضیح کوتاه و متن معرفی، نشانی صفحه، لوگو و پیوند پشتیبانی اختیاری، و یک اعلان بالای صفحه که تا پاک‌کردن سنجاق می‌ماند. صفحه تا زمانی که منتشرش نکنید پیش‌نویس است و 404 برمی‌گرداند.
  • سرویس‌ها — هرکدام یک مانیتور آپ‌تایم، با نامی که برای کاربر معنا دارد (Checkout API نه prod-eu-checkout-lb) و در صورت نیاز زیر یک گروه. وضعیت هر سرویس از بررسی‌های همان مانیتور خوانده می‌شود؛ چیزی برای هم‌گام‌کردن دستی وجود ندارد.
  • رویدادها — شرح یک قطعی، همراه با خط زمانی. ثبت به‌روزرسانی همان تغییر وضعیت رویداد است: نمی‌شود وضعیت را بدون توضیح عوض کرد. رویداد باز، صفحه را حتی با وجود سبزبودن همهٔ بررسی‌ها «افت کارایی» نشان می‌دهد.
  • نگهداری — بازهٔ برنامه‌ریزی‌شده به‌همراه متنی که کاربر باید بخواند. تا وقتی بازه در جریان است، سرویس‌های آن «در حال نگهداری» گزارش می‌شوند نه «قطع»؛ پس کار برنامه‌ریزی‌شده هیچ‌وقت شبیه قطعی دیده نمی‌شود.

هر سرویس برای هر روز از بازهٔ تاریخچهٔ صفحه (تا ۹۰ روز) یک ستون نشان می‌دهد که از همان تجمیع ساعتی صفحهٔ جزئیات مانیتور محاسبه می‌شود.

GET /api/v1/status/{slug} (عمومی، بدون احراز هویت)
GET /api/v1/organizations/{org_id}/status-pages
POST /api/v1/organizations/{org_id}/status-pages
GET /api/v1/organizations/{org_id}/status-pages/{id}
PATCH /api/v1/organizations/{org_id}/status-pages/{id}
DELETE /api/v1/organizations/{org_id}/status-pages/{id}
GET /api/v1/organizations/{org_id}/status-pages/{id}/components
POST /api/v1/organizations/{org_id}/status-pages/{id}/components
GET /api/v1/organizations/{org_id}/status-pages/{id}/incidents
POST /api/v1/organizations/{org_id}/status-pages/{id}/incidents
POST /api/v1/organizations/{org_id}/status-pages/{id}/incidents/{incident_id}/updates
GET /api/v1/organizations/{org_id}/status-pages/{id}/maintenances
POST /api/v1/organizations/{org_id}/status-pages/{id}/maintenances

ویرایش صفحهٔ وضعیت به دسترسی مدیریت سازمان نیاز دارد؛ خواندن صفحهٔ عمومی به هیچ دسترسی‌ای.

عیب‌یابی​

نشانهعلت / راه‌حل
خطای «آدرس خصوصی»آدرس به یک IP خصوصی/داخلی می‌رسد که بررسی‌ها اجازهٔ رسیدن به آن را ندارند
قطع و وصل پیاپیdowntime_threshold را بالا ببرید، یا برای نقطهٔ کند timeout_ms را زیاد کنید
هر بررسی 401/403 می‌گیردمقصد احراز هویت می‌خواهد — هدر Authorization اضافه کنید
در مرورگر باز می‌شود ولی اینجا شکست می‌خوردمقصد به کوکی یا هدر Host خاص نیاز دارد، یا IP بررسی‌کننده را بلوکه کرده
شرط بدنه همیشه رد می‌شودbody_match زیررشتهٔ ساده است نه عبارت باقاعده — و ممکن است بدنه HTML فشرده باشد نه JSONای که انتظار دارید