Skip to main content

🔍 Giám Sát MongoDB

📋 Tạo Script Kiểm Tra

1. Tạo File Script

sudo nano /usr/local/bin/check_mongo.sh

2. Thêm Nội Dung Script

#!/bin/bash

# Định nghĩa biến
MONGO_HOST="localhost"
MONGO_PORT="27017"
LOG_FILE="/var/log/mongodb/monitoring.log"
TELEGRAM_SCRIPT="/usr/bin/telegram-send" # Đường dẫn tới script telegram-send

# Thực hiện kiểm tra trạng thái của MongoDB
mongo --eval "db.adminCommand('ping')"

# Lưu kết quả của lệnh trước đó
result=$?

# Ghi log và gửi thông báo
timestamp=$(date '+%Y-%m-%d %H:%M:%S')

if [ $result -eq 0 ]; then
echo "[$timestamp] MongoDB is running normally" >> $LOG_FILE
exit 0
else
echo "[$timestamp] MongoDB is DOWN!" >> $LOG_FILE

# Gửi cảnh báo qua Telegram
$TELEGRAM_SCRIPT "❌ MongoDB server $MONGO_HOST:$MONGO_PORT is DOWN at $timestamp"
exit 1
fi
tip

Script này sử dụng Telegram Bot để gửi cảnh báo. Đảm bảo bạn đã cài đặt và cấu hình Telegram Bot trước khi sử dụng.

3. Phân Quyền Thực Thi

sudo chmod +x /usr/local/bin/check_mongo.sh

🤖 Tự Động Hóa Kiểm Tra

1. Thêm Vào Crontab

sudo crontab -e

Thêm dòng sau để kiểm tra mỗi phút:

* * * * * /usr/local/bin/check_mongo.sh

2. Kiểm Tra Log

# Xem log giám sát
tail -f /var/log/mongodb/monitoring.log

# Xem log cron
tail -f /var/log/syslog | grep check_mongo

⚙️ Tùy Chỉnh Script

1. Thêm Kiểm Tra Chi Tiết

#!/bin/bash
# ... các biến môi trường ...

# Kiểm tra kết nối MongoDB
check_mongo() {
mongo --eval "db.adminCommand('ping')" &>/dev/null
return $?
}

# Kiểm tra tài nguyên
check_resources() {
# Kiểm tra disk space
DISK_USAGE=$(df -h | grep /data/db | awk '{print $5}' | cut -d'%' -f1)
if [ "$DISK_USAGE" -gt 85 ]; then
$TELEGRAM_SCRIPT "⚠️ MongoDB disk usage is high: ${DISK_USAGE}%"
fi

# Kiểm tra RAM
FREE_MEM=$(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2 }')
if [ "${FREE_MEM%.*}" -gt 90 ]; then
$TELEGRAM_SCRIPT "⚠️ System memory usage is high: $FREE_MEM"
fi
}

# Thực thi kiểm tra
main() {
if check_mongo; then
echo "[$timestamp] MongoDB is running normally" >> $LOG_FILE
check_resources
exit 0
else
echo "[$timestamp] MongoDB is DOWN!" >> $LOG_FILE
$TELEGRAM_SCRIPT "❌ MongoDB server $MONGO_HOST:$MONGO_PORT is DOWN!"
exit 1
fi
}

main

2. Tùy Chỉnh Thông Báo

# Định dạng thông báo
MESSAGE="
🔔 *MongoDB Alert*
Server: \`$HOSTNAME\`
Status: ${STATUS}
Time: \`$timestamp\`
"

# Gửi thông báo với markdown
$TELEGRAM_SCRIPT "$MESSAGE"

🔍 Xử Lý Sự Cố

1. Script Không Chạy

  • Kiểm tra quyền thực thi
  • Xác nhận đường dẫn trong crontab
  • Kiểm tra log system

2. Không Nhận Được Thông Báo

  • Kiểm tra cấu hình Telegram Bot
  • Xác nhận kết nối internet
  • Kiểm tra log của script
warning
  1. Đảm bảo bảo mật thông tin xác thực trong script
  2. Kiểm soát dung lượng file log
  3. Cân nhắc tần suất kiểm tra để tránh spam

📚 Tài Liệu Tham Khảo