การดูแลระบบ › ตรวจสุขภาพระบบ
เริ่มต้น
เนื้อหา
Plugins
การดูแลระบบ
การ Deploy
สูตรสำเร็จ
ตรวจสุขภาพระบบ
สิ่งที่จะได้เรียนรู้
กล่อง ต้องดูแล และ ระบบ บนแดชบอร์ดบอกอะไร admin บ้าง และวิธีแก้แต่ละปัญหาที่แจ้งมา
อ่านก่อนหน้านี้: การ deploy


admin จะเห็นสองกล่องบนแดชบอร์ดที่ editor ไม่เห็น:
- ต้องดูแล อยู่บนสุด แสดงเฉพาะเมื่อมีปัญหา แต่ละบรรทัดลิงก์มายังหัวข้อด้านล่าง
- ระบบ ท้ายคอลัมน์ข้าง: เวอร์ชัน Easy CMS, ฐานข้อมูล, ที่เก็บไฟล์, อีเมล, plugin พร้อมเวอร์ชัน และ ชนิด field จากแพ็กเกจ ใช้ประกอบตอนแจ้งปัญหาหรือขอความช่วยเหลือ
ทั้งสองมาจาก GET <api>/admin/status เฉพาะ admin (API key ใช้ไม่ได้) Easy CMS ไม่เช็กเวอร์ชันใหม่ออกไปข้างนอกเอง
webhook ส่งไม่สำเร็จ
แสดงเมื่อ มี webhook ที่ส่งไม่สำเร็จจนเลิกลองแล้วใน 7 วันล่าสุด คือลองซ้ำครบทุกครั้งตลอดราวหนึ่งวัน แล้วยังได้ error กล่องจะบอกจำนวน และที่อยู่ที่ล้มบ่อยที่สุด
ตรวจ:
- service ปลายทางทำงานอยู่และตอบ
2xxerror ครั้งล่าสุดถูกเก็บไว้กับรายการนั้น - 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 และอีเมลซ้ำด้วย
งานที่ไม่สำเร็จ
แสดงเมื่อ การรันล่าสุดของงานเบื้องหลังใน config (หรือของ plugin) ไม่สำเร็จ
วิธีแก้: เปิด ตั้งค่า → งานเบื้องหลัง เพื่อดู error แก้ต้นเหตุ (เช่น บริการที่ล่ม หรือการตั้งค่า) แล้วกด รันงานที่ถึงเวลาเดี๋ยวนี้ หรือรอรอบถัดไป คำเตือนจะหายเมื่อรันสำเร็จ
งานที่หยุดไว้
แสดงเมื่อ แอดมินหยุดงานไว้ในหน้า ตั้งค่า → งานเบื้องหลัง งานจะไม่รันจนกว่าจะกดทำต่อ
วิธีแก้: กด ทำต่อ ในหน้างานเบื้องหลังเมื่อควรกลับมารันแล้ว audit log บอกว่าใครเป็นคนหยุด
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 อยู่แล้ว
เข้าสู่ระบบด้วยบัญชีฉุกเฉิน
แสดงเมื่อ มีบัญชีฉุกเฉิน (auth.password: { breakGlass }) เข้าสู่ระบบด้วยรหัสผ่านใน 24 ชั่วโมงที่ผ่านมา บัญชีนี้ข้าม single sign-on
และ MFA ให้ถามคนที่ใช้ว่าตั้งใจใช้จริง (audit log บอกเวลาและที่มา) แล้วเปลี่ยนรหัสผ่าน
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 แสดงชื่อและเวอร์ชันของตัวเองที่นี่ได้อย่างไร