Tampilan
Runbook Operasional
Panduan tugas operasional umum & troubleshooting. Karena sistem melayani paid customer di production, lakukan perubahan dengan hati-hati dan utamakan observasi sebelum aksi.
Tugas umum
Cek status & log aplikasi
bash
pm2 status
pm2 logs backend-ate
tail -f /var/log/backend/application.logMenjalankan job secara manual
bash
# contoh: reset kuota
node job-runner job-reset-quota-mail
# contoh: recurring invoice
node job-runner invoices/recurring-invoice/job-recurring-invoiceLihat daftar lengkap di Background Jobs.
Inspeksi antrian job di DB
sql
-- job yang masih antri / error
SELECT id, "jobType", status, "createdAt" FROM "Jobs"
WHERE status IN ('on-queue','processing','error')
ORDER BY "createdAt" DESC;Refresh token Zoho manual
bash
node job-runner job-update-access-token-zohoTroubleshooting
Email notifikasi tidak terkirim
- Cek tabel
JobsuntukjobTypeterkait (mis.send-mail-invoice). - Bila
status='error', bacaparams3. - Bila
on-queuemenumpuk, worker tidak berjalan — cek apakah child process gagal di-spawn atau crontab sender tidak aktif. - Verifikasi
SMTP_HOST/USER/PASSWORDdan keberadaan template Pug diviews/mailing/.
Pembayaran tidak ter-update setelah bayar
- Cek apakah webhook Xendit masuk (
POST /api/v1/callback-payment) — lihat log akses. - Pastikan
x-callback-tokencocok denganCALLBACK_TOKEN_XENDIT. - Cek error di
controllers/callbackXendit.jsflow (Zoho markPaid, createInvoice). - Verifikasi status di Zoho & Xendit dashboard.
Relay account ter-suspend tak terduga
- Cek
TransCompanyEmailQuotaCount— apakahcurrentSendingCount≥sendingQuota(kuota 100%)? - Cek apakah ada tunggakan invoice (
paidStatus='overdue'). - Status Zimbra di
TransCompanyAccountRelays.status. - Reaktivasi terjadi otomatis saat pembayaran (callback Xendit) atau manual oleh admin.
Delivery log tidak muncul di dashboard
- Pastikan
ES_ENABLE=truedan ES reachable. - Cek ingest: apakah Logstash mem-POST ke
/api/v1/callback-raw-log, atau SparkPost webhook masuk. - Verifikasi index
dashboard-clean-logterisi. - Lihat Logging Pengiriman.
Kuota tidak ter-reset di awal periode
- Cek crontab
cron:jobs:reset-sending-quota(cron/job-reset-quota-mail.js). - Cek
quotaStartDate/quotaEndDatediTransCompanyEmailQuotaCount.
Hal yang harus dihindari
- Jangan deploy tanpa backup DB bila ada perubahan skema.
- Jangan mengubah
masterlangsung tanpa review (auto-deploy ke production). - Jangan menjalankan job destruktif (housekeeping/delete) di luar jam sepi tanpa konfirmasi.
- Jangan commit
.envatau kredensial.