Ngxtop – Monitor log dịch vụ Nginx theo thời gian thực

Ngxtop – Monitor log dịch vụ Nginx theo thời gian thựcCuongquach.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é.

theo dõi log nginx thời gian thực

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

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/

Previous articleDiễn đàn Cấp cao CNTT – TT Việt Nam (Vietnam ICT Summit) 2018
Next articleHội nghị Security Trends 2018
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !