Trong quản trị server Linux, đặc biệt với Nginx/Apache, việc theo dõi log thời gian thực là cực kỳ quan trọng để phát hiện sớm lỗi, tấn công, bot lạ hoặc traffic bất thường. Công cụ mạnh nhất và đơn giản nhất chính là: tail.
Bài viết này tổng hợp đầy đủ, kèm hướng dẫn tạo hệ thống cảnh báo Telegram realtime theo đúng các yêu cầu:
TAILCú pháp phổ biến nhất:
tail -f /var/log/nginx/access.log
-f → hiển thị realtime khi có dòng mới.
Xem X dòng cuối + realtime:
tail -n 200 -f /var/log/nginx/access.log
Xem log nhiều file cùng lúc:
tail -f /var/log/nginx/*.log
tail -f access.log | grep -i "bingbot"
Lọc cả BingPreview:
tail -f access.log | grep -Ei "bingbot|bingpreview"
tail -f access.log | grep -i "bing.com"
tail -f access.log | grep -E "13\.|40\.|52\."
TAIL NÂNG CAO – BỘ LỆNH ĐẦY ĐỦapt install ccze tail -f access.log | ccze
tail -f access.log | grep -vi "bot"
tail -f access.log | grep " 404 "
Chỉ xem request > 1 giây:
tail -f access.log | awk '$NF > 1'
Chỉ xem lỗi 500:
tail -f access.log | awk '$9 == 500'
tail -F /var/log/nginx/access.log
-F = theo dõi file mới sau khi rotation.
Hệ thống cảnh báo này giúp bạn:
/newbot → tạo bothttps://api.telegram.org/botBOT_TOKEN/getUpdates
Tạo file:
nano /usr/local/bin/logwatch.sh
Paste:
#!/bin/bash
LOG_FILE="/var/log/nginx/access.log"
BOT_TOKEN="YOUR_BOT_TOKEN"
CHAT_ID="YOUR_CHAT_ID"
ALERT_URL="https://api.telegram.org/bot$BOT_TOKEN/sendMessage"
send_alert() {
curl -s -X POST $ALERT_URL \
-d chat_id="$CHAT_ID" \
-d text="$1"
}
tail -F "$LOG_FILE" | while read line; do
# Cảnh báo lỗi 500
if echo "$line" | grep -q " 500 "; then
send_alert "⚠️ *500 ERROR Detected*\n$line"
fi
# Cảnh báo lỗi 502/504
if echo "$line" | grep -E " 502 | 504 " > /dev/null; then
send_alert "⚠️ *502/504 Gateway Error*\n$line"
fi
# Cảnh báo lỗi 404
if echo "$line" | grep -q " 404 "; then
URL=$(echo "$line" | awk '{print $7}')
send_alert "🔍 *404 Not Found*\nURL: $URL"
fi
# Tấn công wp-login
if echo "$line" | grep -q "wp-login.php"; then
IP=$(echo "$line" | awk '{print $1}')
send_alert "🛡 *Login Attack Detected*\nIP: $IP"
fi
# Bot lạ
if echo "$line" | grep -q "bot"; then
if ! echo "$line" | grep -Ei "googlebot|bingbot|duckduckbot|yandex" > /dev/null; then
UA=$(echo "$line" | cut -d\" -f6)
IP=$(echo "$line" | awk '{print $1}')
send_alert "🤖 *Unknown Bot*\nIP: $IP\nUA: $UA"
fi
fi
done
Cấp quyền chạy:
chmod +x /usr/local/bin/logwatch.sh
nohup /usr/local/bin/logwatch.sh > /dev/null 2>&1 &
Script chạy “ngầm”, không bị tắt khi logout SSH.
curl -s -X POST "https://api.telegram.org/botYOUR_BOT_TOKEN/sendMessage" \ -d chat_id="YOUR_CHAT_ID" \ -d text="Test OK"
Bạn có thể yêu cầu thêm:
Bài viết đã trình bày đầy đủ:
✅ Cách dùng tail từ cơ bản → nâng cao
✅ Lọc log theo điều kiện (Bingbot, bot lạ…)
✅ Bộ lệnh tail nâng cao
✅ Thêm màu cho log
✅ Script giám sát log realtime
✅ Gửi cảnh báo Telegram khi có sự cố