Статистика для IceCast2

03.07.2011 от admin 54

Сегодня я расскажу вам как сделать статистику icecast2 в виде графика, используя MRTG и скрипт на php.

Для этого нам понадобится:

  • Сервер IceCast2
  • MRTG(программа для построения графиков)
  • Доступ к серверу по ssh

Установка MRTG.

Установить MRTG в debian и ubuntu можно командой :

apt-get install mrtg

На этом собственна и вся установка, так что переходим к настройке.

Настрока MRTG

После установки файл конфигурации MRTG должен находит в /etc/mrtg.cfg, отредактируем его:

nano /etc/mrtg.cfg

ВАЖНО!

Если собираетесь использовать MRTG только для снятия статистики IceCast2, то можете смело удалять все содиржимое конфига, и вставить следующие строки:

Interval: 5
RunAsDaemon: yes
Refresh: 300
Language: russian
WorkDir: /var/www/pipradio.net/web/statistica
WriteExpires: Yes
WithPeak[_]: dwmy
XSize[_]: 600
YSize[_]: 200
Title[^]: Graphs:

Тут не много объясню, что к чему.

Interval: 5

Время обновления графиков в минутах.

RunAsDaemon: yes

Стартовать MRTG как демон.

WorkDir: /var/www/pipradio.net/web/statistica

Папка куда будут складываться файлы.(можно создать например поддомен ice.pipradio.com)

XSize[_]: 600
YSize[_]: 200

Размер графиков.

Теперь создаем скрипт, который будет собирать статистику радио со всех потоков:

nano /etc/allstat.php

И втсавляем следующие:

#!/usr/bin/php
< ?php
$file_name='http://pipradio.net:9500/status2.xsl';
$r=fopen($file_name,'r');
$text=fread($r,1000);
fclose($r);
$mass=explode(",", $text);
$list=$mass [9];
$mas=explode (" ", $mass [7]);
$ti=substr($mas [0],7);
$day=floor($ti/86500);
$he=floor(($ti-$day*86500)/3600);
$mi=floor(($ti-$day*86500-$he*3600)/60);
$upt="".$day." days, ".$he." hours, ".$mi." minutes.";
$s=0;
echo $list."n";
echo $s."n";
echo $upt."n";
echo "/all";

?>

Если же вы хотите снимать статистику с какого-то одного потока, то скрипт будет выглядить так:

#!/usr/bin/php
< ?php
$file_name='http://pipradio.net:9500/status2.xsl?mount=/nonstop;
$r=fopen($file_name,'r');
$text=fread($r,1000);
fclose($r);
$mass=explode(",", $text);
$list=$mass [14];
$mas=explode (" ", $mass [7]);
$ti=substr($mas [0],7);
$day=floor($ti/86500);
$he=floor(($ti-$day*86500)/3600);
$mi=floor(($ti-$day*86500-$he*3600)/60);
$upt="".$day." days, ".$he." hours, ".$mi." minutes.";
$s=0;
echo $list."n";
echo $s."n";
echo $upt."n";
echo "/all";

?>

Где ?mount=/nonstop’; название потока(точки монтирования icecast)

Теперь даем права на выполнение скрипта:

chmod 755 /etc/allstat.php

И добавляем наш скрипт в конфиг MRTG:

nano /etc/mrtg.cfg

Вниз вставляем:

Target[all]: `/etc/allstat.php`
Options[all]: nopercent, integer, gauge
MaxBytes[all]: 1000
AbsMax[all]: 1000
Title[all]: Listens
PageTop[all]:All Listens
YLegend[all]: # of connections
ShortLegend[all]: L/s
Legend1[all]: # of listeners
Legend2[all]:
Legend3[all]: Maximal # of listeners
Legend4[all]:
LegendI[all]:  # of listeners:
LegendO[all]

ВАЖНО!
Если хотите видеть статистику по потокам, обратите внимание на [all] это индификатор графика, он должен быть разным для каждого потока

Попробуем запустить MRTG

env LANG=C /usr/bin/mrtg /etc/mrtg.cfg

Если ошибок вида Target[all][_IN_] ‘ $target->[1]{$mode}
нет ,значит все хорошо, если есть, проверьте ваш сервер, и в случаи снятия статистики с отдельного потока, проверьте есть ли он.
Теперь нам нужно создать файл index.html, для этого используем команду:

indexmaker mrtg.cfg > /var/www/pipradio.net/web/statistica

После чего заходим смотреть нашу статистику по адресу pipradio.net/statistica

На этом настройка завершена, графики должны заработать.

В примере указан сайт pipradio.net , у вас должен быть другой путь и другая рабочая папка.

Если возникли вопросы пишите в комментариях.