Вы действительно должны использовать один из многих анализаторов файлов журнала веб-сервера (, например.https://goaccess.io/по предложению @Bart. В 7 Awesome Analytics Software с открытым исходным кодом для Linux и Unix есть достойный обзор некоторых альтернатив, и Google найдет вам больше ), но для быстрого -и -грязного взлома вы можно использовать что-то вроде этого:
awk -v OFS='\t' '
$0 ~ date { max[$7]+=$(NF-1); count[$7]++ };
END {
print "date","api","count","max","avg";
for (i in max) {
print date, i, count[i], max[i], max[i]/count[i] }
}' \
date="25/Aug/2019" nginx.log
Вывод на основе вашего примера: (примечание, поля разделены табуляцией, а не пробелами):
date api count max avg
25/Aug/2019 /v2/api/find/outlet/ 2 0.356 0.178
25/Aug/2019 /v2/api/user/destination 1 0.019 0.019
25/Aug/2019 /v2/api/transaction/inquiry 1 0.374 0.374
25/Aug/2019 /v2/api/user/point 2 0.052 0.026
25/Aug/2019 /v2/api/transaction/confirm 1 0.394 0.394
25/Aug/2019 /v2/api/menu/category 2 0.01 0.005
Кстати, приведенный выше awk-скрипт основан на предположении, что время ответа на данный запрос находится во втором последнем поле($(NF-1)
). Мне пришлось угадать здесь, потому что вы не сказали нам, какой формат файла журнала вы настроили для своего сервера nginx или каковы последние несколько полей в каждой строке.