No menu items!
No menu items!
More

    Giám sát NGINX theo thời gian thực với Fluent Bit và OpenObserve

    1. 📌 Tại sao cần giám sát NGINX?

    Khi một hệ thống sử dụng NGINX làm web server hoặc proxy server, việc giám sát thời gian thực giúp bạn:

    • Tối ưu hiệu năng: Kiểm soát thời gian phản hồi và tình trạng server.
    • Phát hiện lỗi sớm: Xác định lỗi HTTP, truy cập bất thường, hay băng thông vượt mức.
    • Theo dõi hành vi người dùng: Phân tích logs để hiểu người dùng tương tác ra sao.
    • Quy hoạch tài nguyên: Đánh giá tải hệ thống để mở rộng hoặc phân phối lại tài nguyên.

    2. 🔍 Các chỉ số cần giám sát

    📊 Chỉ số🔎 Ý nghĩa
    Request RateSố lượng request mỗi giây – phản ánh tải truy cập
    Response TimeThời gian phản hồi – đánh giá hiệu năng người dùng cảm nhận
    Error RateTỷ lệ lỗi 4xx, 5xx – giúp phát hiện sớm vấn đề
    Bandwidth UsageDung lượng truyền tải – hỗ trợ quy hoạch mạng
    Active ConnectionsSố kết nối đang mở – đo sức chịu tải của server

    3. 🧰 Kiến trúc hệ thống giám sát

    graph LR
        NGINX -->|Ghi log JSON| LogFile[/access.log/]
        LogFile --> FluentBit
        FluentBit -->|Gửi log HTTP| OpenObserve
        User -->|Query log| OpenObserve
    

    4. 🛠️ Các bước triển khai

    Bước 1: Cài đặt NGINX trên máy local (macOS)

    brew install nginx
    sudo nginx
    • Truy cập http://localhost:8080 để kiểm tra hoạt động.

    Bước 2: Cấu hình NGINX ghi log dạng JSON

    Chỉnh sửa file /opt/homebrew/etc/nginx/nginx.conf:

    http {
      log_format json_combined escape=json '{"@timestamp":"$time_iso8601",'
        '"remote_addr":"$remote_addr",'
        '"request":"$request",'
        '"status":"$status",'
        '"body_bytes_sent":"$body_bytes_sent",'
        '"http_referer":"$http_referer",'
        '"http_user_agent":"$http_user_agent"}';
    
      access_log /opt/homebrew/var/log/nginx/access.log json_combined;
    }

    Lợi ích: Log JSON dễ phân tích hơn, không cần viết regex phức tạp khi gửi lên OpenObserve.

    Bước 3: Cài Fluent Bit và cấu hình đọc log

    brew install fluent-bit

    Tạo file nginx-fluent-bit.conf:

    [INPUT]
        Name tail
        Path /opt/homebrew/var/log/nginx/access.log
        Parser json
        Tag nginx-access
        DB /var/log/fluent-bit-nginx-access.db
        Mem_Buf_Limit 5MB
        Skip_Long_Lines On
    
    [OUTPUT]
        Name http
        Match *
        URI /api/default/default/_json
        Host localhost
        Port 5080
        tls Off

    Chạy Fluent Bit:

    fluent-bit -c nginx-fluent-bit.conf

    Bước 4: Tạo script gửi request để sinh log

    Tạo file nginx-load.sh:

    #!/bin/bash
    for i in {1..1000}
    do
      curl -s http://localhost:8080 > /dev/null
      echo "Request $i sent."
      sleep 0.1
    done
    chmod +x nginx-load.sh
    ./nginx-load.sh

    Bước 5: Cài đặt OpenObserve

    Bạn có thể cài bằng script từ GitHub:

    git clone https://github.com/openobserve/rum-demo.git
    cd rum-demo/openobserve-setup
    ./setup_openobserve.sh

    Đảm bảo OpenObserve chạy ở địa chỉ: http://localhost:5080

    Bước 6: Kiểm tra log trong OpenObserve

    • Truy cập: http://localhost:5080
    • Tìm kiếm với tag: nginx-access

    Ví dụ log mẫu:

    {
      "@timestamp": "2024-10-16T15:07:55-05:00",
      "remote_addr": "127.0.0.1",
      "request": "GET / HTTP/1.1",
      "status": "200",
      "body_bytes_sent": "615",
      "http_user_agent": "curl/8.7.1"
    }

    5. 💡 Kết luận: Khai phá sức mạnh từ logs

    Sau khi tích hợp NGINX với Fluent Bit và OpenObserve, bạn đã có một hệ thống:

    • Theo dõi log thời gian thực
    • Truy vấn dữ liệu linh hoạt
    • Phát hiện lỗi sớm
    • Hiển thị dashboard trực quan

    🎯 Mở rộng thêm:

    • Thiết lập cảnh báo bất thường
    • Phân tích hành vi truy cập (user agent, referer)
    • Tích hợp thêm trace, metrics cho full observability

    💡 Tham khảo https://openobserve.ai/blog/how-to-monitor-nginx-with-fluentbit-and-o2/

    Bài viết gần đây

    spot_img

    Related Stories

    Leave A Reply

    Please enter your comment!
    Please enter your name here

    Đăng ký nhận thông tin bài viết qua email