Биллинговая система Nodeny

Главная категория => Модули для Nodeny => Тема начата: blackjack от 13 Января 2010, 08:56:32



Название: Модуль контроля полосы пропускания (альтернативная версия)
Отправлено: blackjack от 13 Января 2010, 08:56:32
Альтернативаня бесплатная версия модуля контроля полосы пропускания


Cкрипт который из базы биллинга выдергивает имена юзеров и создает в какти графики для каждого пользователя.
Почитать как добавить график из командной строки можно здесь http://www.cacti.net/downloads/docs/html/cli_add_graphs.html (http://www.cacti.net/downloads/docs/html/cli_add_graphs.html)
Код:
cat /usr/local/share/cacti/cli/make_many_graphs.pl
Код:
#!/usr/bin/perl

use DBI;

$main_config='/usr/local/nodeny/nodeny.cfg.pl';
require $main_config;

$DSN="DBI:mysql:database=$db_name;host=$db_server;mysql_connect_timeout=$mysql_connect_timeout;";
$dbh=DBI->connect($DSN,$user,$pw,{PrintError=>1});

$uq=300; #первыйх N юзеров для которых надо создать графики
$tmpl_id=36; #graph-template-id читаем это http://www.cacti.net/downloads/docs/html/cli_add_graphs.html
$hid=3; #host-id читаем это http://www.cacti.net/downloads/docs/html/cli_add_graphs.html

for($i=1; $i<=$uq; $i++)
{
$query="SELECT `name` FROM `users` WHERE `id`=$i";

$sth=$dbh->prepare($query);
$sth->execute;

$rv=$sth->fetchrow_hashref;
$username=$rv->{name};

    if ($username ne "")
    {
    system("/usr/local/bin/php /usr/local/share/cacti/cli/add_graphs.php --graph-type=cg --graph-template-id=$tmpl_id --input-fields=\"uid=$i\" --graph-title=$username --host-id=$hid --force");
    }
}

Дальше делаем скрипт который будет из базы биллинга выбирать из X таблиц данные по трафику для юзера по id за последние 5 минут и скармливаем аутпут какти.
Код:
cat /usr/local/share/cacti/scripts/usertraf.pl
Код:
#!/usr/bin/perl

use DBI;

$main_config='/usr/local/nodeny/nodeny.cfg.pl';
require $main_config;

$DSN="DBI:mysql:database=$db_name;host=$db_server;mysql_connect_timeout=$mysql_connect_timeout;";
$dbh=DBI->connect($DSN,$user,$pw,{PrintError=>1});

$userid=$ARGV[0];

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime time;

$year=$year+1900;
$mon=$mon+1;

$query="SELECT SUM(`in`)*8/300 AS `averin`,SUM(`out`)*8/300 AS `averout` FROM `x".$year."x".$mon."x".$mday."` WHERE `mid`=".$userid." AND FROM_UNIXTIME(`time`)>'".$year."-".$mon."-".$mday." ".$hour.":".($min-5).":".$sec."'";

$sth=$dbh->prepare($query);
$sth->execute;

$rv=$sth->fetchrow_hashref;
if ($rv->{averin} && $rv->{averout})
{
print "in:$rv->{averin} out:$rv->{averout}";
}else
{
print "in:0 out:0";
}

Дальше сама настройка какти.

1. Логинимся
2. Console
3. Data Input Methods
  3.1 Add
  3.2 Name  -  Users traffic
  3.3 Input Type  -  Script/Command
  3.4 Input String  -  perl <path_cacti>/scripts/userstraf.pl <id>
  3.5 Create
  3.6 Input Fields->Add
     3.6.1 Friendly Name - User id
     3.6.2 Create
  3.7 Output Fields->Add
     3.7.1 Field [Output] - in
     3.7.2 Friendly Name - Traffic in
     3.7.3 Create
 3.8 Output Fields->Add
     3.7.1 Field [Output] - out
     3.7.2 Friendly Name - Traffic out
     3.7.3 Create
 3.9 Save
4. Data Templates
 4.1 Add
 4.2 Data Templates [new]-> Name - Users traffic
 4.3 Data Source->Name - User traffic
 4.4 Data Input Method - Users traffic
 4.5 Data Source Item  -> Internal Data Source Name - in
 4.6 Create
 4.7 Data Source Item - New
 4.8 Data Source Item -> Internal Data Source Name - out
 4.9 Custom Data [data input: Users traffic] -> User id - Ставим галочку Use Per-Data Source Value (Ignore this Value)
 4.10 Save
5. Graph Templates
 5.1 Add
 5.2 Template->Name - User traffic
 5.3 Graph Template->Title (--title) - Ставим галочку Use Per-Graph Value (Ignore this Value)
 5.4 Create

 5.5 Graph Template Items
 5.6 Add
 5.7 Data Source - Users traffic - (in)
 5.8 Color - 00CF00
 5.9 Graph Item Type - AREA
 5.10 Consolidation Function - AVERAGE
 5.11 Text Format - Inbound:

 5.12 Graph Template Items
 5.13 Add
 5.14 Data Source - Users traffic - (in)
 5.15 Color - NONE
 5.16 Graph Item Type - GPRINT
 5.17 Consolidation Function - LAST
 5.18 Text Format - Current:

 5.19 Graph Template Items
 5.20 Add
 5.21 Data Source - Users traffic - (in)
 5.22 Color - NONE
 5.23 Graph Item Type - GPRINT
 5.24 Consolidation Function - AVERAGE
 5.25 Text Format - Average:

 5.19 Graph Template Items
 5.20 Add
 5.21 Data Source - Users traffic - (in)
 5.22 Color - NONE
 5.23 Graph Item Type - GPRINT
 5.24 Consolidation Function - MAX
 5.25 Text Format - Maximum:
 5.26 Insert Hard Return - true

6. Повторяем пункты 5.5 - 5.26 только для Data Source - Users traffic - (out)  (пункт 5.7 in меняем на out, пункт 5.9 Graph Item Type - LINE1)
7. Save

8. New Graphs
8.1 Выбираем нужный нам хост   Host:
8.2 Graph Templates->Create: User traffic
8.3 Create
8.4 Create Graph from 'User traffic' - вводим логин юзера   marinka
8.5 User id - 1115

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

Собственно сам модуль на Perl для биллинга.
cat /usr/local/nodeny/web/Sgraph.pl

Код:

#!/usr/bin/perl



$VER=50.32;



use LWP;

use DBI;

use HTTP::Cookies;

use HTTP::Request::Common;



$database_default = "cacti";
 #данные для коннекта к бд какти
$database_hostname = "localhost";

$database_username = "cactiuser";  

$database_password = "cactiuser";



$cacti_user="cacti";
   #данные для входа в через веб интерфейс какти
$cacti_password="cacti";



$csi='1.1.1.1';



$DSN2="DBI:mysql:database=$database_default;host=$database_hostname;mysql_connect_timeout=$mysql_connect_timeout;";

$dbh2=DBI->connect($DSN2,$database_username,$database_password,{PrintError=>1});



sub GC_main

{

$OUT.=&Center_Mess("<span class=data2>Контроль загрузки канала</span><br>");



$query="SELECT `name` FROM `users` WHERE `id`=$Mid";

$p = &sql_select_line($dbh, $query, '');

$username=$p->{name};

$query="SELECT `local_graph_id` FROM `graph_templates_graph` WHERE `title`='$username'";

$sth2=$dbh2->prepare($query);

$sth2->execute;



$rv=$sth2->fetchrow_hashref;

$lgi=$rv->{local_graph_id};

$link_h="http://$csi/cacti/graph_image.php?action=view&local_graph_id=$lgi&rra_id=5";

$link_d="http://$csi/cacti/graph_image.php?action=view&local_graph_id=$lgi&rra_id=1";

$link_w="http://$csi/cacti/graph_image.php?action=view&local_graph_id=$lgi&rra_id=2";

$link_m="http://$csi/cacti/graph_image.php?action=view&local_graph_id=$lgi&rra_id=3";

$link_y="http://$csi/cacti/graph_image.php?action=view&local_graph_id=$lgi&rra_id=4";



$browser = LWP::UserAgent->new;

$browser->cookie_jar( HTTP::Cookies->new('file' => '/tmp/cookies.lwp',autosave => 1, ignore_discard=>1,));



$request=POST ($link_h, [action=>'login',login_username=>'cacti', login_password=>'cacti'],'Accept' => 'image/png',);

$response = $browser->request($request);

open (file, '> /usr/local/www/apache22/data/i/png/'.$username.'_h.png');

print file $response->content;

close(file);



$request=POST ($link_d, [action=>'login',login_username=>'cacti', login_password=>'cacti'],'Accept' => 'image/png',);

$response = $browser->request($request);

open (file, '> /usr/local/www/apache22/data/i/png/'.$username.'_d.png');

print file $response->content;

close(file);



$request=POST ($link_w, [action=>'login',login_username=>'cacti', login_password=>'cacti'],'Accept' => 'image/png',);

$response = $browser->request($request);

open (file, '> /usr/local/www/apache22/data/i/png/'.$username.'_w.png');

print file $response->content;

close(file);



$request=POST ($link_m, [action=>'login',login_username=>'cacti', login_password=>'cacti'],'Accept' => 'image/png',);

$response = $browser->request($request);

open (file, '> /usr/local/www/apache22/data/i/png/'.$username.'_m.png');

print file $response->content;

close(file);



$request=POST ($link_y, [action=>'login',login_username=>'cacti', login_password=>'cacti'],'Accept' => 'image/png',);

$response = $browser->request($request);

open (file, '> /usr/local/www/apache22/data/i/png/'.$username.'_y.png');

print file $response->content;

close(file);



$OUT.=&Center_Mess("Hourly<br><img src=http://$csi/i/png/".$username."_h.png /><br>

   Daily<br><img src=http://$csi/i/png/".$username."_d.png /><br>

                            Weekly<br><img src=http://$csi/i/png/".$username."_w.png /><br>

                            Monthly<br><img src=http://$csi/i/png/".$username."_m.png /><br>

                            Yearly<br><img src=http://$csi/i/png/".$username."_y.png /><br>

                            ");

}

Код:
mkdir /usr/local/www/apache22/data/i/png
Код:
echo “120		Sgraph			GC_main			Контроль загрузки канала		0		0
” >> /usr/local/nodeny/web/plugin_reestr.cfg

Операции — Настройки — Клиентская статистика — Список плагинов
Добавьте Sgraph

Пользуйтесь на здоровье. Всем успеха. :-))


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: Cell от 13 Января 2010, 20:28:41
Продолжим, теперь о самом "модуле" ))
Лазить скриптом в вебморду Cacti чтобы сграбить график - это просто полная жесть. Других слов нет.
Когда я в описании к своему модулю упомянул Cacti (зря я это сделал ))) я имел ввиду дизайн самой картинки и БОЛЬШЕ НИЧЕГО. Я не использую Cacti вообще никак. Мой модуль инсталлируется в течении 5 минут и не требует никакой настройки.
Вот так вот.
Вердикт - не рекомендуется к использованию, хотя и не запрещается )))


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: Cell от 14 Января 2010, 00:56:06
Тут сейчас речь слегка не об этом )
В моем модуле http://forum.nodeny.com.ua/index.php?topic=367.0 ничего такого настраивать не надо, нужно просто чтобы утилита rrdtool была установлена на сервер, только и всего.


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: blackjack от 14 Января 2010, 11:07:33
небольшой патчик

Код:
--- /usr/local/share/cacti/scripts/usertraf.pl	2010-01-14 11:17:14.000000000 +0200
+++ /home/admin/usertraf.pl 2010-01-14 11:17:46.000000000 +0200
@@ -15,7 +15,7 @@
 $year=$year+1900;
 $mon=$mon+1;
 
-$query="SELECT SUM(`in`)*8/300 AS `averin`,SUM(`out`)*8/300 AS `averout` FROM `x".$year."x".$mon."x".$mday."` WHERE `mid`=".$userid." AND FROM_UNIXTIME(`time`)>'".$year."-".$mon."-".$mday." ".$hour.":".($min-5).":".$sec."'";
+$query="SELECT SUM(`in`)*8/300 AS `averin`,SUM(`out`)*8/300 AS `averout` FROM `x".$year."x".$mon."x".$mday."` WHERE `mid`=".$userid." AND  `time`>UNIX_TIMESTAMP()-300";
 
 $sth=$dbh->prepare($query);
 $sth->execute;


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: blackjack от 14 Января 2010, 11:16:38
Продолжим, теперь о самом "модуле" ))
Лазить скриптом в вебморду Cacti чтобы сграбить график - это просто полная жесть. Других слов нет.
Когда я в описании к своему модулю упомянул Cacti (зря я это сделал ))) я имел ввиду дизайн самой картинки и БОЛЬШЕ НИЧЕГО. Я не использую Cacti вообще никак. Мой модуль инсталлируется в течении 5 минут и не требует никакой настройки.
Вот так вот.
Вердикт - не рекомендуется к использованию, хотя и не запрещается )))

Никакая это не жесть, какти прорисует график правильно, тем более есть возможность через вебморду управлять шаблонами, что есть +.
А я вот рекомендую в использование.


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: vnd от 31 Января 2010, 14:27:44
Даю юзерам 100мбит Украины. В описании модуля прочитал, что 100мбит лучше не указывать, т.к. будут неточности и скачки. Так и есть. Местами полная ахинея получается. Как быть?

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


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: vnd от 31 Января 2010, 16:17:46
Вопрос относитя к платному модулю.
$max_count=16000000; // из расчета что канал у юзера не может быть выше 16 мбит\с, можно конечно выставить и
                        100Мбит\с и не парить мозг, но при переходе на следующий месяц будут наблюдатся
                        безумные броски и  это все будет не очень красиво, потому ставим реальные цифры.


Вот у меня наблюдается те самые броски и даже без перехода на сл. месяц.


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: Cell от 31 Января 2010, 16:28:40
тут ничего удивительного нет, если юзер сначала берет 100 мбит Украины а потом 1 Мбит интернета то спрашивается, что вы хотите увидеть на графике если вы эти направления суммируете?


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: evp от 31 Января 2010, 23:15:40
Цитата: VitalVas
та ну нах рддтулл, когдато прийшлось его настраевать, гемору было куча
от самый простой и легкий вариант http://vitalvas.pp.ua/?id=7
Угу. Семь(!) экранов текста это "самый простой и легкий вариант"? Как же! Купите лучше платный модуль и сравните - краткость изложения и простота в установке (займет немного времени, если не обращать внимание на "ставиться будет долго т.к. тянет за собой довольно много зависимостей", но зато становится автоматом и не требует настроек) . The Best!


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: Fredik от 31 Января 2010, 23:46:43
Цитата: VitalVas
та ну нах рддтулл, когдато прийшлось его настраевать, гемору было куча
от самый простой и легкий вариант http://vitalvas.pp.ua/?id=7
Угу. Семь(!) экранов текста это "самый простой и легкий вариант"? Как же! Купите лучше платный модуль и сравните - краткость изложения и простота в установке (займет немного времени, если не обращать внимание на "ставиться будет долго т.к. тянет за собой довольно много зависимостей", но зато становится автоматом и не требует настроек) . The Best!
+100
купил поставил, радуюсь


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: blackjack от 05 Февраля 2010, 10:42:17
Код:
$query="SELECT SUM(`in`)*8/300 AS `averin`,SUM(`out`)*8/300 AS `averout` FROM `x".$year."x".$mon."x".$mday."` WHERE `mid`=".$userid." AND  `time`>UNIX_TIMESTAMP()-300 AND `class`=1";

class - номер направления, изменяйте его на то что вам нужно.


ПС. реально кто-нибудь у себя опробовал творение?


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: VitalVas от 06 Февраля 2010, 12:08:25
ПС. реально кто-нибудь у себя опробовал творение?
нет. некто не хочет завалить свой рабочий биллинг. :)
я лично придерживаюсь такова: "Работае - нетрож"


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: killall от 08 Февраля 2010, 22:46:06
Помогите с проблемой
Код:
cat  /usr/local/share/cacti/scripts/usertraf.pl ertraf.pl
#!/usr/bin/perl

use DBI;
$main_config='/usr/local/nodeny/nodeny.cfg.pl';
require $main_config;

$DSN="DBI:mysql:database=$db_name;host=$db_server;mysql_connect_timeout=$mysql_connect_timeout;";
$dbh=DBI->connect($DSN,$user,$pw,{PrintError=>1});

$userid=$ARGV[0];

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime time;

$year=$year+1900;
$mon=$mon+1;
$query="SELECT SUM(`in`)*8/300 AS `averin`,SUM(`out`)*8/300 AS `averout` FROM `x".$year."x".$mon."x".$mday."` WHERE `mid`=".$userid." AND FROM_UNIXTIME(`time`)>'".$year."-".$mon."-".$mday." ".$hour.":".($min-5).":".$sec."'";


$sth=$dbh->prepare($query);
$sth->execute;

$rv=$sth->fetchrow_hashref;
if ($rv->{averin} && $rv->{averout})
{
print "in:$rv->{averin} out:$rv->{averout}";
}else
{
print "in:0 out:0";

И ошибка
perl  /usr/local/share/cacti/scripts/usertraf.pl
DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND FROM_UNIXTIME(`time`)>'2010-2-8 22:40:37'' at line 1 at /usr/local/share/cacti/scripts/usertraf.pl line 21.
DBD::mysql::st fetchrow_hashref failed: fetch() without execute() at /usr/local/share/cacti/scripts/usertraf.pl line 23.


MYSQL 5.5


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: blackjack от 09 Февраля 2010, 11:33:22
запрос должен быть вот такой

Код:
$query="SELECT SUM(`in`)*8/300 AS `averin`,SUM(`out`)*8/300 AS `averout` FROM `x".$year."x".$mon."x".$mday."` WHERE `mid`=".$userid." AND  `time`>UNIX_TIMESTAMP()-300 AND `class`=1";



Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: killall от 09 Февраля 2010, 15:22:39
запрос должен быть вот такой

Код:
$query="SELECT SUM(`in`)*8/300 AS `averin`,SUM(`out`)*8/300 AS `averout` FROM `x".$year."x".$mon."x".$mday."` WHERE `mid`=".$userid." AND  `time`>UNIX_TIMESTAMP()-300 AND `class`=1";


DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND  `time`>UNIX_TIMESTAMP()-300 AND `class`=1' at line 1 at /usr/local/share/cacti/scripts/usertraf.pl line 21.
DBD::mysql::st fetchrow_hashref failed: fetch() without execute() at /usr/local/share/cacti/scripts/usertraf.pl line 23.

Тоже ощибку выдает. где собака зарыта?


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: blackjack от 09 Февраля 2010, 16:05:27
що виводить команда
Код:
 mysql -V          


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: killall от 09 Февраля 2010, 18:36:22
що виводить команда
Код:
 mysql -V          
mysql  Ver 14.14 Distrib 5.5.1-m2, for portbld-freebsd8.0 (i386) using  5.2


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: blackjack от 10 Февраля 2010, 10:06:28
ви не той mysql-server поставили, цей видаліть і поставте так
Код:
cd /usr/ports/databases/mysql50-server && make WITH_CHARSET=cp1251 install clean

має бути так
Код:
 mysql -V
mysql  Ver 14.12 Distrib 5.0.89, for portbld-freebsd8.0 (i386) using  5.2


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: killall от 14 Февраля 2010, 15:20:52
ви не той mysql-server поставили, цей видаліть і поставте так
Код:
cd /usr/ports/databases/mysql50-server && make WITH_CHARSET=cp1251 install clean

має бути так
Код:
 mysql -V
mysql  Ver 14.12 Distrib 5.0.89, for portbld-freebsd8.0 (i386) using  5.2
Переуствновил. Всеравно ошибку >:(

Причем ругаеться на AND. Если его убрать с запроса, то проходит буз ошибок, но тогда сам скрипт неработает.


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: blackjack от 17 Февраля 2010, 14:10:21
викладіть сюди свій запит, шось ви там намутили з цим запитом.


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: killall от 18 Февраля 2010, 15:02:04
викладіть сюди свій запит, шось ви там намутили з цим запитом.
Код:
cat  /usr/local/share/cacti/scripts/usertraf.pl ertraf.pl
#!/usr/bin/perl

use DBI;
$main_config='/usr/local/nodeny/nodeny.cfg.pl';
require $main_config;

$DSN="DBI:mysql:database=$db_name;host=$db_server;mysql_connect_timeout=$mysql_connect_timeout;";
$dbh=DBI->connect($DSN,$user,$pw,{PrintError=>1});

$userid=$ARGV[0];

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime time;

$year=$year+1900;
$mon=$mon+1;
$query="SELECT SUM(`in`)*8/300 AS `averin`,SUM(`out`)*8/300 AS `averout` FROM `x".$year."x".$mon."x".$mday."` WHERE `mid`=".$userid." AND FROM_UNIXTIME(`time`)>'".$year."-".$mon."-".$mday." ".$hour.":".($min-5).":".$sec."'";


$sth=$dbh->prepare($query);
$sth->execute;

$rv=$sth->fetchrow_hashref;
if ($rv->{averin} && $rv->{averout})
{
print "in:$rv->{averin} out:$rv->{averout}";
}else
{
print "in:0 out:0";

Пробывал и
Код:
$query="SELECT SUM(`in`)*8/300 AS `averin`,SUM(`out`)*8/300 AS `averout` FROM `x".$year."x".$mon."x".$mday."` WHERE `mid`=".$userid." AND  `time`>UNIX_TIMESTAMP()-300";
Тоже ошибка


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: mefer от 18 Февраля 2010, 16:14:23
[root@noc-vv /usr/local/share/cacti/scripts]# ./usertraf.pl
DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND FROM_UNIXTIME(`time`)>'2010-2-18 17:11:52'' at line 1 at ./usertraf.pl line 21.
DBD::mysql::st fetchrow_hashref failed: fetch() without execute() at ./usertraf.pl line 23.


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: blackjack от 22 Февраля 2010, 20:45:39
ну что ж выяснили, сам по себе скрипт нечего запускать, надо передавать ему в качестве аргумента id клиента в базе  ;)

например так
./usertraf.pl 33 только не понимаю зачем это делать в командной строке, если мы это делаем в Data Input Methods вводя строку
Код:
perl <path_cacti>/scripts/usertraf.pl <id>


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: md5 от 08 Апреля 2010, 03:09:17
Поставил все как написано. в итоге что получаю.. в статистике пользователей графики есть... но они пустые. никакой нагрузги за сутки вообще нет.. главное ошибок так же не видно, кроме:

perl ./make_many_graphs.pl

PHP Warning:  substr_count(): Empty substring in /var/www/cacti/cli/add_graphs.php on line 383
ERROR: Unknown input-field ()
Try --list-input-fields


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: blackjack от 08 Апреля 2010, 09:59:18
відкрийте скріпт і відредагуйте ці змінні під себе.
Код:
$uq=300; #первыйх N юзеров для которых надо создать графики
$tmpl_id=36; #graph-template-id читаем это http://www.cacti.net/downloads/docs/html/cli_add_graphs.html
$hid=3; #host-id читаем это http://www.cacti.net/downloads/docs/html/cli_add_graphs.html


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: md5 от 08 Апреля 2010, 15:44:24
Это я сделал же первым делом как только запускал его


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: md5 от 08 Апреля 2010, 18:32:03
У кого нибуть этот модуль заработал кроме пустых графиков ?


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: hayarm от 08 Апреля 2010, 19:16:41
u menya tozhe pusto, neznayu vrode vse delal kak napisanno


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: md5 от 08 Апреля 2010, 21:23:36
Проблема решина.. если что пишите подскажу )


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: blackjack от 09 Апреля 2010, 09:09:59
З допомогою пана lisc була знайдена помилка в скріпті масового створення графіків
1. ось правильний скріпт
Код:
#!/usr/bin/perl

use DBI;

$main_config='/usr/local/nodeny/nodeny.cfg.pl';
require $main_config;

$DSN="DBI:mysql:database=$db_name;host=$db_server;mysql_connect_timeout=$mysql_connect_timeout;";
$dbh=DBI->connect($DSN,$user,$pw,{PrintError=>1});

$uq=300; #первыйх N юзеров для которых надо создать графики
$tmpl_id=36; #graph-template-id читаем это http://www.cacti.net/downloads/docs/html/cli_add_graphs.html
$hid=3; #host-id читаем это http://www.cacti.net/downloads/docs/html/cli_add_graphs.html

for($i=1; $i<=$uq; $i++)
{
$query="SELECT `name` FROM `users` WHERE `id`=$i";

$sth=$dbh->prepare($query);
$sth->execute;

$rv=$sth->fetchrow_hashref;
$username=$rv->{name};

    if ($username ne "")
    {
    system("/usr/local/bin/php /usr/local/share/cacti/cli/add_graphs.php --graph-type=cg --graph-template-id=$tmpl_id --input-fields=\"id=$i\" --graph-title=$username --host-id=$hid --force");
    }
}

2. Щоб ви не мучились з кактусом, викладаю xml-шаблони, імпортуєте їх і по всьому


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: hayarm от 09 Апреля 2010, 14:54:57
все получилась, в Sgraph.pl поправил $request=POST ($link_h, [action=>'login',login_username=>'cacti', login_password=>'cacti'],'Accept' => 'image/png',); над себя


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: bike-prorider от 26 Апреля 2010, 13:03:23
Подскажите - надо ли какой то из вышеперечисленных скриптов запускать из командной строки или по крону?
Или они при вызове контроля загрузки канала со страницы статистики абонента сами запистятся какие нужно?
А то все сделал как указано, а графики пустые, только временная сеточка прорисована и все...


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: bike-prorider от 26 Апреля 2010, 14:09:18
запустил с командной строки

make_many_graphs.pl

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


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: bike-prorider от 26 Апреля 2010, 15:03:49
Поставил этот скрипт на крон каждые 5 мин в течение получаса... Поимел стопроцентную загрузку проца на полчаса, 6000 графиков в кактусе, по 6 на каждого юзверя... причем 6 графиков абсолютно одинаковые по отдельно взятому пользователю... Подскажите что я делаю не так?


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: hayarm от 27 Апреля 2010, 07:38:54
после  perl ./make_many_graphs.pl

создает графики, все норм, но что ето мог быть??


Syntax error: "(" unexpected
Syntax error: "(" unexpected
Syntax error: "(" unexpected
Syntax error: "(" unexpected
Syntax error: "(" unexpected
Syntax error: "(" unexpected
Syntax error: "(" unexpected
Syntax error: "(" unexpected

Graph Added - graph-id: (107) - data-source-ids: (113)

Graph Added - graph-id: (108) - data-source-ids: (114)

Graph Added - graph-id: (109) - data-source-ids: (115)
 

Graph Added - graph-id: (110) - data-source-ids: (116)

Graph Added - graph-id: (111) - data-source-ids: (117)

Graph Added - graph-id: (112) - data-source-ids: (118)
Syntax error: "(" unexpected
Syntax error: "(" unexpected
Syntax error: "(" unexpected
Syntax error: "(" unexpected
Syntax error: "(" unexpected
Syntax error: "(" unexpected

какую сторону посмотреть?


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: blackjack от 27 Апреля 2010, 11:52:19
Поставил этот скрипт на крон каждые 5 мин в течение получаса... Поимел стопроцентную загрузку проца на полчаса, 6000 графиков в кактусе, по 6 на каждого юзверя... причем 6 графиков абсолютно одинаковые по отдельно взятому пользователю... Подскажите что я делаю не так?

вау запалюєш  ;D

пишіть в аську, буду помагати


Название: Re: Модуль контроля полосы пропускания (FREE VERSION)
Отправлено: bike-prorider от 30 Апреля 2010, 08:40:19
вау запалюєш  ;D

пишіть в аську, буду помагати

Тут легко зажигать :)
никакого пояснения по установке... ???
Пришлось будить интуицию, смотреть ихсодники.
Вобщем разобрался, работает, спасибо. Удобная штука...


Название: Re: Модуль контроля полосы пропускания (альтернативная версия)
Отправлено: blackjack от 30 Апреля 2010, 12:39:14
Цитировать
никакого пояснения по установке... Непонимающий
а перший пост це що по вашому?