Как парсить логи доступа nginx

Thank you for reading this post, don't forget to subscribe!

Если вы хоти­те опти­ми­зи­ро­вать свой веб-сер­вер, необ­хо­ди­мо пони­мать access логи Nginx.

Веде­ние логов (жур­на­лов) – это един­ствен­ное кри­ти­че­ски важ­ное дей­ствие, кото­рое вы пред­при­ни­ма­е­те перед воз­ник­но­ве­ни­ем проблемы.

Оно так­же игра­ет свою роль в обна­ру­же­нии дефек­тов в веб-разработке.

Жур­на­лы досту­па Nginx содер­жат подроб­ную инфор­ма­цию о запро­сах пользователей.

Для ана­ли­за и мони­то­рин­га ваше­го веб-сер­ве­ра необ­хо­ди­мо раз­би­рать логи Nginx.

Как разобрать access логи Nginx

Как поль­зо­ва­тель Linux, вы може­те исполь­зо­вать два мето­да для пар­син­га досту­па к Nginx.

Вы може­те либо исполь­зо­вать коман­ды Linux, либо вос­поль­зо­вать­ся инстру­мен­том ана­ли­за­то­ра журналов.

Выпол­не­ние команд Linux спар­сит логи Nginx для ука­зан­ной функ­ции, в то вре­мя как при пар­син­ге с помо­щью любо­го инстру­мен­та ана­ли­за­то­ра вы може­те полу­чить пол­ный отчет.

Как спарсить журнал доступа Nginx для получения списка IP-адресов

В этом раз­де­ле будет пока­за­но, как полу­чить IP-адре­са кли­ен­тов с помо­щью коман­ды Linux.

Пред­став­лен­ный спо­соб раз­бо­ра жур­на­лов досту­па Nginx может быть поле­зен, если вы хоти­те узнать, кто под­клю­чал­ся к сер­ве­ру или про­ве­рить IP-адре­са, свя­зан­ные с извест­ны­ми нарушителями.

Учи­ты­вая, что логи досту­па Nginx сохра­ня­ют­ся в дирек­то­рии “/var/log”, выпол­не­ние при­ве­ден­ной ниже коман­ды поз­во­лит спар­сить жур­на­лы досту­па Nginx и полу­чить спи­сок IP-адре­сов пользователей:

sudo cat /var/log/nginx/access.log | awk '{ print $1}' | sort | uniq -c | sort

Как спарсить логи доступа Nginx для получения списка доступа к файлам

В ситу­а­ции, когда вы хоти­те про­ве­рить спи­сок фай­лов, к кото­рым обра­ща­ют­ся поль­зо­ва­те­ли ваше­го сер­ве­ра, вве­ди­те в тер­ми­на­ле при­ве­ден­ные ниже коман­ды и нажми­те “Enter”:

Как спарсить логи доступа Nginx для подсчета количества запросов в секунду

Вы може­те выпол­нить эту опе­ра­цию, выпол­нив про­стую коман­ду Linux, а именно:
sudo cat /var/log/nginx/access.log | awk '{print $4}' | uniq -c | sort -rn | head

 

В резуль­та­те выпол­не­ния при­ве­ден­ной выше коман­ды все запро­сы будут отсор­ти­ро­ва­ны, и для каж­до­го из них будет про­став­ле­на вре­мен­ная метка.
Здесь пер­вое чис­ло пред­став­ля­ет собой коли­че­ство запросов:

Как спарсить логи доступа Nginx для получения кодов ответов

Трех­знач­ный код состо­я­ния отве­та HTTP воз­вра­ща­ет­ся тогда, когда веб-сер­вер полу­ча­ет запрос от поль­зо­ва­те­ля сайта.
Про­то­кол HTTP – коды состо­я­ния – фор­мат запро­са и отве­та – мето­ды HTTP на пальцах
Этот код ука­зы­ва­ет на собы­тие, кото­рое долж­но произойти.
Напри­мер, код отве­та “301” озна­ча­ет “Посто­ян­но пере­ме­щен”, в то вре­мя как “200” гово­рит: “Хоро­шо, вот содер­жи­мое, кото­рое вы запросили”.
Вы може­те про­ана­ли­зи­ро­вать жур­на­лы досту­па Nginx для полу­че­ния кодов ответа.
Для это­го в тер­ми­на­ле Linux выпол­ни­те при­ве­ден­ные ниже команды:

Как спарсить логи доступа Nginx с помощью онлайн-анализаторов

Неваж­но, исполь­зу­е­те ли вы Nginx в каче­стве сер­ве­ра ста­ти­че­ско­го кон­тен­та, балан­си­ров­щи­ка нагруз­ки или веб-сер­ве­ра, вы навер­ня­ка захо­ти­те про­смот­реть жур­на­лы досту­па, что­бы понять, насколь­ко хоро­шо он работает.

Суще­ству­ет несколь­ко вари­ан­тов инстру­мен­тов Nginx, напри­мер Goaccess, Visitors, ELK Stack.

Вы може­те выбрать инстру­мент ана­ли­за­то­ра в соот­вет­ствии с ваши­ми требованиями.

Одна­ко для демон­стра­ции про­це­ду­ры раз­бо­ра жур­на­лов досту­па Nginx с помо­щью онлайн-ана­ли­за­то­ра мы выбра­ли Goaccess.

Что­бы исполь­зо­вать Goaccess для раз­бо­ра жур­на­лов досту­па Nginx, необ­хо­ди­мо сна­ча­ла уста­но­вить его в вашей системе:

sudo apt install goaccess

или
$ sudo install goaccess