ขั้นตอนการใช้งานโปรเจกต์ 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 นาที
Command | Schedule |
---|
/www/wwwroot/monitorbot/venv/bin/python /www/wwwroot/monitorbot/main.py >> /www/wwwroot/monitorbot/logs/cron.log 2>&1 | */10 * * * * |
เคลียร์ไฟล์สถานะทุกวันเช้า 6:00 น.
Command | Schedule |
---|
/bin/bash /www/wwwroot/monitorbot/clear_status.sh | 0 6 * * * |
ส่งรายงานสรุปรายวัน 6:30 น.
Command | Schedule |
---|
/www/wwwroot/monitorbot/venv/bin/python /www/wwwroot/monitorbot/daily_summary.py | 30 6 * * * |
7. ทดสอบรันสคริปต์ด้วยมือ
bashCopy codecd /www/wwwroot/monitorbot
source venv/bin/activate
python main.py
- ตรวจสอบว่าไม่มี error และได้รับแจ้งเตือน LINE เมื่อเจอปัญหา
8. ตรวจสอบ Log
bashCopy codetail -f /www/wwwroot/monitorbot/logs/monitor.log
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
/www/wwwroot/monitorbot/
│
├── status/ # เก็บไฟล์สถานะ (state files) ป้องกันแจ้งเตือนซ้ำ
│ ├── site.status
│ ├── system.status
│ └── login.status
│
├── logs/ # เก็บ log บันทึกเหตุการณ์ย้อนหลัง
│ ├── monitor.log
│ └── error.log # แยกเก็บ error log
│
├── venv/ # ไดเรกทอรี virtual environment (ไม่ควรอัพโหลด)
│
├── main.py # ไฟล์หลักรันระบบ
├── check_site.py # ตรวจสอบสถานะเว็บไซต์
├── check_system_load.py # ตรวจสอบ CPU/RAM
├── check_login_fail.py # ตรวจสอบ login ผิดพลาด
├── daily_summary.py # สคริปต์สรุปรายวัน (LINE)
│
├── .env # เก็บคอนฟิกความลับ (LINE_TOKEN, USER_ID, THRESHOLD)
├── requirements.txt # ไลบรารี Python ที่ต้องติดตั้ง
├── clear_status.sh # สคริปต์ล้างไฟล์สถานะ (Cron job)
└── README.md # อธิบายโปรเจกต์ (ถ้ามี)
- กไลบรารีเฉพาะโปรเจกต์นี้
- เหตุผลที่ต้องมี:
เพื่อแยกการติดตั้งไลบรารีไม่ให้ไปกระทบกับระบบ 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 | ไลบรารีที่ต้องติดตั้ง |