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

Графики статистики слушателей (freebsd+mrtg+icecast)

 

59
BigAirBenX @BigAirBenX
и да,почему он сюда то лезет?
/usr/bin/perl -w /usr/bin/mrtg mrtg.cfg

Если у меня этот файл в /etc/ тоже лежит?

6245
Тарас @tarasian666
кстате если кому надо скрипт на перловке

#!/usr/bin/perl

use strict;

my $staturl = qq~http:/127.0.0.1:8000/admin/stats~;
my $user = 'admin';
my $pass = 'hackme';
my $stream = "all";
my $uptime = '420 days';
my $listeners = 0;
my $sources = 0;

use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(GET => $staturl);
$req->authorization_basic($user, $pass);
my $stats = $ua->request($req)->as_string;
$listeners = $1 if( $stats =~ /<listeners>(\d+)<\/listeners>/);
$sources = $1 if( $stats =~ /<sources>(\d+)<\/sources>/);
$uptime = $1 if($stats =~ /<server_start>(.*)<\/server_start>/);

print qq~$listeners\n$sources\n$uptime\n$stream\n~;
exit;

Отредактировано tarasian666 - 30.12.2011
59
BigAirBenX @BigAirBenX
php /etc/allstatistica.php 1
0
0 days, 0 hours, 20 minutes.

6245
Тарас @tarasian666
BigAirBenX пишет:

и да,почему он сюда то лезет?
/usr/bin/perl -w /usr/bin/mrtg mrtg.cfg

Если у меня этот файл в /etc/ тоже лежит?

показуй /etc/cron.d/mrtg

Добавлено спустя 2 минуты 20 секунд:
BigAirBenX пишет:

php /etc/allstatistica.php 1
0
0 days, 0 hours, 20 minutes.

а без php спереди?

59
BigAirBenX @BigAirBenX



-bash: /etc/allstatistica.php: /usr/local/bin/php: bad interpreter: No such file or directory

Отредактировано BigAirBenX - 30.12.2011
6245
Тарас @tarasian666
BigAirBenX пишет:

-bash: /etc/allstatistica.php: /usr/local/bin/php: bad interpreter: No such file or directory

Вооот посмотрите где у вас он лежит, у меня например в /usr/bin/php и соответсвенно поменяйте в начале скрипта путь к пхп
если запуститься /etc/allstatistica.php считай дело в шляпе ))

468
Klef @Klef
tarasian666 пишет:

кстате если кому надо скрипт на перловке

через админку.
порою по закромам, где то у меня был перловый через status2

6245
Тарас @tarasian666
я не люблю через status2 как минимум через xspf или status.xsl
если в песне есть запятая то скрипт уже не будет показывать часть названия
через админку чем понравилось - проще узнать время запуска сервера )


хотя тут не надо названия песни, но отвращение к status2 осталось )
но былоб интересно вносить на какой песни был пик слушателей...

Отредактировано tarasian666 - 30.12.2011
59
BigAirBenX @BigAirBenX
ну у меня php5 стоит в etc/php5 там "apache2"."cli","conf.d" В апаче файл php.int , conf.d

Я в allstatistica.php написал путь до etc/php5
на что получил /etc/allstatistica.php: /etc/php5: bad interpreter: Permission denied
хотя я прописал и на php файл и на папку php5 "chmod 755"

6245
Тарас @tarasian666
не может быть бинарник php в etc !

/etc/php5 это скорей у вас просто папка с настройками php сам php в /usr/local/bin/php или /usr/bin/php

59
BigAirBenX @BigAirBenX
да,ступил,нашел,поставил адрес.Получил:
/etc/allstatistica.php
1
0
0 days, 0 hours, 20 minutes.

6245
Тарас @tarasian666
cовпадает с правдой ? )

59
BigAirBenX @BigAirBenX
в течении 5 минут отпишусь))На странице статистики обновилась строчка
"All ListensПоследнее обновление статистики: Пятница 30 Декабря 2011 г. в 13:36,
в это время '/all' была включена 0 days, 0 hours, 20 minutes.."

Ничего не изменилось

Отредактировано BigAirBenX - 30.12.2011
6245
Тарас @tarasian666
не должно как минимум писать постоянно 0 days, 0 hours, 20 minutes каждый раз должно быть больше, видимо парсер поправить надо. какая версия icecast?

6245
Тарас @tarasian666
перловка для shoutcast 1.9.8

#!/usr/bin/perl

use strict;

my $staturl = qq~http://127.0.0.1:8000/admin.cgi?mode=viewxml~;
my $user = 'admin';
my $pass = 'changeme';
my $stream = "radio name";
my $uptime = '420 days';
my $listeners = 0;
my $unique_listeners = 0;

use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->agent("Mozilla/5.0");
my $req = HTTP::Request->new(GET => $staturl);
$req->authorization_basic($user, $pass);
my $stats = $ua->request($req)->as_string;
$listeners = $1 if($stats =~ /<CURRENTLISTENERS>(\d+)<\/CURRENTLISTENERS>/);
$unique_listeners = $1 if($stats =~ /<REPORTEDLISTENERS>(\d+)<\/REPORTEDLISTENERS>/);

my $stuff = `ps --no-headers -C sc_serv -o pid,fname,lstart --sort lstart`;
my @stuff = split(/\n/,$stuff);
$uptime = $1 if ($stuff[0] =~ /sc_serv\s+(.*?)$/gi);

print qq~$listeners\n$unique_listeners\n$uptime\n$stream\n~;
exit;

59
BigAirBenX @BigAirBenX
tarasian666 пишет:

не должно как минимум писать постоянно 0 days, 0 hours, 20 minutes каждый раз должно быть больше, видимо парсер поправить надо. какая версия icecast?

server_id Icecast 2.3.2

ну и зас с 20 минут поменялось на 25.Вообще не логично


НО есть продвижение " Макс. Средний Текущий
# of listeners: 1 L/s 0 L/s 1 L/s
"

тут же все верно?
$day=floor($ti/86500);
$he=floor(($ti-$day*86500)/3600);
$mi=floor(($ti-$day*86500-$he*3600)/60);

Отредактировано BigAirBenX - 30.12.2011
6245
Тарас @tarasian666
все верно и проверено, хотя можете перловский скрипт попробовать, но там будет писать время старта, а не аптайм.

насчет писем с ошибкой - если по мануалу то запускаем программу как демон, но в кроне стоит обновление каждых 5 минут, так что или убрать команду в кроне или не делать демоном прогу
если хорошо работает без "демонизации" то лучше пусть крон запускает прогу каждых 5 минут, так экономим память

59
BigAirBenX @BigAirBenX
"RunAsDaemon: yes"
сменить на no ?

6245
Тарас @tarasian666
можно вообще строчку убрать

после этого прийдеться "убить" процесс и если после не будет обновляться то может прийдеться вручную прогнать команду крона
if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg.cfg ] && [ -d "$(grep WorkDir /etc/mrtg.cfg | cut -d' ' -f2)" ]; then mkdir -p /var/log/mrtg ; env LANG=C /usr/bin/mrtg /etc/mrtg.cfg 2>&1 | tee -a /var/log/mrtg/mrtg.log ; fi

59
BigAirBenX @BigAirBenX
да,не нашел информации, как его перезапустить?
Строку удалил. так что все должно быть лучше.