LINUX.ORG.RU
решено ФорумAdmin

Как посчитать уникальные IP из логов апача в месяц?

 , ,


0

2

cat */access.log | awk '{print $4}' | sort -n | uniq -c

Результат: 16789 65.X.X.X 19448 65.X.X.X 1995 138.X.X.X 2407 213.X.X.X 2728 213.X.X.X 5478 188.X.X.X 6496 176.X.X.X 11332 130.X.X.X

Этой коммандой я получаю все уникальные IP из логов 2014-2015 годов. Проблема в том, что нужны уникальные IP не за год, а в месяц. Промежутки времени в логах разные.

Я думаю для начала надо разделить все логи на месячные. Дату можно получить через awk '{print $1}' вот так: [13-Jun-2015

Затем посчитать первой коммандой уникальные IP в каждом месяце. Логов почти гигабайт.

Какие комманды мне подойдут для поставленной задачи?



Последнее исправление: Legoman (всего исправлений: 1)
Ответ на: комментарий от Amet13

Отлично, а Jun-2015 как awk '{print $1}' вставить? и имя файла тоже как awk '{print $1}'?

Legoman
() автор топика

ты дал кучу ненужной информации, вместо примера входных и выходных данных
зачем ты так сделал?

zolden ★★★★★
()
Ответ на: комментарий от zolden

Я тут недавно, боялся что не понятно будет что хочу. Спасибо за поправку.

Legoman
() автор топика

пишешь пару скриптов :
* мувер - с сервак(а|ов) забирает логи в move/YYYY/MM/YYYY-MM-DD_server_name_access.log
* комбайнер - сливает логи в один по дням с 00:00:00 по 23:59:59 в combine/YYYY/MM/YYYY-MM-DD_access.log
* подсчет уникальных за месяц в ombine/YYYY/MM/*

например, если задача не одноразовая

иначе, чо, заряжаешь грепалку в цикле и идешь пить чай

anTaRes ★★★★
()
Ответ на: комментарий от anonymous

поздравляю, ты придумал logstash

эт не я придумал, я просто описал схему которая применялась еще до изобретения logstash (наверное) на более чем 20 серваках
и логов там было гигабайты в день, а не за 2 года

ну, значит, пусть аффтар пробует logstash, если ему периодически нужно такие телодвижения проделывать

anTaRes ★★★★
()

даешь одну строку из лога и формат как это все должно выглядеть на выходе. Тогда тебе быстро помогут. А так из поста ничего не понятно как надо.

anonymous
()

В лоб - в цикле греп и твоя конструкция.

leave ★★★★★
()
Ответ на: комментарий от anonymous

одна строка: [24-Jun-2015 15:04:56 +0200] 100.50.30.10 - - «GET /search.php?restriction=0&accNo=09889 HTTP/1.1» 200 86106

на выходе: количество уникальных IP в месяц

Legoman
() автор топика

Может проще настроить logrotate так, чтобы он ротейтил каждое первое число? Таким образом у тебя будет один файл - один месяц.

shell-script ★★★★★
()
Ответ на: комментарий от shell-script

Спасибо за подсказку, сделаю так. У меня стоит logrotate 3.7.8, стоит ли её обновлять?

Legoman
() автор топика

Всем спасибо! Задача выполнена.

Legoman
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.