
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.
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é.