Как сделать вывод запросов с логов nginx в отдельный файл?

FB
На сайте с 12.10.2014
Offline
65
622

Здравствуйте!

Подскажите пожалуйста, имеется данная команда

tail -f -n 0 /var/log/nginx/access.log | awk 'BEGIN { st=systime(); } { ++count ; ct=systime(); if (ct-st >= 1) { print count/1 ; count=0; st=ct } }'

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

Буду очень благодарен за помощь.

Оптимизайка
На сайте с 11.03.2012
Offline
396
#1

ну добавить:

| tail -n 1 > отдельныйфайл.txt

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
FB
На сайте с 12.10.2014
Offline
65
#2
Оптимизайка:
ну добавить:

| tail -n 1 > отдельныйфайл.txt

Не работает так, файл создаётся, но данные туда не записываются, так же перестаёт происходить вывод с первой команды.

[umka]
На сайте с 25.05.2008
Offline
456
#3
FeedBack:
Она считает количество запросов в секунду, собственно вопрос, как сделать из этой команды, вывод последнего значения в отдельный файл?

Ваша команда считает количество запросов в секунду в реальном времени.

У неё нет последнего значения.

Если вы хотите записывать в файл только одно текущее значение, для этого лучше использовать, например, perl.

P.S. Скорость добавления записей в лог лишь косвенно говорит о реальном количестве запросов в секунду.

Записи добавляются по завершению запроса, к тому же запись в файл часто кэшируется, чтобы меньше теребить диск.

Поэтому лучше не засекать время между добавлением записей, а сбрасывать счётчик, если дата у записи в лог-файле отличаются от предыдущей записи.

Лог в помощь!
Оптимизайка
На сайте с 11.03.2012
Offline
396
#4
FeedBack:
Не работает так

Если файл у вас открытый остается, то оно никогда не дождется последней строки, логично ведь.

На самом деле вам нужен http://nginx.org/en/docs/http/ngx_http_stub_status_module.html

FB
На сайте с 12.10.2014
Offline
65
#5
Оптимизайка:
Если файл у вас открытый остается, то оно никогда не дождется последней строки, логично ведь.
На самом деле вам нужен http://nginx.org/en/docs/http/ngx_http_stub_status_module.html

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

Я решил немного другим способом, написал скрипт, который вызывает одну строку, и дальше происходит kill процесса tail, этим самым я получаю 1 строку с количеством запросов. Пока что работает как и планировалось. Спасибо.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий