การดูแลระบบ › ตรวจสุขภาพระบบ
เอกสาร/การดูแลระบบ/ตรวจสุขภาพระบบ

ตรวจสุขภาพระบบ

สิ่งที่จะได้เรียนรู้

กล่อง ต้องดูแล และ ระบบ บนแดชบอร์ดบอกอะไร admin บ้าง และวิธีแก้แต่ละปัญหาที่แจ้งมา

อ่านก่อนหน้านี้: การ deploy

แดชบอร์ด มีกล่องระบบอยู่ท้ายคอลัมน์ข้างแดชบอร์ด มีกล่องระบบอยู่ท้ายคอลัมน์ข้าง

admin จะเห็นสองกล่องบนแดชบอร์ดที่ editor ไม่เห็น:

  • ต้องดูแล อยู่บนสุด แสดงเฉพาะเมื่อมีปัญหา แต่ละบรรทัดลิงก์มายังหัวข้อด้านล่าง
  • ระบบ ท้ายคอลัมน์ข้าง: เวอร์ชัน Easy CMS, ฐานข้อมูล, ที่เก็บไฟล์, อีเมล, plugin พร้อมเวอร์ชัน และ ชนิด field จากแพ็กเกจ ใช้ประกอบตอนแจ้งปัญหาหรือขอความช่วยเหลือ

ทั้งสองมาจาก GET <api>/admin/status เฉพาะ admin (API key ใช้ไม่ได้) Easy CMS ไม่เช็กเวอร์ชันใหม่ออกไปข้างนอกเอง

webhook ส่งไม่สำเร็จ

แสดงเมื่อ มี webhook ที่ส่งไม่สำเร็จจนเลิกลองแล้วใน 7 วันล่าสุด คือลองซ้ำครบทุกครั้งตลอดราวหนึ่งวัน แล้วยังได้ error กล่องจะบอกจำนวน และที่อยู่ที่ล้มบ่อยที่สุด

ตรวจ:

  • service ปลายทางทำงานอยู่และตอบ 2xx error ครั้งล่าสุดถูกเก็บไว้กับรายการนั้น
  • URL ใน webhooks ยังถูกต้อง (build hook ที่ deploy ใหม่มักได้ที่อยู่ใหม่)
  • ปลายทางตรวจลายเซ็นด้วย secret เดียวกัน

เมื่อปลายทางกลับมาทำงาน เปิด ตั้งค่า → การส่ง (แถบเตือนลิงก์มาที่นี่): แต่ละรายการบอกว่าเปลี่ยนอะไร ส่งไปที่ไหน error ล่าสุด และ body ที่ส่ง พร้อมปุ่ม ส่งซ้ำ (ลองทันทีหนึ่งครั้ง ด้วย delivery id เดิมและลายเซ็นใหม่) และ ลบ ทีละรายการหรือทั้งหมด รายการที่ล้มจะถูกลบอัตโนมัติเมื่อเกิน 30 วัน

อีเมลยังส่งไม่ออก

แสดงเมื่อ มีอีเมลรอในคิวเกิน 1 ชั่วโมง หรือส่งไม่สำเร็จจนเลิกลองแล้วใน 7 วันล่าสุด ดูคิวและการส่งซ้ำ

ตรวจ การตั้งค่าด้วยปุ่ม ตรวจการเชื่อมต่อ และ ส่งอีเมลทดสอบ ที่ตั้งค่า → อีเมล และอีเมลที่ล้มใน ตั้งค่า → การส่ง → อีเมล (ผู้รับ หัวเรื่อง และ error ไม่แสดงเนื้อความ) แล้วดู:

  • ค่า SMTP (SMTP_HOST, SMTP_USER, SMTP_PASSWORD) และ server ยอมให้ส่งจากผู้ส่งนี้ error ถูกบันทึกใน log พร้อมคำตอบของ server
  • บน serverless ต้องมีบางอย่างเรียกคิว: cron ที่เรียก <api>/jobs/run (เหมือนการเผยแพร่ตามกำหนดเวลาล่าช้า)

จากนั้นกด ส่งซ้ำ ในหน้านั้น อีเมลที่ล้มจะถูกลบอัตโนมัติเมื่อเกิน 30 วัน

การเผยแพร่ตามกำหนดเวลาล่าช้า

แสดงเมื่อ การเผยแพร่หรือยกเลิกเผยแพร่ที่กำหนดเวลาไว้ช้ากว่ากำหนดเกิน 10 นาที แปลว่าไม่มีอะไรรันงานเหล่านี้

วิธีแก้: server ที่ทำงานต่อเนื่อง (Nuxt, easy-cms serve, Next.js ที่โฮสต์เอง) รันทุกนาทีอยู่แล้ว บน serverless ให้ cron เรียก <api>/jobs/run ทุกนาทีพร้อม Authorization: Bearer $CRON_SECRET หรือให้ cron รัน npx easy-cms run-scheduled งานที่ค้างจะทำในการเรียกครั้งถัดไป รวมถึงการส่ง webhook และอีเมลซ้ำด้วย

Backups

แสดงเมื่อ ตั้ง backups.every ไว้แล้ว backup ตามรอบครั้งล่าสุดไม่สำเร็จ หรือไม่มีชุดที่สำเร็จนานเกินสองรอบ (สองวัน หรือสองสัปดาห์) ดู error ได้ที่ ตั้งค่า → Backups สาเหตุที่พบบ่อยคือดิสก์เต็ม ที่เก็บไม่รับไฟล์ ใช้ Postgres แต่ไม่ได้ตั้ง backups.sqlite หรือไม่มีอะไร รันงานตามรอบ (เหมือนการเผยแพร่ตามกำหนดเวลาล่าช้า) จากนั้นกด Backup ตอนนี้ เพื่อตรวจ ดู Backup

login ไม่สำเร็จ

แสดงเมื่อ เปิด audit log และมีการเข้าสู่ระบบไม่สำเร็จในชั่วโมงที่ผ่านมามากกว่า audit.failedLogins (ค่าเริ่มต้น 20) อาจมีคนพยายามเดารหัสผ่าน เปิด audit log ที่กรองเฉพาะการเข้าสู่ระบบเพื่อดูอีเมลและ IP address แล้วปิดใช้งาน บัญชีที่ถูกโจมตี หรือบล็อก address ที่ผู้ให้บริการ hosting ส่วนแต่ละอีเมลและ IP ก็ถูกล็อกหลังผิดครบ auth.maxLoginAttempts อยู่แล้ว

Audit log

แสดงเมื่อ บันทึก audit log บางรายการไม่สำเร็จ (การแก้ไขเกิดขึ้นแล้ว ดูสาเหตุใน log ของ server ซึ่งมักเป็นที่ฐานข้อมูล) หรือเมื่อการตรวจความถูกต้องครั้งล่าสุดพบรายการที่ถูกแก้ในฐานข้อมูล ดู การตรวจการแก้ไข

ไม่มีอีเมล

แสดงเมื่อ config ไม่มี email ทำให้ไม่มีลิงก์ลืมรหัสผ่าน คำเชิญ และอีเมลแจ้งเตือนจากฟอร์ม ตั้งค่าได้ที่ อีเมล

ไม่มี serverURL

แสดงเมื่อ เว็บทำงานบน production (NODE_ENV=production) โดยไม่มี serverURL ลิงก์ในอีเมล (ลืมรหัสผ่าน คำเชิญ) ต้องใช้ที่อยู่สาธารณะของเว็บ และบน production Easy CMS ไม่เชื่อที่อยู่ที่มากับ request ให้ตั้ง serverURL: 'https://example.com' ใน config

ขั้นต่อไป

  • การ deploy: รายการตรวจก่อนเปิดใช้งานจริง
  • Plugin: plugin แสดงชื่อและเวอร์ชันของตัวเองที่นี่ได้อย่างไร