Логируем скачанные файлы и парсим их

Стало интересно кто и какие файлы качает в нашем файловом архиве. Посмотрел man и сделал небольшую конструкцию для логирования и последующего парсинга этих логов.

в главном конфиге /etc/nginx/nginx.conf в http добавляем описание формата лог файла:

http {
    ...

    log_format download '{ "remote_addr" : "$remote_addr", "time":"$time_local", "request":"$request", '
                  '"traffic":$body_bytes_sent, "x_forwarded_for":"$http_x_forwarded_for" }';

    ...
}

в блоке сайта указываем что будем писать лог в этом формате

 access_log /var/log/nginx/download.f.log download;

результат

tail -f download.f.log
{ "remote_addr" : "10.200.200.1", "time":"13/Sep/2020:07:38:11 +0300", "request":"GET /putty.exe HTTP/1.1", "traffic":1179024, "x_forwarded_for":"-" }
{ "remote_addr" : "10.200.200.1", "time":"13/Sep/2020:07:38:24 +0300", "request":"GET /memtest86%2B-5.31b.usb.installer.zip HTTP/1.1", "traffic":128347, "x_forwarded_for":"-" }
{ "remote_addr" : "10.200.200.1", "time":"13/Sep/2020:07:38:35 +0300", "request":"GET /500291E1A714.version2 HTTP/1.1", "traffic":11, "x_forwarded_for":"-" }
{ "remote_addr" : "10.200.200.1", "time":"13/Sep/2020:07:38:49 +0300", "request":"GET /winbox.exe HTTP/1.1", "traffic":2223840, "x_forwarded_for":"-" }
{ "remote_addr" : "185.191.171.7", "time":"13/Sep/2020:07:44:24 +0300", "request":"GET /Install/PCB/%D0%9C%D0%B0%D0%BA%D1%80%D0%BE%D1%81%D1%8B%20%D0%B4%D0%BB%D1%8F%20Sprint-Layout%206.0%2000001/SMD/%D0%98%D0%9C%D0%A1-SMD/ADP3811.LMK HTTP/1.1", "traffic":1024, "x_forwarded_for":"-" }

Конечно же теперь можно легко парсить с помощью awk, sed и так далее. Например применив вот такой простой вариант мы получим список файлов без дополнительной информации:

cat download.f.log | awk '{ print $8 }'
cat download.f.log | awk '{ print $8 }' | grep 'exe\|rar\|zip\|avi'

В заключение хочу сказать что nginx это отличный веб сервер, и я полностью ухожу с apache на nginx.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *