این راهنما از مشاهدههای کمخطر شروع میکند و بعد به تغییر state میرسد. پیش از restart، resize یا deploy دوباره، پیام و زمان خطا را ثبت کنید تا evidence از بین نرود.
اگر هنوز نمیدانید کدام signal را باید بخوانید، ابتدا راهنمای مانیتورینگ، لاگ و Analytics برنامه را ببینید.
مسیر سریع تشخیص
- پروژه و resource هدف را تأیید کنید.
- وضعیت فعلی و آخرین eventها را بخوانید.
- لاگ محدود و مرتبط با زمان خطا بگیرید.
- تنظیم ورودی را با قرارداد راهنما مقایسه کنید.
- کوچکترین اقدام اصلاحی را انجام دهید.
- همان مشاهده اولیه را تکرار و نتیجه را ثبت کنید.
پروژه یا resource پیدا نمیشود
abrun project current
abrun project list
abrun app list
abrun db listنام، slug یا ID را با پروژه انتخابشده مقایسه کنید. در CI، پروژه را صریح با --project <project> بدهید و مطمئن شوید ABRUN_TOKEN به همان پروژه دسترسی دارد.
deploy کامل نمیشود
وضعیت App و deploymentها را بدون ایجاد deploy جدید بخوانید:
abrun app inspect <app>
abrun app deployment list <app>
abrun app logs <app> --tail 100- خطای build:
Dockerfile، مسیر build، فایلهای کپیشده و پیکربندی build را بررسی کنید. - خطای start: برنامه باید روی
0.0.0.0و port تنظیمشده گوش دهد. - rollout ناسالم: لاگ نسخه فعلی و قبلی را با مراحل استقرار مقایسه کنید.
- deploy پشت سر هم: ابتدا نتیجه تلاش فعلی را ثبت کنید؛ retry مداوم علت اصلی را پنهان میکند.
App اجرا میشود اما پاسخ نمیدهد
abrun app inspect <app>
abrun app logs <app> --since 30m --tail 200port، bind address، متغیرهای محیطی و dependencyهای خارجی را بررسی کنید. فعالبودن workload بهتنهایی سلامت endpoint برنامه را ثابت نمیکند؛ request واقعی به health endpoint بفرستید.
اگر env تغییر کرده است، فهرست keyها را کنترل کنید و در صورت نیاز یک restart برنامهریزیشده انجام دهید. مقدار secret را داخل ticket یا خروجی تشخیص قرار ندهید.
اتصال دیتابیس خطا دارد
ابتدا خود resource را بررسی کنید:
abrun db inspect <database>
abrun db events <database> --tail 20
abrun db logs <database> --tail 100سپس credential را دوباره بخوانید؛ نمایش عادی password را پنهان میکند:
abrun db credentials <database>connection refused: وضعیت دیتابیس، host و port را بررسی کنید؛ tunnel محلی باید باز بماند.authentication failedیاaccess denied: username، database name و password ذخیرهشده را بررسی کنید.- timeout: public access، مقصد شبکه و پروژه resourceها را بررسی کنید.
- App متصل نمیشود ولی client محلی وصل است: env برنامه و encoding کاراکترهای connection URL را بررسی کنید.
- خطای extension: extensionهای فعلی PostgreSQL و نیازمندی migration یا backup را مقایسه کنید.
جزئیات و نمونههای client در اتصال دیتابیس آمده است.
backup آماده نمیشود
abrun db backup list <database>
abrun db backup inspect <database> <backup-id>
abrun db events <database> --tail 20status و errorMessage را ثبت کنید. تا وقتی درخواست قبلی queued یا running است، backupهای تکراری نسازید. سیاست plan، سلامت دیتابیس و فضای زمانی retention را با راهنمای backup بررسی کنید.
دامنه یا TLS آماده نمیشود
DNS recordها را دقیقاً با مقادیر Console مقایسه کنید. مالکیت TXT، routing CNAME و TLS سه signal جدا هستند؛ موفقشدن یکی به معنی تکمیل دیگری نیست.
- TXT اشتباه: مقدار، hostname و باقیماندن record قدیمی را بررسی کنید.
- CNAME اشتباه: target و proxy/CDN میانی را بررسی کنید.
- TLS pending: ابتدا ownership و routing باید verified باشند.
مسیر کامل در دامنه اختصاصی و TLS توضیح داده شده است.
دیسک mount نمیشود
abrun app disk list <app>
abrun app disk inspect <app> <disk>
abrun app inspect <app>mount path باید absolute، یکتا و خارج از مسیرهای حساس image باشد. attach و mount را یکی فرض نکنید. برای تغییر اندازه فقط expand پشتیبانی میشود؛ راهنمای دیسک پایدار را ببینید.
پروژه frozen یا عملیات رد شده است
وضعیت پروژه و wallet را در Console بررسی کنید. کمبود موجودی میتواند پروژه را freeze و Appها و دیتابیسهای در حال اجرا را متوقف کند. پس از رفع علت، reconciliation منابع asynchronous است؛ وضعیت persisted هر resource را دوباره بخوانید.
چه اطلاعاتی برای پشتیبانی بفرستید
در درخواست پشتیبانی این موارد را قرار دهید:
- project slug و نوع resource
- نام یا ID resource
- command یا action انجامشده، بدون token و password
- زمان تقریبی خطا همراه timezone
- status، phase، event ID یا backup ID مرتبط
- پیام خطای sanitizeشده و چند خط مرتبط از log
- نتیجهای که انتظار داشتید و نتیجه واقعی
هرگز password دیتابیس، ABRUN_TOKEN، session cookie یا connection URL دارای secret را ارسال نکنید.