ICMP (Protocolo de mensajes de control
de Internet) es un protocolo que permite administrar información relacionada
con errores de los equipos en red. Si se tienen en cuenta los escasos controles
que lleva a cabo el protocolo IP, ICMP no permite corregir los errores sino que
los notifica a los protocolos de capas cercanas. Por lo tanto, el protocolo
ICMP es usado por todos los routers para indicar un error.
ICMP difiere del propósito de TCP y UDP
ya que generalmente no se utiliza directamente por las aplicaciones de usuario
en la red. La única excepción es la herramienta ping y traceroute, que envían
mensajes de petición Echo ICMP (y recibe mensajes de respuesta Echo) para determinar
si un host está disponible, el tiempo que le toma a los paquetes en ir y
regresar a ese host y cantidad de hosts por los que pasa.
¿Que
es snmp?
SNMP (Simple Network Management Protocol
o Protocolo Simple de administración de red) es uno protocolos del conjunto
definido por la Fuerza de Trabajo en Ingeniería de Internet (IETF o Internet
Engineering Task Force), clasificada en el nivel de aplicación del modelo TCP/IP
y que está diseñado para facilitar el intercambio de información entre
dispositivos de red y es ampliamente utilizado en la administración de redes
para supervisar el desempeño, la salud y el bienestar de una red, equipo de
computo y otros dispositivos.
Los dispositivos administrados son
supervisados y controlados usando cuatro comandos SNMP básicos: lectura,
escritura, notificación y operaciones transversales.
El comando de lectura es usado por un
NMS para supervisar elementos de red. El NMS examina diferentes variables que
son mantenidas por los dispositivos administrados.
El comando de escritura es usado por un
NMS para controlar elementos de red. El NMS cambia los valores de las variables
almacenadas dentro de los dispositivos administrados.
El comando de notificación es usado por
los dispositivos administrados para reportar eventos en forma asíncrona a un
NMS. Cuando cierto tipo de evento ocurre, un dispositivo administrado envía una
notificación al NMS.
Las operaciones transversales son usadas
por el NMS para determinar qué variables soporta un dispositivo administrado y
para recoger secuencialmente información en tablas de variables, como por
ejemplo, una tabla de rutas.
MRTG
MRTG (Multi Router Traffic Grapher) es
una herramienta, escrita en C y Perl por Tobias Oetiker y Dave Rand, que se
utiliza para supervisar la carga de tráfico de interfaces de red. MRTG genera los resultados en archivos HTML con
gráficos, que proveen una representación visual de este tráfico.
MRTG utiliza SNMP (Simple Network Management
Protocol o Protocolo Simple de administración de red) para recolectar los datos
de tráfico de un determinado dispositivo (dispositivos encaminamiento o
servidores), por tanto es requisito contar con al menos un sistema a supervisar
con SNMP funcionando y con dicho
servicio correctamente configurado.
FUNCIONAMIENTO
MRTG ejecuta como un demonio o invocado
desde las tareas programadas del cron. Por defecto, cada cinco minutos
recolecta la información de los dispositivos y ejecuta los scripts que se le
indican en la configuración.
En un primer momento, MRTG consultaba la
información, la procesaba y generaba el informe y las gráficas. En las últimas
versiones, esta información es almacenada en una base de datos gestionada por
RRDtool a partir de la cual, y de forma separada, se generan los informes y las
gráficas
Instalación y configuración de MRTG
Para poder utilizar MRTG es necesario primero
instalar un agente SNMP en los equipos que se desea monitorear. Para instalar
dicho agente en Windows 7 debemos seguir los siguientes pasos:
1. Vamos a Panel de Control (Categorias) -> Programas
-> Turn Windows Features on or off.
2. En
la lista activamos Simple Network Management Protocol (SNMP) y hacemo click en
Ok.
3. Una
vez instalado debemos configurarlo, para lo cual hacemos click derecho en Mi PC
y seleccionamos Administrar.En la lista de la izquierda seleccionamos Servicios
y Aplicaciones -> Servicios, y buscamos Servicio SNMP. Hacemos click derecho
y seleccionamos propiedades. Seleccionamos la pestaña Seguridad y añadimos una
nueva comunidad. Por defecto las comunidades son public para acceso READ_ONLY y
private para acceso READ_WRITE.
Una vez hecho esto ya tenemos configurada
nuestra computadora para monitorearla utilizando SNMP. Ahora es necesario
configurar MRTG para realizar el monitoreo. MRTG utiliza scripts de Perl para
su funcionamiento, por lo que es necesario instalar un intérprete de Perl. El
intérprete que se utilizó es ActivePerl, el cual se instala como cualquier
programa normal.
Para la utilización de MRTG se utilizan
principalmente 3 scripts: cfgmaker, indexmaker y mrtg.
Cfgmaker genera un archivo de configuración
utilizando información del host que se desea monitorear, esta información se
obtiene a través de SNMP. Este comando debe ejecutarse con varios parámetros:
la comunidad y el IP de la máquina que se desea monitorear, el directorio donde
se generarán los reportes y el archivo de configuración que se desea crear.
Estos parámetros se especifican de la siguiente manera:
Mrtg es el script que obtiene la información
de monitoreo del equipo correspondiente, simplemente debe especificarse el
archivo de configuración de dicha máquina:
perl mrtg pc1.cfg
Este script genera varios archivos para cada
interfaz del dispositivo. Es conveniente, cuando se desea monitorear muchos
equipos, obtener todos los reportes en una misma página html, para esto se
utiliza el script indexmaker, al cual debe especificarse el archivo en el que
se desea tener un resumen del monitoreo, y los archivos de configuración de los
equipos a monitorear:
perl indexmaker
–output resumen.html pc1.cfg pc2.cfg pc3.cfg
Una vez ejecutado el indexmaker debe
ejecutarse el mrtg para cada uno de los archivos de configuración.
Es necesario tomar en cuenta que todos los
archivos generados por mrtg deben encontrarse en la misma carpeta, y que esta
sea accesible desde el servidor apache si se desea ejecutar el monitoreo desde
la nube.
Utilización de MRTG desde PHP
Para la realización del monitoreo desde php
se siguieron los siguientes pasos:
1. Primeramente
se creó la página principal (index.php) con un formulario para seleccionar una
opción para monitoreo: agregar un nuevo equipo, remover un equipo y mostrar
gráficas. Este formulario envía sus datos a la página snmp.php.
2. Para
tener una lista de los equipos a monitorear se utilizó una base de datos MySql.
3. En
caso de que se desee agragar un nuevo usuario, se muestra un formulario para
llenar los datos correspondientes. Estos datos se envían a la misma página y se
ejecuta el siguiente código para introducirlo a la base de datos y crear el
archivo de configuración:
if(isset($_POST['agregar'])){
exec("perl
c:\AppServ\www\mrtg\bin\cfgmaker $_POST[comunidad]@$_POST[ip] --global
\"WorkDir: c:\\AppServ\\www\\archivos\\practicas\\System\\snmp\"
--output $_POST[archivo].cfg");
$db = new
mysqli("localhost", "root", "yi2junte",
"monitoreo");
$db->query("insert
into equipos values(0, '$_POST[nombre]', '$_POST[ip]', '',
'$_POST[archivo].cfg', '$_POST[comunidad]')");
echo
"<p>El archivo de configuración ha sido creado
correctamente.</p>";
echo '<p><a
href=".">Volver</a></p>';
}
4. Para
mostrar las gráficas de monitoreo se ejecuta el indexmaker para todos los
equipos almacenados en la base de datos, y luego se ejecuta mrtg para cada uno
de ellos:
elseif($_POST['action'] == 2){
$db
= new mysqli("localhost", 'root', 'yi2junte', 'monitoreo');
$res
= $db->query("select * from equipos");
$aux
= "";
while($fila
= $res->fetch_array()){
$aux
.= ' '.$fila['Conf'];
}
echo
$aux;
exec('perl
"c:\AppServ\www\mrtg\bin\indexmaker" --output
"c:\AppServ\www\archivos\practicas\System\snmp\monitoreo.html"'.$aux);
$res
= $db->query("select * from equipos");
while($fila
= $res->fetch_array()){
exec('perl
"c:\AppServ\www\mrtg\bin\mrtg" '.$fila[Conf]);
}
echo '<p><a
href="snmp/monitoreo.html">Gráficas</a></p>';
}
Es necesario observar que como los archivos
de mrtg y los de la interfaz php se encuentran en diferentes directorios es
necesario especificar la ruta completa a los scripts de mrtg. También se
observó que desde php la salida de los scripts no puede ser observada, esto es
un problema de compatibilidad entre perl y php en windows, el cual no soporta
redirecciones de la salida estándar.
No hay comentarios:
Publicar un comentario