Я пытаюсь получить средний запрос, попадающий на сервер с данными за 1 минуту через командную строку. Если кто-то мне поможет, буду очень благодарен.
Хотя я не совсем уверен, чего вы хотите добиться, у меня есть для вас идея: просто используйте netcat для получения запросов прямо из Интернета:
netcat -k -l 1.2.3.4 8080 >/tmp/requests.log
Обязательно замените 1.2.3.4 на IP-адрес вашего сервера и 8080 на порт, который он прослушивает (например, может быть 80). Если ваш сервер nginx прослушивает IP 0.0.0.0, netcat сможет захватывать любые входящие запросы и регистрировать их. Если ngingx прослушивает 1.2.3.4, вам придется остановить его, прежде чем netcat сможет прослушивать 1.2.3.4 и тот же порт, что и ngingx.
Обратите внимание, что в некоторых системах Linux вместо netcat
ты должен напечатать nc
.
Также обратите внимание, что все, что захватывает netcat, nginx не может прочитать, поэтому посетители вашего веб-сайта будут получать сообщения об ошибках.
Если номер порта меньше 1024, netcat требуется привилегия root, чтобы открыть порт.
Если вы пытаетесь получить средние минутные данные из существующих журналов, вам нужно сделать что-то вроде этого:
cat /var/log/nginx/access.log | sed -E 's/.[0-9] {2} / [A-Za-z] {3} / [0-9] {4}: ([0-9] {2}: [0-9] {2})./\1/' | uniq -c