ساعت ۰۳:۱۴ alert می‌آید: HTTP 5xx rate > 2% for 5m. این runbook همان مسیری است که در production طی می‌کنیم — و همزمان نمونهٔ محتوای Markdown برای صفحهٔ مقاله.

#وضعیت اولیه

سیگنالمقدارآستانهوضعیت
Error rate4.8%2%🔴
p95 latency890ms500ms🟠
CPU app-0191%80%🔴
Disk /var72%85%🟢

یادآوری: قبل از restart دسته‌جمعی، حتماً snapshot از log و metric بگیر. حدس زدن بدون داده، زمان recovery را دو برابر می‌کند.

#چک‌لیست triage

  • incident channel در Slack/Teams باز شد
  • on-call secondary صدا زده شد
  • آخرین deploy شناسایی شد
  • rollback آماده است
  • اطلاع‌رسانی به stakeholders

#تشخیص سریع

#۱. لاگ اپلیکیشن

bash
journalctl -u myapp -S "15 min ago" --no-pager | tail -n 80

#۲. اتصال دیتابیس

bash
psql "$DATABASE_URL" -c "SELECT count(*) FROM pg_stat_activity WHERE state = 'active';"

#۳. health endpoint

bash
curl -fsS -o /dev/null -w "%{http_code} %{time_total}s\n" https://api.example.com/health

خروجی نمونه:

502 0.043s 502 0.039s 200 0.112s

#فرضیه‌ها

  1. Connection pool exhaustion — محتمل‌ترین علت با توجه به spike همزمان latency
  2. Migration ناقص — deploy ۴۵ دقیقه قبل
  3. Upstream timeout — کمتر محتمل؛ gateway سالم است

#کد مرتبط (pool config)

typescript
const pool = new Pool({
  max: Number(process.env.PG_POOL_MAX ?? 20),
  idleTimeoutMillis: 30_000,
  connectionTimeoutMillis: 5_000,
})

#اقدام اصلاحی

bash
# graceful reload — نه restart سخت
systemctl reload myapp

# اگر جواب نداد:
systemctl restart myapp
sleep 3
curl -fsS https://api.example.com/health

اگر error rate بعد از ۱۰ دقیقه زیر ۱% نرفت → rollback به tag قبلی:

bash
git checkout v2.4.1
./scripts/deploy.sh production

#ارتباطات

مخاطبکانالپیام
تیم فنی#inc-2026-0210وضعیت هر ۱۵ دقیقه
پشتیبانیticket queue«مشکل شناسایی شد، ETA ۳۰ دقیقه»
مدیریتemailفقط بعد از RCA اولیه

#timeline نمونه

  1. T+0 — alert
  2. T+7m — علت احتمالی: pool
  3. T+18m — reload + restart
  4. T+31m — error rate < 0.5%
  5. T+24h — postmortem draft

#postmortem (خلاصه)

Root cause: افزایش traffic بعد از campaign بدون scale افقی؛ pool ثابت ماند.

Action items:

  • autoscaling rule برای app tier
  • alert روی pg_stat_activity
  • load test قبل از campaign بعدی

اتاق مانیتورینگ — تصویر placeholder برای تست figure در مقالهٔ فنی
اتاق مانیتورینگ — تصویر placeholder برای تست figure در مقالهٔ فنی

#منابع

مشخصات فنی

stack
Prometheus + Grafana + systemd
effort
متوسط
severity
SEV-2