ОсновноеRadiotalkПользовательское
Общие вопросы по интернет радио вещанию
6   •   Посмотреть все темы

Еще немного фкусной статистики (icecast2 + awstats + freebsd)

 

468
Klef @Klef
Задался как то я целью более красиво смотреть на статистику слушателей, откуда, сколько слушают и т.д.
поковырявшись в потрохах icecast'а я нашел замечательный файл access.log, заглянув в который я обнаружил подобные строки
192.168.0.25 - - [03/Jan/2010:16:10:59 +0000] "GET /w64 HTTP/1.1" 200 84 "-" "AIMP2" 356
из которого можно увидеть время доступа, ip, плеер, какой поток слушает и сколько он таки слушал.
Сразу сорвавшись в бурю кода, я начал писать анализатор логов, но нарвавшись на такой частный случай, что некоторые плееры отображаются нехорошо ("WinampMPEG/5.56, Ultravox/2.1") что для анализа было не очень хорошо.
Пробившись несколько дней с этой задачкой, я решил помучат гугл, на тему, а что это я такой умный, идея явно приходила кому то и раньше в голову, и явно была кем то реализована.
После нескольких часов поисков, и отметения в сторону ненужных вариантов (нам все таки нужен анализ существующих логов) я нашел, что замечательный модуль статистики awstats оказывается умеет работать с icecast.
Все оказалось просто и скоротечно, правкой всего пары строк конфига(у меня просто стоит уже давно awstats, для анализа логов apache)

Вот вам замечательный линк на мануал по установке awstats на freebsd c **********.

Если вы удачно прошли этап установки awstats, смотрите удивленными глазами на новую статистику вашего вебсервера, то можно приступать к кормлению логов icecast.
Лезем в директорию с конфигами awstats (у мну они лежат /etc/awstats)
находим там awstats.default.conf, копируем его
cp awstats.default.conf awstats.radio.conf
и правим:
ee awstats.radio.conf
(да, я немогу пользоваться vi)

находим LogFile= путь к лог файлу, правим на нужный:
LogFile="/var/log/icecast/access.log"
дальше находим LogType=, там должно стоять LogType=W, превращаем его в
LogType=S
ищем SiteDomain="default"
и обзываем его как хотим (это фактически просто название)
запускаем апдейт статистики
/usr/local/awstats/tools/awstats_updateall.pl now
ждемс, и лезем собственно смотреть что получилось
**********

если вы не экспериментировали с путями из вышеуказанного манула, то все пути скорей всего так и зовуться, как у меня
ТАТАМ

Фактически все.
Но у меня лично вылезли следущие грабли:
1. т.к. у меня висят графики на mrtg, то обращения от моего ip довольно много (порча статистики)
2. кроме access.log есть access.log.old, в котором лежат данные за больший период, чем в access.log
3. кроме обращения к потокам там так же будут данные о запросах плейлиста (m3u), вебинтерфейсе icecast и прочего.

С первым боремся обработкой лога shel скриптом. Со вторым, просто склеить оба лога, перед первым запуском. Третий тоже шел скрипт, который генерит уже лог с нужными нам данными, и создание еще одного конфига для awstats.
Т.к. я создание ленивое, то это все объеденил все в один скрипт и закинул в крон.

итак скриптик:

Инициализация, удаление временных файлов после прошлого запуска, склеивание двух файлов
#! /bin/sh
rm /var/log/icecast/*.tmp
cat /var/log/icecast/access.log.old >/var/log/icecast/001.tmp
cat /var/log/icecast/access.log >>/var/log/icecast/001.tmp

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

Вымещение строк с ненужными ip
cat /var/log/icecast/001.tmp | grep -v "10.10.10.10" >/var/log/icecast/002.tmp
cat /var/log/icecast/002.tmp | grep -v "127.0.0.1" >/var/log/icecast/003.tmp
cat /var/log/icecast/003.tmp | grep -v "192.168.0" >/var/log/icecast/004.tmp

первая строка это собственно мой внешний ip на котором это все дело вертится, вторая локалхост, третья моя внутренняя локалка. Соответственно кроме локалхоста, ваши ip могу отличаться, или например нет локалки.

терь вырезаем данные только по потокам.
cat /var/log/icecast/004.tmp | grep "/mount1 " >/var/log/icecast/005.tmp
cat /var/log/icecast/004.tmp | grep "/mount2 " >>/var/log/icecast/005.tmp

/mount1 и /mount2 это имена потоков, у меня их больше, но два для примера хватит, добавление доп потоков в список обработки путем копирания второй строки, с последующей правкой. Пробел после имени потока важен!

т.е. в итоге у нас есть два файлика с нужными данными.
cp /var/log/icecast/004.tmp /var/log/icecast2/access.log
cp /var/log/icecast/005.tmp /var/log/icecast2/mount.log

ну и копируем полученные файлы под осмысленными именами в предварительно созданную директорию. Их можно хранить и с оригинальными логами от icecast'а (тогда не забывайте поменять access.log в что либо другое, чтобы не затереть существующий)
В итоге у нас есть данный код:

#! /bin/sh
rm /var/log/icecast/*.tmp
cat /var/log/icecast/access.log.old >/var/log/icecast/001.tmp
cat /var/log/icecast/access.log >>/var/log/icecast/001.tmp
cat /var/log/icecast/001.tmp | grep -v "10.10.10.10" >/var/log/icecast/002.tmp
cat /var/log/icecast/002.tmp | grep -v "127.0.0.1" >/var/log/icecast/003.tmp
cat /var/log/icecast/003.tmp | grep -v "192.168.0" >/var/log/icecast/004.tmp
cat /var/log/icecast/001.tmp | grep -v "10.10.10.10" >/var/log/icecast/002.tmp
cat /var/log/icecast/002.tmp | grep -v "127.0.0.1" >/var/log/icecast/003.tmp
cat /var/log/icecast/003.tmp | grep -v "192.168.0" >/var/log/icecast/004.tmp
cat /var/log/icecast/004.tmp | grep "/mount1 " >/var/log/icecast/005.tmp
cat /var/log/icecast/004.tmp | grep "/mount2 " >>/var/log/icecast/005.tmp
p /var/log/icecast/004.tmp /var/log/icecast2/access.log
cp /var/log/icecast/005.tmp /var/log/icecast2/mount.log

который мы и сохраняем в удобное место, что бы не потерять, даем ему права на исполнение (chmod) и прописываем в крон.

Дальше правим файл awstats.radio.conf (не забыв потереть данные от этого конфига, которые лежат в отдельной директории (т.к. называемая рабочая директория awstats) указав новый лог файл /var/log/icecast2/access.log
и создаем копию awstats.radio.conf, назвав его awstats.mount.conf, где меняем путь к логам /var/log/icecast2/mount.log и SiteDomain.

перезапускам awstats_updateall.pl now
и смотрим на результат.

линки на то что получилось у меня, не предоставлю, ибо там есть ip слушателей, и вдобавок это перл

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

Добавлено спустя 9 минут 29 секунд:
В целом конечно там есть информация, которая мне не нужна, и нет чего нужно, но все равно графики симпатичные получаются :)
да и с помощью этого есть много фкусного.

Отредактировано Klef - 10.01.2010
243
Владислав @VladokZzz
У меня Win7 и Apache
Можно ли мне установить awstats и где качнуть?

468
Klef @Klef
**********/
установка
**********
для использования awstats ваш apache должен уметь работать с перл скриптами.

6
jegor @jegor
Полный мануал как поставить AWStats под Windows: **********

Занимает не больше 2х часов, если совсем dummy.

468
Klef @Klef
кто то пользуется IIS?

48
tirpir @tirpir
Поставил на 2008 с IIS7
Скажите а релеи она же не показывает? - у меня несколько станций с разным качеством и хотелось бы видеть статистику по отдельным потокам.