Мониторинг количества активных пользоателей

Технические вопросы по UTM 5.0
Ответить
Kristian
Сообщения: 95
Зарегистрирован: Ср мар 04, 2009 21:32

Мониторинг количества активных пользоателей

Сообщение Kristian »

Добрый день.
Появилась задача мониторинга количества активных пользователей Internet.
DB - Freebsd 6.2 UTM 5.2.1-008
NAS - IPFW + ng_nat + netflow export


Начал рисовать количество пользователей которым открыт доступ на фаерволе - не подходит.
Хочется снимать статистику пользователей которые реально используют NAS в текущий момент времени ..... (натятся. либо их пакеты проходят через роутер)
Может у кого то есть идеи. или может кто то уже рисует такую статистику ....
Реально подходит любой источник информации дающий цифру активных пользователей .... Дальше в рисовалку я уже сам данные внесу ....

xxxupg
Сообщения: 457
Зарегистрирован: Вс май 02, 2010 10:00

Сообщение xxxupg »

из базы, dhs_sessions_log, если Acct_status_Type=1 - значит активен :)

kirush
Сообщения: 699
Зарегистрирован: Пт фев 04, 2005 13:58

Сообщение kirush »

mpd нет?
А то можно было бы по кол-ву интерфейсов.

Kristian
Сообщения: 95
Зарегистрирован: Ср мар 04, 2009 21:32

Сообщение Kristian »

mpd нет .... в том то и дело, что у меня фаервол на таблицах построен ....
Есть еще правда коммутатор ядра, может оттуда взять количество MAC адресов в таблице по snmp ....


А расскажите пожалуйста подробней о dhs_sessions_log ....
в эту таблицу вносятся данные о текущих сессиях ? или какая информация ?
Acct_status_Type=1 когда ? при включении инета ?
Ведь юзер может включить инет и выключить свой комп ... .
А мне нужны именно активные пользователи

Siny
Сообщения: 88
Зарегистрирован: Ср ноя 16, 2005 13:15
Контактная информация:

Сообщение Siny »

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

xxxupg
Сообщения: 457
Зарегистрирован: Вс май 02, 2010 10:00

Сообщение xxxupg »

Kristian писал(а):А расскажите пожалуйста подробней о dhs_sessions_log ....
в эту таблицу вносятся данные о текущих сессиях ? или какая информация ?
Acct_status_Type=1 когда ? при включении инета ?
Ведь юзер может включить инет и выключить свой комп ... .
А мне нужны именно активные пользователи
если у аккаунта стоит Acct_status_Type=1 значит у него "висит" открытая сессия, и значит он пользуется...

код ниже тебе нужно подставить только
"user_name"
"db_password"
"UTM5"

Код: Выделить всё

<?php
$db_connect=mysql_connect&#40;"127.0.0.1", "user_name", "db_password"&#41; or die &#40;"Connect failed."&#41;;
$db_coonect=mysql_select_db&#40;"UTM5"&#41; or die &#40;"Fatal database query 'USE' error"&#41;;
?>
<HTML>
<HEAD>
<!-- 2009 -->
<style>
&#123;FONT-SIZE&#58; 12px;&#125;
&#123; font-family&#58; Verdana, Arial, Helvetica, sans-serif; &#125;

A&#58;link &#123; COLOR&#58; #003366; TEXT-DECORATION&#58; none  &#125;
A&#58;visited &#123; COLOR&#58; #003366; TEXT-DECORATION&#58; none &#125;
A&#58;active &#123; COLOR&#58; #000099; TEXT-DECORATION&#58; none &#125;
A&#58;hover &#123;COLOR&#58; #000000; TEXT-DECORATION&#58; underline&#125;
Body &#123; background-color&#58;#ffffcc; color&#58;#000000 &#125;
</style>


<TITLE>&#58;&#58;OnLine-stats&#58;&#58;</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Content-Language" content="ru">
<meta name="generator" content="Руки ГОСТ-85">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="refresh" content='60'>

</HEAD>

<BODY BGCOLOR="#000000" LINK=blue VLINK=blue VLINK=blue>

<?

function format_time&#40;$sec&#41;
&#123;
    $a = array&#40;
    86400    => 'дн.', // количество секунд в сутках
    3600     => 'ч.', // количество секунд в часе
    60        => 'мин.', // количество секунд в минуте
    1        => 'сек.' // количество секунд в секунде
    &#41;;
    $out = '';
    foreach &#40;$a as $k=>$v&#41; &#123;
    $tmp = floor&#40;$sec/$k&#41;;
    $out .= &#40;$tmp?$tmp.$v.' '&#58;''&#41;;
    $sec -= $tmp*$k;
    &#125;
    return $out;
    &#125;
function sectime&#40;$stri,$tota&#41; &#123;

$hour=$tota / 3600; settype&#40;$hour,integer&#41;; $rel=ereg_replace&#40;"h","$hour",$stri&#41;;
$min=$tota % 3600 / 60; settype&#40;$min,integer&#41;; if &#40;$min<10&#41; $min="0$min"; $rel=ereg_replace&#40;"m","$min",$rel&#41;;
$sec=$tota % 3600 % 60; settype&#40;$sec,integer&#41;; if &#40;$sec<10&#41; $sec="0$sec"; $rel=ereg_replace&#40;"s","$sec",$rel&#41;;
return&#40;$rel&#41;;
&#125;//sectime

$result = mysql_query &#40;"select account_id,
User_Name,
Acct_Input_Octets,
Acct_Output_Octets,
NAS_Id,
NAS_Port,
&#40;CONCAT_WS&#40;'.',SUBSTRING_INDEX&#40;INET_NTOA&#40;Framed_IP_Address&0xFFFFFFFF&#41;,'.',-1&#41;,
SUBSTRING_INDEX&#40;SUBSTRING_INDEX&#40;INET_NTOA&#40;Framed_IP_Address&0xFFFFFFFF&#41;,'.',-2&#41;,'.',1&#41;,
SUBSTRING_INDEX&#40;SUBSTRING_INDEX&#40;INET_NTOA&#40;Framed_IP_Address&0xFFFFFFFF&#41;,'.',2&#41;,'.',-1&#41;,
SUBSTRING_INDEX&#40;INET_NTOA&#40;Framed_IP_Address&0xFFFFFFFF&#41;,'.',1&#41;&#41;&#41; as fr_ip,
Acct_Session_Time,
Calling_Station_Id,
recv_date from dhs_sessions_log
where Acct_Status_Type=1 or Acct_Status_Type=3"&#41;or die&#40;"online_list.php -> err1 ".mysql_error&#40;$LINK&#41;&#41;; //desc
$count=mysql_num_rows &#40;$result&#41;;
?>

<TABLE align=center BORDER=0 CELLSPACING=1 CELLPADDING=4 BGCOLOR=black>
<TR BGCOLOR="#dddd99" ALIGN=center><TD COLSPAN="11"><b>Online&#58; <?echo $count;?></b></TD></TR>
<TR BGCOLOR="#000000" ALIGN=center>
<TH><FONT color=#dddd99>N</TH>
<TH><FONT color=#dddd99>Пользователь</TH>
<TH><FONT color=#dddd99>IP</TH>
<TH><FONT color=#dddd99>Call from</TH>
<TH><FONT color=#dddd99>NAS</TH>
</TR>
<?
for &#40;$i = 0; $i < mysql_num_rows &#40;$result&#41;; $i++&#41; &#123;
$row = mysql_fetch_object &#40;$result&#41;;
echo" <TR BGCOLOR=#dddd99>\n";
printf &#40;"  <TD ALIGN=center>%s</TD>\n", $i+1&#41;;
printf &#40;"  <TD ALIGN=center><B>%s</A></B></TD>\n", $row->User_Name&#41;;
printf &#40;"  <TD ALIGN=left>%s</TD>\n", &#40;$row->fr_ip&#41;&#41;;
printf &#40;"  <TD ALIGN=CENTER>%s</TD>\n", $row->Calling_Station_Id&#41;;
#printf &#40;"  <TD ALIGN=CENTER>%s&#58;%s</TD>\n", $row->NAS_Id, $row->NAS_Port&#41;;
printf &#40;"  <TD ALIGN=CENTER>%s&#58;%s</TD>\n", $row->NAS_Id,$row->NAS_Port&#41;;
echo &#40;"<TD ALIGN=center></a>
</TD>\n"&#41;;
echo " </TR>\n";
 &#125;

mysql_free_result &#40;$result&#41;;
 ?>
</TABLE> 

Siny
Сообщения: 88
Зарегистрирован: Ср ноя 16, 2005 13:15
Контактная информация:

Сообщение Siny »

У человека нет vpn сессий

Kristian
Сообщения: 95
Зарегистрирован: Ср мар 04, 2009 21:32

Сообщение Kristian »

Да, у меня действительно нет ВПН сессий.
За код спасибо. Думаю он пригодится если не мне, так кому то еще на форуме.
Сделал у себя следующим образом:
снял количество MAC из таблиц коммутатора ядра с помощью snmp
засунул эти данные в rrd и им же отрисовал графики.
Понятно, что это данные так себе, поскольку компы могут светится в этих таблицах и при условии что инет выключен, но общая динамика просматривается. Рисует красивые синусоиды да и по значениям активных пользователей базы с определенной погрешностью совпадает :).

Вообщем snmp + rrd рулит.

Аватара пользователя
TiRider
Сообщения: 568
Зарегистрирован: Сб июн 07, 2008 12:43

Сообщение TiRider »

Чем вам mrtg или nagios не нравится, не пойму...

Ответить