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:

  • Tail realtime
  • Lọc theo điều kiện ví dụ Bing, Googlebot
  • Lệnh tail nâng cao
  • Xem log thời gian thực có màu
  • Lọc theo mã lỗi
  • Script giám sát log liên tục
  • Gửi cảnh báo Telegram khi có tấn công / lỗi / bot lạ

I. XEM LOG THỜI GIAN THỰC BẰNG TAIL

Cú 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

II. LỌC THEO ĐIỀU KIỆN – VÍ DỤ TRUY CẬP TỪ BING

1. Lọc theo User-Agent Bingbot

tail -f access.log | grep -i "bingbot"

Lọc cả BingPreview:

tail -f access.log | grep -Ei "bingbot|bingpreview"

2. Lọc theo referrer đến từ Bing.com

tail -f access.log | grep -i "bing.com"

3. Lọc theo IP Bing (nhiều IP Microsoft Azure)

tail -f access.log | grep -E "13\.|40\.|52\."

III. SỬ DỤNG TAIL NÂNG CAO – BỘ LỆNH ĐẦY ĐỦ

1. Highligth màu cho log (rất dễ đọc)

apt install ccze
tail -f access.log | ccze

2. Loại trừ bot

tail -f access.log | grep -vi "bot"

3. Chỉ xem lỗi 404

tail -f access.log | grep " 404 "

4. Phân tích realtime bằng awk

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'

5. Theo dõi log khi file rotate

tail -F /var/log/nginx/access.log

-F = theo dõi file mới sau khi rotation.


IV. HỆ THỐNG CẢNH BÁO TELEGRAM REALTIME TỪ NGINX LOG

Hệ thống cảnh báo này giúp bạn:

  • Phát hiện lỗi 500 ngay lập tức
  • Báo lỗi 502/504 (Gateway)
  • Báo URL bị 404 nhiều
  • Cảnh báo tấn công wp-login
  • Phát hiện bot lạ không phải Google/Bing
  • Gửi alert trực tiếp qua Telegram

1. Tạo Telegram Bot

  1. Mở Telegram → tìm @BotFather
  2. Gõ: /newbot → tạo bot
  3. Lấy BOT_TOKEN
  4. Lấy CHAT_ID qua:
https://api.telegram.org/botBOT_TOKEN/getUpdates

V. SCRIPT GIÁM SÁT + GỬI CẢNH BÁO TELEGRAM (FULL VERSION)

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

VI. CHẠY SCRIPT TRONG NỀN

nohup /usr/local/bin/logwatch.sh > /dev/null 2>&1 &

Script chạy “ngầm”, không bị tắt khi logout SSH.


VII. KIỂM TRA HỆ THỐNG

curl -s -X POST "https://api.telegram.org/botYOUR_BOT_TOKEN/sendMessage" \
-d chat_id="YOUR_CHAT_ID" \
-d text="Test OK"

VIII. MỞ RỘNG (OPTIONAL)

Bạn có thể yêu cầu thêm:

  • Tự động block IP sau X lần vi phạm
  • Báo cáo log mỗi giờ → gửi vào Telegram
  • Phát hiện crawl bất thường theo tốc độ truy vấn
  • Log request time để tối ưu SEO
  • Theo dõi bot Google Realtime
  • Kết hợp fail2ban với logwatch

KẾT LUẬN

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ố