"Bater" uma rede grande é sempre uma dor de cabeça. Pode ser menos dolorido se a rede for segmentada de forma lógica.
Uma abordagem complementar à lógica é a métrica. Ter uma métrica objetiva que substitua termos menos matemáticos como "muito", "pouco" e "pra caramba" é de suma importância. Estes termos não respondem bem a uma pergunta que tenha a palavra "quanto". A questão é o quê e como medir.
Agora vou abordar como medir e localizar pontos de desconexão na rede usando a base de dados do Freeradius. Uma simples consulta SQL é suficiente:
SELECT
count(radacctid) AS total,
username AS login,
nasipaddress AS ramal,
calledstationid AS VLAN,
callingstationid AS MAC,
SEC_TO_TIME(ROUND(avg(acctsessiontime))) AS tempo
FROM radacct
WHERE acctstarttime > NOW() - INTERVAL 1 DAY
GROUP BY login
HAVING count(radacctid) > 30
ORDER BY ramal, VLAN, MAC
LIMIT 20;
A consulta resulta em informações relevantes desde o início do dia corrente:
- total de novas conexões no período;
- login problemático;
- ramal;
- VLAN (vide segmentação da rede);
- MAC Address (fornece informações sobre o equipamento); e
- tempo médio de vida das conexões.
O texto resultante pode ser trabalhado numa planilha para uma tabulação mais fina, seja por ramal ou VLAN, e pode ajudar a localizar um possível ponto de falha na rede.
Respostas
Atualizei a consulta para que mostre um resultado mais coerente. A ordem das informações pode ser mudadas na linha que começa com "ORDER BY".
muito bom !!!
boa noite,
poderia posta mais informações de como fazer.
Obrigado
A instrução que passei é para usar na linha de comando do MySQL/MariaDB.
No webterminal shell é a opção "mysql". Formate o comando para que fique numa única linha antes de colar no webterminal.
LUA VIA RADIO COMERCIO E INFORMA disse:
Coloquei aqui no meu webterminal shell - opção mysql mas n deu retorno. a tela de saída continua preta
Marco de Freitas disse:
Atualização. Agora com o nome do ramal no lugar do IP.
relatorio.sql.txt
SELECT
count(r.radacctid) AS total,
r.username AS login,
nas.shortname AS ramal,
r.calledstationid AS VLAN,
r.framedipaddress as IPv4,
r.callingstationid AS MAC,
SEC_TO_TIME(ROUND(avg(acctsessiontime))) AS tempo,
ct.bairro,ct.endereco, ct.numero, ct.cidade
FROM radacct as r
INNER JOIN nas on r.nasipaddress = nas.nasname
INNER JOIN sis_cliente as ct on r.username = ct.login
WHERE r.acctstarttime > NOW() - INTERVAL 1 DAY
GROUP BY login
HAVING count(r.radacctid) > 24
ORDER BY ramal, VLAN, MAC;
Muito bacana, isso vai ajudar bastante no suporte pró-ativo por aqui!
Obrigado!!
Boa Noite, eu desenvolvi um add On que faz isso a um tempo atrás.
Faz tudo isso tudo e tambem exibe qual torre está conectado para distinguir mais fácil se o problema é geral.
<?php
// INCLUE FUNCOES DE ADDONS -----------------------------------------------------------------------
include('addons.class.php');
//CONEXAO DO BANCO
include('../conexao_mk.php');
// VERIFICA SE O USUARIO ESTA LOGADO --------------------------------------------------------------
session_name('mka');
if (!isset($_SESSION)) session_start();
if (!isset($_SESSION['mka_logado'])) exit('Acesso negado...');
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>MK - AUTH :: <?php echo $Manifest->{'name'}; ?></title>
<link href="../../../estilos/mk-auth.css" rel="stylesheet" type="text/css" />
<link href="../../../estilos/font-awesome.css" rel="stylesheet" type="text/css" />
<link href="../../../estilos/jquery-ui.css" rel="stylesheet" type="text/css" media="screen" />
<script src="../../../scripts/vue.js"></script>
<script src="../../../scripts/jquery.js"></script>
<script src="../../../scripts/jquery-ui.js"></script>
<script src="../../../scripts/mk-auth.js"></script>
</head>
<body>
<?php include('../../../topo.php');
?>
<center>
<br>
VERSÃO ADDON: <?php echo $Manifest->{'version'}; ?>
<br>
AUTOR ADDON: <?php echo $Manifest->{'author'}; ?>
<br><br>
<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='post'>
<table width="255" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th width="164" scope="row">Dia:</th>
<td width="85"><input name="txtdia" type="text" id="txtdia" size="04" maxlength="2" value="<?php if ($_POST['txtdia'] != '') { echo $_POST['txtdia']; } else { echo date("d"); } ?>"></td>
</tr>
<tr>
<th scope="row">Mes:</th>
<td><input name="txtmes" type="text" id="txtmes" size="04" maxlength="2" value="<?php if ($_POST['txtmes'] != '') { echo $_POST['txtmes']; } else { echo date("m"); } ?>"></td>
</tr>
<tr>
<th scope="row">Ano:</th>
<td><input name="txtano" type="text" id="txtano" size="08" maxlength="4" value="<?php if ($_POST['txtano'] != '') { echo $_POST['txtano']; } else { echo date("Y"); } ?>"></td>
</tr>
<tr>
<th colspan="2" scope="row"><input name="pesquisar" type="submit" id="pesquisar" value="Pesquisar"></th>
</tr>
</tbody>
</table>
</form>
<?
if(isset($_POST['txtdia']))
{
$sqls = " select username, sis_cliente.nome,sis_cliente.ssid , count(1) as total_queda
from radacct
join sis_cliente
on radacct.username = sis_cliente.login
where year(acctstarttime) = ".$_POST['txtano']."
and month(acctstarttime) = ".$_POST['txtmes']."
and day(acctstarttime) = ".$_POST['txtdia']."
and radacct.framedipaddress not like '10.3.3.%' group by username HAVING COUNT(*) > 3 ";
echo "<br>DATA: ".$_POST['txtdia']."/".$_POST['txtmes']."/".$_POST['txtano']."<br><br>";
$query = mysql_query($sqls);
echo "
<table width='100%' border='1' cellpadding='0' cellspacing='0'>
<tbody>
<tr>
<td width='300'>Nome</td>
<td width='300'>Usuario</td>
<td width='300'>Base</td>
<td width='80'>Total de quedas</td>
</tr>
";
while ($row = mysql_fetch_assoc($query)):
//echo $row['username']." - ".$row['nome']." - ".$row['total_queda']."<br>";
echo " <tr>
<td>".$row['nome']."</td>
<td>".$row['username']."</td>
<td>".$row['ssid']."</td>
<td>".$row['total_queda']."</td>
</tr>";
endwhile;
echo "</tbody></table>";
}
?>
</center>
</body>
</html>
<?php include('../../../baixo.php'); ?>
Rodrigo como adiciona ao mk auth? Tem como disponibilizar o arquivo e dizer em qie pasta do sistema deve colocar?
Rodrigo Foureaux disse: