Skip to content

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

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

กล่อง ต้องดูแล และ ระบบ บนแดชบอร์ดบอกอะไร 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 jobs:run งานที่ค้างจะทำในการเรียกครั้งถัดไป รวมถึงการส่ง 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 แสดงชื่อและเวอร์ชันของตัวเองที่นี่ได้อย่างไร

เผยแพร่ภายใต้สัญญาอนุญาต MIT