Monitor Nginx Logbestanden met ngxtop op Ubuntu 20.04

ngxtop is een gratis, open-source, flexibel en real-time bewakingsprogramma voor Nginx webservers. Het kan de Nginx toegangslog ontleden en de informatie afdrukken over het aantal verzoeken, de gevraagde URI, het aantal verzoeken per statuscode, en nog veel meer. Het is een eenvoudig en gemakkelijk te gebruiken hulpmiddel om de verzoeken die naar een Nginx webserver komen in de gaten te houden.

In dit artikel laat ik je zien hoe je het ngxtop bewakingshulpmiddel kunt installeren en gebruiken op Ubuntu 20.04.

Vereisten

  • Een server met Ubuntu 20.04.
  • Een root wachtwoord is op je server ingesteld.

Installeer ngxtop

ngxtop is een python-gebaseerd gereedschap, dus je zult Python en PIP pakketten op je systeem moeten installeren. Je kunt ze samen met Nginx installeren met het volgende commando:

apt-get install nginx python3 python3-pip -y

Eenmaal geïnstalleerd, kun je het ngxtop pakket installeren met de PIP zoals hieronder te zien is:

pip3 install ngxtop

Als ngxtop geïnstalleerd is, kun je de versie van ngxtop verifiëren met het volgende commando:

ngxtop --version

Je zou de volgende uitvoer moeten krijgen:

xstat 0.1

Hoe ngxtop te gebruiken

In dit onderdeel laten we je zien hoe je ngxtop kunt gebruiken om de Nginx webserver te bewaken.

Als je het ngxtop commando zonder enig argument uitvoert, krijg je het overzicht van het aantal verzoeken, de gevraagde URI, het aantal verzoeken per statuscode.

ngxtop

Je zou het volgende scherm moeten zien:

Ngxtop logbestand bewakingshulpmiddel

Je kunt de -l optie gebruiken om het toegangslog te specificeren dat je wilt analyseren.

ngxtop -l /var/log/nginx/access.log

Je zou het volgende scherm moeten zien:

Stel in welk logboek gevolgd moet worden

Om een lijst te maken van de belangrijkste IP’s die je Nginx server benaderen, voer je het volgende commando uit:

ngxtop --group-by remote_addr -l /var/log/nginx/access.log

Je zou het volgende scherm moeten zien:

Groeperen per IP

Je kunt 10 verzoeken met het hoogste totaal verzonden bytes afdrukken met het volgende commando:

ngxtop --order-by 'avg(bytes_sent) * count' -l /var/log/nginx/access.log

Je zou het volgende scherm moeten zien:

Logbestand records bestellen

Met ngxtop kun je ook het Apache logbestand van een andere server ontleden. Je kunt dat doen met het volgende commando:

ssh [email protected] tail -f /var/log/apache2/access.log | ngxtop -f common

Om een lijst te krijgen van alle opties die met ngxtop beschikbaar zijn, voer je het volgende commando uit:

ngxtop --help

Je zou de volgende uitvoer moeten zien:

ngxtop - ad-hoc query for nginx access log.

Usage:
    ngxtop [options]
    ngxtop [options] (print|top|avg|sum)  ...
    ngxtop info
    ngxtop [options] query  ...

Options:
    -l , --access-log   access log file to parse.
    -f , --log-format   log format as specify in log_format directive. [default: combined]
    --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.

Examples:
    All examples read nginx config file for access log location and format.
    If you want to specify the access log file and / or log format, use the -f and -a options.

    "top" like view of nginx requests
    $ ngxtop

    Top 10 requested path with status 404:
    $ ngxtop top request_path --filter 'status == 404'

    Top 10 requests with highest total bytes sent
    $ ngxtop --order-by 'avg(bytes_sent) * count'

    Top 10 remote address, e.g., who's hitting you the most
    $ ngxtop --group-by remote_addr

    Print requests with 4xx or 5xx status, together with status and http referer
    $ ngxtop -i 'status >= 400' print request status http_referer

    Average body bytes sent of 200 responses of requested path begin with 'foo':
    $ ngxtop avg bytes_sent --filter 'status == 200 and request_path.startswith("foo")'

    Analyze apache access log from remote machine using 'common' log format
    $ ssh remote tail -f /var/log/apache2/access.log | ngxtop -f common

Conclusie

In de bovenstaande gids heb je geleerd hoe je ngxtop kunt installeren en gebruiken op Ubuntu 20.04. Ik hoop dat je nu je Nginx log gemakkelijk kunt monitoren vanaf de command-line interface.