rss
Навигация
ИнструментыЯмаПолезные ссылкиЗачем мне блог?Рейтинг контентаКодекс админаФотогалереяi-payrss
Последние записи
Смонтировал видюху, моменты из жизни 2013-15На уазике до ск. Верблюд по Торгашинскому хребтуBreaks волна #9 осенний funkК нам на дачу пришел медведьСтарая бомба! Крутой рифмоплет
Каменты [еще]
2017-05-17 11:25:31 [articles] Владимир:
2016-12-20 17:49:41 [articles] Виталик:
2016-12-01 23:34:25 [news] Meteor:
2016-11-11 03:35:47 [articles] Tata10:
2016-07-27 14:28:19 [articles] Сергей:
2016-05-17 09:56:26 [articles] юра:
2016-04-29 18:03:48 [articles] agatsky.dn:
Теги
Друзья
Блог малова Лучшие стихи зая =) Мед в Красноярске Daniil V. Savenkoff Blog | То, что мне когда-то пригодилось... Велкам в друзья!

Анализатор access.log с веб мордой

Июля
2011 года
28
Теги: freebsd, web, php, скрипты,
Раздел: zgbox.ru -> Статьи -> FreeBSD -> Анализатор access.log с веб мордой
Просмотров: 3186
В статье описан метод анализа лог-файла access.log от веб сервера Apache с публикацией результатов его работы на странице. Анализ реализует скрипт. Работает все на FreeBSD

Задача:


Проанализировав файл access.log за любой день, месяц, год показать сколько было уникальных ip за выбранный период, сколько было обращений к тому или иному файлу или странице, какие ip адреса обращались, показать историю посещений.

Суть:


Работает apache, пишет лог файл доступа к вашему сайту в access.log
Есть скрипт, который анализирует этот лог и выводит нужную информацию.
Скрипт запускается из php страницы которая берет результат выполнения скрипта и выводит тому кто к ней обратился.

Реализация:


Допустим у нас есть сайт который лежит в /usr/local/www/site/www/
Допустим access.log от этого сайта лежит в /usr/local/www/site/access.log

Создаем скрипт /usr/local/www/site/who следующего содержания:
#!/bin/sh

echo $1
acfile='/usr/local/www/site/access.log'
filter=' -e /images -e /rrd -e .css -e .ico -e .js -e counter.php -e 192.168.0.1'

if [ "$2" != "" ]; then
g2="| grep "$2
cat $acfile | grep -e $1 | grep $2 | grep -v $filter | awk '{print $4 " " $5 " " $1 " " $3 " " $7}'
echo ---------- IPs -----------
cat $acfile | grep $1 | grep $2 | grep -v $filter | awk '{print $1}' | sort -u
echo ---------------------------

echo Lines: `cat $acfile | grep $1 | grep $2 | grep -v $filter -c`
echo Unical IP: `cat $acfile | grep $1 | grep $2 | grep -v $filter | awk '{print $1}' | sort -u | grep . -c`
else
cat $acfile | grep -e $1 | grep -v $filter | awk '{print $4 " " $5 " " $1 " " $3 " " $7}'
echo ---------- IPs -----------
cat $acfile | grep $1 | grep -v $filter | awk '{print $1}' | sort -u
echo ---------------------------
echo Lines: `cat $acfile | grep $1 | grep -v $filter -c`
echo Unical IP: `cat $acfile | grep $1 | grep -v $filter | awk '{print $1}' | sort -u | grep . -c`
fi
В скрипте есть две переменные для настройки, они выделенны жирным.
Первая acfile, сюда нужно прописать полный путь до файла access.log который будет анализироваться.
Вторая filter, это фильтрация того что не учавствует в анализе, например картинки, .css или доступ с какого-либо ip адреса, в данном случае 192.168.0.1.
Эту строку можно смело редактировать по своему усмотрению. Единственное что - перед каждым фильтруемым словом нужно ставить ключ -e. Этот фильтр отдается grep'у.

Cкрипт запускается в двумя параметрами, первый обязателен а второй - нет.
Первый параметр задает промежуток времени за который будет производиться анализ. Второй - фильтр результата анализа, например имя какогонибудь файла или страницы статистику которого нужно показать.
Оба параметра по сути являются элементами фильтра для grep. Сначала фильтруем по первому фильтру в котором указываем дату, затем по второму фильтру в котором указываем то за что хотим посмотреть анализ.

Примеры запуска скрипта:


Посмотрим весь лог доступа за 28 июля.
zgBsd# ./who 28/Jul
28/Jul
[28/Jul/2011:00:04:59 +0800] 213.87.74.34 - /news/31.html
[28/Jul/2011:00:30:42 +0800] 66.249.72.12 - /news/17.html
[28/Jul/2011:00:44:55 +0800] 66.249.72.12 - /news/29.html
[28/Jul/2011:00:54:43 +0800] 67.195.115.26 - /
[28/Jul/2011:01:06:16 +0800] 66.249.72.12 - /notes/7/12.html
[28/Jul/2011:01:06:36 +0800] 67.195.115.26 - /more.html
[28/Jul/2011:01:13:32 +0800] 46.138.150.168 - /news/31.html
[28/Jul/2011:01:20:30 +0800] 66.249.72.12 - /notes/3/16.html
[28/Jul/2011:01:36:16 +0800] 95.52.156.46 - /projects/carman.html
[28/Jul/2011:01:36:30 +0800] 95.52.156.46 - /get.php?download_id=5
[28/Jul/2011:01:36:30 +0800] 95.52.156.46 - /files/projects/carman.zip
[28/Jul/2011:01:45:43 +0800] 95.52.156.46 - /projects/
[28/Jul/2011:01:46:40 +0800] 95.52.156.46 - /news/57.html
[28/Jul/2011:01:48:57 +0800] 66.249.72.12 - /projects/unichat_zg_server.html
[28/Jul/2011:01:51:57 +0800] 89.178.206.169 - /notes/7/10.html
[28/Jul/2011:02:00:26 +0800] 92.53.100.38 - /news/31.html
[28/Jul/2011:02:05:39 +0800] 62.133.170.45 - /news/31.html
[28/Jul/2011:02:32:01 +0800] 188.134.88.104 - /notes/7/10.html
[28/Jul/2011:02:43:10 +0800] 93.158.151.25 - /
[28/Jul/2011:03:52:02 +0800] 93.158.153.30 - /news/31.html
[28/Jul/2011:04:42:07 +0800] 93.158.151.25 - /notes/4/6.html
[28/Jul/2011:05:26:21 +0800] 109.126.191.72 - /news/32.html
[28/Jul/2011:06:15:36 +0800] 66.249.72.12 - /notes/7/12.html
[28/Jul/2011:06:21:37 +0800] 66.249.72.12 - /notes/3/16.html
[28/Jul/2011:06:24:56 +0800] 93.158.151.25 - /projects/autoupdater.html
[28/Jul/2011:06:28:50 +0800] 207.46.195.236 - /zachem.html
[28/Jul/2011:06:33:41 +0800] 66.249.72.12 - /notes/4/6.html
[28/Jul/2011:06:57:51 +0800] 66.249.72.12 - /news/50.html
[28/Jul/2011:07:09:55 +0800] 66.249.72.12 - /news/15.html
[28/Jul/2011:07:19:15 +0800] 95.220.156.94 - /notes/7/10.html
[28/Jul/2011:07:22:00 +0800] 66.249.72.12 - /projects/termoclient.html
[28/Jul/2011:07:24:38 +0800] 67.195.115.26 - /news/56.html
[28/Jul/2011:07:34:04 +0800] 66.249.72.12 - /notes/8/5.html
[28/Jul/2011:08:10:21 +0800] 66.249.72.12 - /links.html
[28/Jul/2011:08:39:28 +0800] 93.158.151.25 - /notes/7/14.html
[28/Jul/2011:09:16:24 +0800] 66.249.72.12 - /notes/7/
[28/Jul/2011:09:30:20 +0800] 93.158.151.25 - /notes/3/16.html
[28/Jul/2011:09:31:31 +0800] 207.46.199.229 - /cinema/9.html
[28/Jul/2011:09:31:50 +0800] 65.52.109.59 - /news/61.html
[28/Jul/2011:10:02:50 +0800] 109.248.13.180 - /notes/3/16.html
[28/Jul/2011:10:21:01 +0800] 93.158.151.25 - /notes/3/15.html
[28/Jul/2011:10:28:46 +0800] 66.249.72.12 - /notes/8/
[28/Jul/2011:11:14:48 +0800] 93.158.151.25 - /projects/wudown.html
[28/Jul/2011:11:49:04 +0800] 95.25.18.139 - /projects/itman.html
[28/Jul/2011:12:19:22 +0800] 93.158.151.25 - /news/5.html
[28/Jul/2011:12:20:28 +0800] 93.80.255.1 - /news/31.html
[28/Jul/2011:12:32:46 +0800] 66.249.72.12 - /notes/7/14.html
[28/Jul/2011:13:52:19 +0800] 31.163.10.54 - /projects/autoupdater.html
[28/Jul/2011:13:57:15 +0800] 95.25.37.203 - /notes/7/14.html
[28/Jul/2011:14:17:36 +0800] 95.27.154.80 - /news/31.html
[28/Jul/2011:14:19:28 +0800] 93.158.151.25 - /news/31.html
---------- IPs -----------
109.126.191.72
109.248.13.180
188.134.88.104
207.46.195.236
207.46.199.229
213.87.74.34
31.163.10.54
46.138.150.168
62.133.170.45
65.52.109.59
66.249.72.12
67.195.115.26
89.178.206.169
92.53.100.38
93.158.151.25
93.158.153.30
93.80.255.1
95.220.156.94
95.25.18.139
95.25.37.203
95.27.154.80
95.52.156.46
---------------------------
Lines: 51
Unical IP: 22

Кто за 28 июля заходил в проекты:
тут уже указываем второй параметр

zgBsd# ./who 28/Jul /projects
28/Jul
[28/Jul/2011:01:36:16 +0800] 95.52.156.46 - /projects/carman.html
[28/Jul/2011:01:36:30 +0800] 95.52.156.46 - /files/projects/carman.zip
[28/Jul/2011:01:45:43 +0800] 95.52.156.46 - /projects/
[28/Jul/2011:01:48:57 +0800] 66.249.72.12 - /projects/unichat_zg_server.html
[28/Jul/2011:06:24:56 +0800] 93.158.151.25 - /projects/autoupdater.html
[28/Jul/2011:07:22:00 +0800] 66.249.72.12 - /projects/termoclient.html
[28/Jul/2011:11:14:48 +0800] 93.158.151.25 - /projects/wudown.html
[28/Jul/2011:11:49:04 +0800] 95.25.18.139 - /projects/itman.html
[28/Jul/2011:13:52:19 +0800] 31.163.10.54 - /projects/autoupdater.html
---------- IPs -----------
31.163.10.54
66.249.72.12
93.158.151.25
95.25.18.139
95.52.156.46
---------------------------
Lines: 9
Unical IP: 5

Кто смотрел новость /4/6.html за весь июль:
zgBsd# ./who Jul/2011 4/6.html
Jul/2011
[03/Jul/2011:23:44:21 +0800] 66.249.66.219 - /notes/4/6.html
[04/Jul/2011:17:03:33 +0800] 82.207.89.234 - /notes/4/6.html
[05/Jul/2011:03:39:25 +0800] 93.158.151.25 - /notes/4/6.html
[05/Jul/2011:15:24:09 +0800] 89.110.43.247 - /notes/4/6.html
[06/Jul/2011:23:19:00 +0800] 66.249.72.198 - /notes/4/6.html
[08/Jul/2011:00:09:20 +0800] 66.249.72.198 - /notes/4/6.html
[08/Jul/2011:07:58:36 +0800] 93.158.151.25 - /notes/4/6.html
[08/Jul/2011:09:27:08 +0800] 89.189.191.1 - /notes/4/6.html
[08/Jul/2011:10:53:30 +0800] 178.208.255.10 - /notes/4/6.html
[09/Jul/2011:05:39:39 +0800] 66.249.71.134 - /notes/4/6.html
[11/Jul/2011:01:46:59 +0800] 78.136.195.7 - /notes/4/6.html
[12/Jul/2011:13:33:01 +0800] 66.249.71.134 - /notes/4/6.html
[12/Jul/2011:19:51:12 +0800] 92.46.122.145 - /notes/4/6.html
[12/Jul/2011:19:51:29 +0800] 92.46.122.145 - /notes/4/6.html;j=true;s=1280*1024;d=24;rand=0.8116118909993916
[12/Jul/2011:21:51:24 +0800] 217.69.134.171 - /notes/4/6.html
[13/Jul/2011:04:20:42 +0800] 209.85.226.80 - /notes/4/6.html
[14/Jul/2011:15:05:34 +0800] 95.133.161.110 - /notes/4/6.html
[14/Jul/2011:15:05:58 +0800] 95.133.161.110 - /notes/4/6.html
[14/Jul/2011:15:06:38 +0800] 95.133.161.110 - /notes/4/6.html
[14/Jul/2011:16:25:18 +0800] 95.133.161.110 - /notes/4/6.html
[14/Jul/2011:17:02:48 +0800] 95.133.161.110 - /notes/4/6.html
[14/Jul/2011:17:04:17 +0800] 95.133.161.110 - /notes/4/6.html
[14/Jul/2011:17:10:19 +0800] 95.133.161.110 - /notes/4/6.html
[14/Jul/2011:23:27:53 +0800] 66.249.67.246 - /notes/4/6.html
[15/Jul/2011:09:46:55 +0800] 213.239.218.80 - /notes/4/6.html
[15/Jul/2011:09:54:22 +0800] 213.239.218.80 - /notes/4/6.html
[16/Jul/2011:07:39:41 +0800] 66.249.66.219 - /notes/4/6.html
[16/Jul/2011:13:41:41 +0800] 93.158.151.25 - /notes/4/6.html
[17/Jul/2011:17:56:09 +0800] 95.25.91.1 - /notes/4/6.html
[18/Jul/2011:03:59:08 +0800] 87.117.185.141 - /notes/4/6.html
[18/Jul/2011:14:58:10 +0800] 95.168.183.161 - /notes/4/6.html
[18/Jul/2011:16:15:50 +0800] 87.255.90.12 - /notes/4/6.html
[19/Jul/2011:09:25:56 +0800] 66.249.66.219 - /notes/4/6.html
[21/Jul/2011:07:18:48 +0800] 93.158.151.25 - /notes/4/6.html
[21/Jul/2011:21:41:48 +0800] 66.249.68.130 - /notes/4/6.html
[22/Jul/2011:12:21:25 +0800] 95.220.188.44 - /notes/4/6.html
[23/Jul/2011:00:26:33 +0800] 66.249.71.210 - /notes/4/6.html
[24/Jul/2011:01:09:53 +0800] 178.187.153.102 - /notes/4/6.html
[24/Jul/2011:01:17:40 +0800] 178.187.153.102 - /notes/4/6.html
[24/Jul/2011:01:18:08 +0800] 178.187.153.102 - /notes/4/6.html
[24/Jul/2011:06:45:57 +0800] 80.94.228.138 - /notes/4/6.html
[24/Jul/2011:14:36:09 +0800] 212.199.122.252 - /notes/4/6.html
[24/Jul/2011:16:10:03 +0800] 213.239.218.80 - /notes/4/6.html
[24/Jul/2011:16:17:05 +0800] 213.239.218.80 - /notes/4/6.html
[25/Jul/2011:02:00:20 +0800] 66.249.71.210 - /notes/4/6.html
[26/Jul/2011:03:29:26 +0800] 66.249.71.210 - /notes/4/6.html
[28/Jul/2011:04:42:07 +0800] 93.158.151.25 - /notes/4/6.html
[28/Jul/2011:06:33:41 +0800] 66.249.72.12 - /notes/4/6.html
---------- IPs -----------
178.187.153.102
178.208.255.10
209.85.226.80
212.199.122.252
213.239.218.80
217.69.134.171
66.249.66.219
66.249.67.246
66.249.68.130
66.249.71.134
66.249.71.210
66.249.72.12
66.249.72.198
78.136.195.7
80.94.228.138
82.207.89.234
87.117.185.141
87.255.90.12
89.110.43.247
89.189.191.1
92.46.122.145
93.158.151.25
95.133.161.110
95.168.183.161
95.220.188.44
95.25.91.1
---------------------------
Lines: 48
Unical IP: 26

Отображаем вывод скрипта с помощью php на нашей странице


Итак, скрипт готов и проверен, начинаем рисовать php страницу.
Страница будет запускать скрипт и показывать результат его работы за текущий день.
Создаем php файл в корне нашего сайта /usr/local/www/site/www/analiz.php
следующего содержания:
<?php

$d=date( 'd/M', time() ); //генерирует сегодняшнюю дату вида 28/Jul
$o="статистика:<br>";
exec("/usr/local/www/site/who $d",$out); //запускаем скрипт с 1 параметром
for($i=0; $i< count($out);$i++) {
$o.="$out[$i]<br>";
};

echo $o;
?>
Наслаждаемся выводом: http://ваш_сайт/analiz.php
Комментарии к записи:
Buzz 2014-02-16 15:04:14 [ответить]
Кажется скрипт несколько не актуален - после запуска мне вышло сообщение "grep: ключ должен использоваться с аргументом -- «e»
Использование: grep [ПАРАМЕТР]... ШАБЛОН [ФАЙЛ]...
Попробуйте `grep --help' для получения более подробного описания."

В настройках менял только путь к файлу- остальное оставил неизменно. В чем проблема, подскажите?
Buzz IP:79.172.86.4 2014-02-16 15:09:41 [ответить]
Прошу прощения, все в порядке

Добавление комментария

Ваше имя: (Антиспам) Какой сейчас год?
Ваш комментариий: