Ngxtop – Monitor log dịch vụ Nginx theo thời gian thực – Cuongquach.com | Bạn đã từng quản trị dịch vụ Web Server Nginx, hẳn sẽ lắm lúc căng thẳng với quá trình giám sát tình trạng vhost web nginx qua các file log. Bạn phải sử dụng rất nhiều cú pháp lệnh kết hợp để có thể tìm ra những khuôn mẫu trong log nginx để kiểm tra như : số lượng địa chỉ ip nào đang kết nối nhiều nhất, số lượng mã HTTP Status 404 của URL nào trả về nhiều nhất,…
Nhưng với công cụ ‘ngxtop‘ bạn sẽ có một chương trình hỗ trợ cơ bản giúp bạn dễ dàng giám sát log Nginx thời gian thực. Cùng CuongQuach tìm hiểu cách cài đặt và sử dụng ngxtop nhé.
Có thể bạn quan tâm chủ đề khác
– Hướng dẫn cài đặt Nginx trên CentOS
– Hướng dẫn cài đặt Nginx trên Ubuntu
– Liệt kê danh sách vhost trên Nginx
– Cấu hình Nginx bảo trì website với HTTP 503
Contents
Ngxtop là gì ?
Trang chủ mã nguồn: https://github.com/lebinh/ngxtop
Ngxtop là công cụ mã nguồn mở viết bằng Python, miễn phí, đơn giản và rất linh hoạt. Ngxtop được sử dụng để theo dõi file log của dịch vụ Web Server Nginx theo thời gian thực. Ngxtop được thiết kế để hoạt động giống như lệnh `top` trên Linux vậy, tự động cập nhật theo khoảng thời gian dễ dàng cho bạn troubleshooting cũng như giám sát máy chủ nginx của bạn tại thời điểm bạn kiểm tra.
Mặc định ngxtop sẽ theo dõi file log ở đường dẫn mặc định là /var/log/nginx/access.log
. Nhưng nó đủ linh hoạt để bạn có thể thay đổi lại đường dẫn file log domain khác cho chính xác cũng như thay đổi hành vi theo dõi của nó. Tức là bạn có thể truy vấn những nội dung khác nhau như là chỉ định log và định dạng.
À mà bạn biết không, ứng dụng này của tác giả Việt Nam viết đấy 🙂
1. Cài đặt Ngxtop trên Linux
Chúng ta sẽ cài đặt ‘ngxtop‘ qua chương trình ‘pip‘ quản lý package module của Python.
# pip install ngxtop
- ngxtop được phát triển chính trên python2, nhưng cũng có thể chạy được trên python3.
2. Sử dụng Ngxtop
Bạn sử dụng lệnh `ngxtop -h` để xem thêm hướng dẫn nhé.
# ngxtop -h Usage: ngxtop [options] ngxtop [options] (print|top|avg|sum) <var> ... ngxtop info ngxtop [options] query <query> ... ...
3. Một số ví dụ sử dụng Ngxtop cụ thể
3.1 Monitor request đến máy chủ nginx
Khi bạn sử dụng lệnh ngxtop
mà khi đi kèm thêm tham số nào khác, mặc định ngxtop sẽ đọc lấy file /var/log/nginx/access.log
và hoạt động như chế độ mặc định như sau.
# ngxtop running for 411 seconds, 64332 records processed: 156.60 req/sec Summary: | count | avg_bytes_sent | 2xx | 3xx | 4xx | 5xx | |---------+------------------+-------+-------+-------+-------| | 64332 | 2775.251 | 61262 | 2994 | 71 | 5 | Detailed: | request_path | count | avg_bytes_sent | 2xx | 3xx | 4xx | 5xx | |------------------------------------------+---------+------------------+-------+-------+-------+-------| | /abc/xyz/xxxx | 20946 | 434.693 | 20935 | 0 | 11 | 0 | | /xxxxx.json | 5633 | 1483.723 | 5633 | 0 | 0 | 0 | | /xxxxx/xxx/xxxxxxxxxxxxx | 3629 | 6835.499 | 3626 | 0 | 3 | 0 | | /xxxxx/xxx/xxxxxxxx | 3627 | 15971.885 | 3623 | 0 | 4 | 0 | | /xxxxx/xxx/xxxxxxx | 3624 | 7830.236 | 3621 | 0 | 3 | 0 | | /static/js/minified/utils.min.js | 3031 | 1781.155 | 2104 | 927 | 0 | 0 | | /static/js/minified/xxxxxxx.min.v1.js | 2889 | 2210.235 | 2068 | 821 | 0 | 0 | | /static/tracking/js/xxxxxxxx.js | 2594 | 1325.681 | 1927 | 667 | 0 | 0 | | /xxxxx/xxx.html | 2521 | 573.597 | 2520 | 0 | 1 | 0 | | /xxxxx/xxxx.json | 1840 | 800.542 | 1839 | 0 | 1 | 0 |
Thoát ra bằng tổ hợp phím Ctrl + C nha.
3.2 Phân tích access log với đường dẫn khác
Bạn có thể phân tích access log với đường dẫn khác bằng cách sử dụng option -l như sau.
# ngxtop -l /var/log/nginx/domains/cuongquach.com.log
3.3 Liệt kê top IP của client truy cập
# ngxtop top remote_addr -l /var/log/nginx/domains/cuongquach.com.log running for 20 seconds, 3215 records processed: 159.62 req/sec top remote_addr | remote_addr | count | |-----------------+---------| | 118.173.177.161 | 20 | | 110.78.145.3 | 16 | | 171.7.153.7 | 16 | | 180.183.67.155 | 16 | | 183.89.65.9 | 16 | | 202.28.182.5 | 16 | | 1.47.170.12 | 15 | | 119.46.184.2 | 15 | | 125.26.135.219 | 15 | | 125.26.213.203 | 15 |
3.4 Sử dụng định dạng log cụ thể
Để sử dụng định dạng log, bạn sử dụng thêm option -f nhé .
# ngxtop -f main -l /var/log/nginx/domains/cuongquach.com.log
3.5 Giám sát log Apache từ máy chủ remote
Ngxtop thậm chí có thể giám sát xem log của dịch vụ Apache nữa cơ, đơn giản là chỉ cần có format chuẩn của Apache thì cũng theo dõi thời gian thực như Nginx log. Để có thể chỉ định được log Apache từ máy chủ remote bạn sử dụng lệnh dưới đây nhé
# ssh user@remote_server tail -f /var/log/httpd/domains/cuongquach.com.log | ngxtop -f common running for 20 seconds, 1068 records processed: 53.01 req/sec Summary: | count | avg_bytes_sent | 2xx | 3xx | 4xx | 5xx | |---------+------------------+-------+-------+-------+-------| | 1068 | 28026.763 | 1029 | 20 | 19 | 0 | Detailed: | request_path | count | avg_bytes_sent | 2xx | 3xx | 4xx | 5xx | |------------------------------------------+---------+------------------+-------+-------+-------+-------| | /xxxxxxxxxx | 199 | 55150.402 | 199 | 0 | 0 | 0 | | /xxxxxxxx/xxxxx | 167 | 47591.826 | 167 | 0 | 0 | 0 | | /xxxxxxxxxxxxx/xxxxxx | 25 | 7432.200 | 25 | 0 | 0 | 0 | | /xxxx/xxxxx/x/xxxxxxxxxxxxx/xxxxxxx | 22 | 698.727 | 22 | 0 | 0 | 0 | | /xxxx/xxxxx/x/xxxxxxxxxxxxx/xxxxxx | 19 | 7431.632 | 19 | 0 | 0 | 0 | | /xxxxx/xxxxx/ | 18 | 7840.889 | 18 | 0 | 0 | 0 | | /xxxxxxxx/xxxxxxxxxxxxxxxxx | 15 | 7356.000 | 15 | 0 | 0 | 0 | | /xxxxxxxxxxx/xxxxxxxx | 15 | 9978.800 | 15 | 0 | 0 | 0 | | /xxxxx/ | 14 | 0.000 | 0 | 14 | 0 | 0 | | /xxxxxxxxxx/xxxxxxxx/xxxxx | 13 | 20530.154 | 13 | 0 | 0 | 0 |
3.6 Liệt kê các response có status code là 4xx hoặc 5xx
# ngxtop -i 'status >= 400' print request status http_referer running for 2 seconds, 28 records processed: 13.95 req/sec request, status, http_referer: | request | status | http_referer | |-----------+----------+----------------| | - | 400 | - |
4. Tổng kết
Như vậy là bài giới thiệu về công cụ ngxtop – monitor log nginx theo thời gian thực đã hoàn tất rồi, công cụ đơn giản mà vô cùng tiện lợi phải không nào. Cám ơn các bạn đã theo dõi nhé.
Nguồn: https://cuongquach.com/