โครงสร้างโปรเจกต์ monitorbot ให้สมบูรณ์และเพิ่มเรื่องความปลอดภัย

ขั้นตอนการใช้งานโปรเจกต์ MonitorBot บน aaPanel แบบละเอียด ตั้งแต่ติดตั้ง จัดการ Python, ตั้งค่าไฟล์ และตั้ง Cron Job เพื่อรันตรวจสอบและแจ้งเตือนอัตโนมัติ


1. ติดตั้ง Python และ Virtual Environment บน aaPanel

  • เข้าไปที่ App Store ใน aaPanel
  • ค้นหาและติดตั้ง Python (เวอร์ชัน 3.x)
  • ถ้าไม่มี ให้ติดตั้ง Python ผ่าน SSH ด้วยคำสั่ง (Ubuntu/Debian):
bashCopy codesudo apt update
sudo apt install python3 python3-venv python3-pip -y

2. สร้างโฟลเดอร์โปรเจกต์และเตรียมไฟล์

  • ไปที่ /www/wwwroot/ หรือโฟลเดอร์เว็บไซต์ที่ต้องการ
  • สร้างโฟลเดอร์ monitorbot:
bashCopy codemkdir /www/wwwroot/monitorbot
cd /www/wwwroot/monitorbot
  • อัพโหลดไฟล์โปรเจกต์ทั้งหมด เช่น
    main.py, check_site.py, check_system_load.py, check_login_fail.py,
    daily_summary.py, clear_status.sh, .env, requirements.txt

3. สร้าง Virtual Environment (venv)

bashCopy codepython3 -m venv venv
source venv/bin/activate
  • จากนั้นติดตั้งไลบรารีใน requirements.txt:
bashCopy codepip install -r requirements.txt

4. ตั้งค่าไฟล์ .env

  • แก้ไขไฟล์ .env โดยเพิ่มค่า:
iniCopy codeLINE_TOKEN=ใส่Channel Access Token ของ LINE
USER_ID=ใส่User ID ที่จะรับข้อความแจ้งเตือน
SITE_URL=https://yourwebsite.com
CPU_THRESHOLD=80
RAM_THRESHOLD=80
LOG_FILE=/var/log/auth.log   # สำหรับ Linux เช็ค login ผิดพลาด
  • ตั้ง permission ให้ปลอดภัย:
bashCopy codechmod 600 /www/wwwroot/monitorbot/.env

5. สร้างโฟลเดอร์สำหรับสถานะและบันทึก log

bashCopy codemkdir status logs
chmod 700 status logs
touch logs/monitor.log logs/error.log
chmod 600 logs/monitor.log logs/error.log

6. ตั้งค่า Cron Job บน aaPanel

  • เข้าเมนู Cron Jobs
  • เพิ่ม Cron Job ดังนี้

รันตรวจสอบระบบทุก 10 นาที

CommandSchedule
/www/wwwroot/monitorbot/venv/bin/python /www/wwwroot/monitorbot/main.py >> /www/wwwroot/monitorbot/logs/cron.log 2>&1*/10 * * * *

เคลียร์ไฟล์สถานะทุกวันเช้า 6:00 น.

CommandSchedule
/bin/bash /www/wwwroot/monitorbot/clear_status.sh0 6 * * *

ส่งรายงานสรุปรายวัน 6:30 น.

CommandSchedule
/www/wwwroot/monitorbot/venv/bin/python /www/wwwroot/monitorbot/daily_summary.py30 6 * * *

7. ทดสอบรันสคริปต์ด้วยมือ

  • เข้าโฟลเดอร์โปรเจกต์
bashCopy codecd /www/wwwroot/monitorbot
source venv/bin/activate
python main.py
  • ตรวจสอบว่าไม่มี error และได้รับแจ้งเตือน LINE เมื่อเจอปัญหา

8. ตรวจสอบ Log

  • ดู log การทำงานปกติ
bashCopy codetail -f /www/wwwroot/monitorbot/logs/monitor.log
  • ดู log error
bashCopy codetail -f /www/wwwroot/monitorbot/logs/error.log

หมายเหตุเพิ่มเติม

  • อย่าลืมตั้งค่าไฟล์และโฟลเดอร์ permission ให้เหมาะสม
  • ตั้งค่า LINE Bot ให้เปิด Messaging API และได้ Channel Access Token ถูกต้อง
  • ทดสอบ webhook, token, user ID ให้พร้อมก่อนใช้งานจริง

โปรเจกต์นี้เป็นระบบตรวจสอบสถานะเว็บไซต์, ระบบโหลด CPU/RAM, และตรวจสอบ login ผิดพลาด พร้อมแจ้งเตือนผ่าน LINE Messaging API

  • กไลบรารีเฉพาะโปรเจกต์นี้
  • เหตุผลที่ต้องมี:
    เพื่อแยกการติดตั้งไลบรารีไม่ให้ไปกระทบกับระบบ Python หลัก หรือโปรเจกต์อื่น
  • หมายเหตุ:
    ไม่ควรแชร์หรืออัพโหลดโฟลเดอร์นี้ขึ้น GitHub หรือเซิร์ฟเวอร์สาธารณะ

4. ไฟล์ main.py

  • หน้าที่:
    เป็นไฟล์หลักที่รันโปรแกรม เรียกใช้ฟังก์ชันตรวจสอบแต่ละส่วน เช่น ตรวจสอบเว็บ, ตรวจสอบโหลดระบบ, ตรวจสอบ login ผิดพลาด
  • ฟังก์ชันสำคัญ:
    • โหลดตัวแปรจาก .env
    • จัดการ logging
    • รวมการเรียกฟังก์ชันตรวจสอบย่อยอย่างเป็นระบบ
    • จัดการ exception และบันทึก error

5. ไฟล์ check_site.py

  • หน้าที่:
    ตรวจสอบสถานะ HTTP ของเว็บไซต์เป้าหมาย (เช่น รัน curl เช็ค HTTP code)
  • ผลลัพธ์:
    บันทึกสถานะเว็บไซต์ลงไฟล์ status/site.status และแจ้งเตือนผ่าน LINE เมื่อเว็บล่ม

6. ไฟล์ check_system_load.py

  • หน้าที่:
    ตรวจสอบโหลดระบบ เช่น CPU และ RAM ใช้ไลบรารี psutil
  • ผลลัพธ์:
    บันทึกสถานะระบบลง status/system.status และแจ้งเตือนหากโหลดเกินเกณฑ์ที่ตั้งไว้

7. ไฟล์ check_login_fail.py

  • หน้าที่:
    ตรวจสอบบันทึกล็อกอินผิดพลาดจากไฟล์ระบบ เช่น /var/log/auth.log
  • ผลลัพธ์:
    นับจำนวน login ผิดพลาดติดต่อกัน และแจ้งเตือนผ่าน LINE เมื่อเกิดความผิดพลาดต่อเนื่องเกินจำนวนที่กำหนด (เช่น 5 ครั้ง)
  • สถานะ:
    บันทึกสถานะลง status/login.status เพื่อป้องกันแจ้งเตือนซ้ำ

8. ไฟล์ daily_summary.py

  • หน้าที่:
    สรุปสถานะของระบบประจำวันโดยอ่านไฟล์สถานะ .status ทั้งหมด
  • ผลลัพธ์:
    ส่งรายงานสรุปสถานะระบบผ่าน LINE Messaging API ทุกวันช่วงเวลาที่ตั้งไว้ (เช่น เช้า 6:30 น.)

9. ไฟล์ clear_status.sh

  • หน้าที่:
    สคริปต์ Shell สำหรับเคลียร์ไฟล์สถานะ .status ทุกวัน เพื่อรีเซ็ตสถานะก่อนเริ่มตรวจสอบใหม่
  • ใช้งานร่วมกับ:
    ตั้ง Cron Job ให้รันสคริปต์นี้ทุกวันเช้า

10. ไฟล์ .env

  • หน้าที่:
    เก็บตัวแปรคอนฟิกความลับ เช่น
    • LINE_TOKEN — Token สำหรับเชื่อมต่อ LINE Messaging API
    • USER_ID — User ID ของผู้รับข้อความ
    • ตัวแปรอื่น ๆ เช่น Threshold ของ CPU, RAM, URL เว็บไซต์ที่ตรวจสอบ
  • ข้อควรระวัง:
    • อย่าแชร์ไฟล์นี้ในที่สาธารณะ
    • ตั้ง permission ให้เข้าถึงได้เฉพาะเจ้าของ (เช่น chmod 600)

11. ไฟล์ requirements.txt

  • หน้าที่:
    รายการไลบรารี Python ที่โปรเจกต์ต้องติดตั้ง เช่น
    • requests
    • python-dotenv
    • psutil

สรุป

ชื่อไฟล์/โฟลเดอร์หน้าที่หลัก
status/เก็บสถานะล่าสุดของแต่ละระบบ (ป้องกันแจ้งเตือนซ้ำ)
logs/เก็บบันทึกเหตุการณ์และข้อผิดพลาด
venv/แยกสภาพแวดล้อม Python และไลบรารี
main.pyรันระบบ ตรวจสอบทั้งหมดและจัดการ log
check_site.pyตรวจสอบสถานะเว็บไซต์
check_system_load.pyตรวจสอบโหลด CPU/RAM
check_login_fail.pyตรวจสอบล็อกอินผิดพลาดและแจ้งเตือน
daily_summary.pyส่งรายงานสรุปรายวันทาง LINE
clear_status.shสคริปต์ล้างไฟล์สถานะทุกวัน
.envเก็บข้อมูลคอนฟิกและความลับ
requirements.txtไลบรารีที่ต้องติดตั้ง

Leave a Reply

Your email address will not be published. Required fields are marked *

Translate »