The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Помогите с биллингом, !*! little_roo, 06-Апр-07, 16:13  [смотреть все]
   Добрый день.

У нас сейчас для учета телефонии и инета используется ipsoft+ барсун.

Хотел бы считать голосовой траффик и инет на каком нибудь решении на базе Squid.

Главная задача  - это удобная работа со статистикой.

Может кто используется хорошее решение и подскажет.

  • Помогите с биллингом, !*! Allan_Sundry, 12:04 , 10-Апр-07 (1)
    >   Добрый день.
    >
    >У нас сейчас для учета телефонии и инета используется ipsoft+ барсун.
    >
    >Хотел бы считать голосовой траффик и инет на каком нибудь решении на
    >базе Squid.
    >
    >Главная задача  - это удобная работа со статистикой.
    >
    >Может кто используется хорошее решение и подскажет.


    Могу подсказать решение касательно работы со статистикой - необходимо написать скрипт для введения логов squid в mysql и дальше обрабатывать данные непосредственно в mysql. Срипт можно найти готовый или написать самостоятельно.

    • Помогите с биллингом, !*! little_roo, 11:17 , 11-Апр-07 (2)
         ДА если это возможно - было бы супер

      • Помогите с биллингом, !*! Allan_Sundry, 11:46 , 11-Апр-07 (3)
        >   ДА если это возможно - было бы супер

        Скрипт вносит данные из access.log squid в БД mysql.

        Перед запуском скрипта необходимо:
        1. создать БД в mysql. В БД должна быть таблица access c столбцами time, duration, ip, result, bytes, request, url, login, domen, hierarchy, type
        2. срипт и все файлы отрабатывают в папке /usr/squid2mysql/ - в случае запуска из другой папки необходимо изменить пути в скрипте.
        3. создать файл access.csv
        4. скопировать access.log в access.tmp.

        #!/usr/local/bin/perl

        # соединение с БД
        use Mysql;
        $host = 'имя_сервера_с_БД';
        $database = 'имя_БД';
        $user = 'имя_пользователя';
        $password = 'пароль_пользователя';
        $dbh = Mysql->Connect($host,$database,$user,$password);

        # обработка логфайла и внесение данных в БД
        # access.tmp - копия access.log, как вариант после squid -k rotate
        open(ACCESS,"/usr/squid2mysql/access.tmp");
        while (<ACCESS>)
        {
        chop;
        @a = split ' ';
        $_=$a[0];

                if ($_=@a[6])
                {
                # убираем некоректные символы из запрашиваемого линка перед внесением в БД
                s/\\/_slash_/g;
                s/\"/_quote_/g;
                s/\'/_apos_/g;
                s/\`/_rapos_/g;
                @a[6]=$_;

                # выделение доменов из запрашиваемой пользователем ссылки (потом можем парсить интересы пользователей сравнивая с БД из редиректора rejik)
                s/(h).*?(\/\/)//;
                s/(h).*?(\/\/)//;
                s/www.//;
                s/(\/).*?($)//;
                s/(:).*?($)//;
                @a[10]=$_;
                }

        # формируем csv файл для загрузки в БД (200Mb у меня вносится в БД в течении 5 секунд)
        open(CSV,">>/usr/squid2mysql/access.csv");
                if (@a[0]!='')
                {
                print CSV "@a[0];@a[1];@a[2];@a[3];@a[4];@a[5];@a[6];@a[7];@a[10];@a[8];@a[9];\n";
                }
        close (CVS);

        }

        # внесение информации в БД из сформированного файла
        $sql = "LOAD DATA INFILE '/usr/squid2mysql/access.csv' INTO TABLE access FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'";
        $dbh->Query($sql);

        #$dbh = Mysql->disconnect();
        close (ACCESS);
        exit;

        Если интересно - могу добавить скрипт внесения в БД url из БД rejik.

        Заранее приношу простить за допущенные ошибки недоработки т.к. я все еще работаю над данным скриптом.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру