How to Install and use ngxtop on Ubuntu 20.04

The following guide will teach you how to install and use ngxtop. This software is a free, open-source, flexible and real-time monitoring tool for the Nginx web server. How it works is the program parses the Nginx access logs and prints the information about the request count, URI and status codes among the top features. This is a favourite for sysadmins or power users wanting a lightweight tool to monitor requests to their Nginx web server.

Prerequisites

  • Ubuntu Server 20.04 or onwards.
  • Nginx server update to date stable or mainline.
  • Root access or an account with sudo privilages.
  • Update to date system.
  • Python 3 and PIP 3 installed.
sudo apt update && sudo apt upgrade -y \
sudo apt install python3 python3-pip

Installation of ngxtop

With python and pip installed, we can now proceed to install ngxtop. Enter the following command.

pip3 install ngxtop

Once installed, confirm the version.

ngxtop --version

Example output:

xstat 0.1

How to use ngxtop

Now, run the ngxtop command without any argument will display the summary of request count, requested URI, the number of requests by status code.

ngxtop

Example output:

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 |

Next, if you want to see a list of top remote connections to your Nginx server, type the following.

ngxtop top remote_addr

Example output:

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 |

If you would like to see 4xx or 5xx responses and HTTP referral attached, you can input the following command:

ngxtop -i 'status >= 400' print request status http_referer

Example output:

running for 2 seconds, 28 records processed: 13.95 req/sec
 request, status, http_referer:
 | request   |   status | http_referer   |
 |-----------+----------+----------------|
 | -         |      400 | -              |

These are just some examples. A full list of combinations can be found below.

eUsage:
  ngxtop [options]
  ngxtop options 
  ngxtop info
 Options:
  -l , --access-log   access log file to parse.
  -f , --log-format   log format as specify in log_format directive.
  --no-follow  ngxtop default behavior is to ignore current lines in log
       and only watch for new lines as they are written to the access log.
       Use this flag to tell ngxtop to process the current content of the access log instead.
  -t , --interval   report interval when running in follow mode [default: 2.0]
 -g , --group-by   group by variable [default: request_path]
  -w , --having   having clause [default: 1]
  -o , --order-by   order of output for default query [default: count]
  -n , --limit   limit the number of records included in report for top command [default: 10]
  -a  …, --a  …  add exp (must be aggregation exp: sum, avg, min, max, etc.) into output
 -v, --verbose  more verbose output
  -d, --debug  print every line and parsed record
  -h, --help  print this help message.
  --version  print version information.
 Advanced / experimental options:
  -c , --config   allow ngxtop to parse nginx config file for log format and location.
  -i , --filter   filter in, records satisfied given expression are processed.
  -p , --pre-filter  in-filter expression to check in pre-parsing phase.

Comments and Conclusion

You have learnt how to install ngxtop for your Nginx server on Ubuntu, an operating system. Note, this is for essential monitoring that is lightweight, quick and clean to search for specific stats from your logs. If you are looking for something more advance with a WebUI, a good analytics package will need to be installed.



Follow LinuxCapable.com!

Like to get automatic updates? Follow us on one of our social media accounts!