SERVIDOR DE MONITORIZACION CON SMS INTEGRADO

Bueno el capitulo lo indica todo, el servidor que he montado esta vez es una maquina que se encarga de monitorizar recursos en otras maquinas y si localiza algun error me manda un mensaje a mi movil.

Hardware utilizado:

Para la monitorizacion de los recursos he utilizado una maquina de lo mas simple que he encontrado. Un Pentium II a 300 Ghz con 64 mb de memoria y 3 gb de disco duro. Le sobran recursos. NECESARIO QUE TENGA PUERTO COM.

El telefono movil que estoy utilizando es un Nokia 7110, se que funciona a la perfeccion con Nokia 6210

Funciona tambien, aunque no lo he probado, con modem GSM o GPRS Siemens o un modem GSM Nokia 32 o un modem GSM Nokia Premicell o un modem GSM Wavecom (Probados por Andres Seco).

El cable que he utilizado para conectar el movil al puerto COM del ordenador es el original de Nokia RS 232 DLR-3P valido para telefonos 6210, 6250, 6310 y 7110. Lo he comprado en www.optize.es <http://www.optize.es/>.

Todos los telefonos que vayais probando y consigais que funcionen decidmelo por mail a la cuenta juanmi@planalfa.es <mailto:juanmi@planalfa.es>
y lo ire añadiendo a este manual.

La plataforma de nuevo ha sido Debian Woody. La version con la que he hecho el servidor ha sido la estable en este momento, la 3.0 r4.

Instalacion de Debian Woody.

La instalacion de Debian, como todas, esta vez he utilizado lo mas estable, Kernel por defecto y ningun paquete de BackPorts.

La instalacion completamente basica, no instalo nada durante el proceso de instalacion. Solamente el sistema base.

Instalacion del Telefono en el Ordenador

Bueno aqui esta el primer paso que debemos realizar, debemos bajarnos una aplicacioncita muy parecida a HyperTerminal de Windows, la necesitaremos para ir comprobando que las comunicaciones entre el telefono y ordenador van bien.

Todas la pruebas del manual estan realizadas con el telefono movil Nokia 6210. Cada uno de vosotros teneis que hacer esto ya que cambia con el telefono. Si vais a usar este podeis copiarlo sin hacer ninguna prueba.

El programa que tenemos que instalar es minicom, pues adelante:

sms:/# apt-get install minicom

No recuerdo si tiene alguna dependecia.
Una vez instalado comenzemos las configuraciones.

sms:/# minicom -s

            ┌─────[configuration]──────┐
            │ Filenames and paths      │
            │ File transfer protocols  │
            │ Serial port setup        │
            │ Modem and dialing        │
            │ Screen and keyboard      │
            │ Save setup as dfl        │
            │ Save setup as..          │
            │ Exit                     │
            │ Exit from Minicom        │
            └──────────────────────────┘

Pinchremos la opcion Serial Port setup y nos saldra esta pantallita:

    ┌───────────────────────────────────────────────────────────────────────┐
    │ A -    Serial Device      : /dev/ttyS0                                │
    │ B - Lockfile Location     : /var/lock                                 │
    │ C -   Callin Program      :                                           │
    │ D -  Callout Program      :                                           │
    │ E -    Bps/Par/Bits       : 19200 8N1                                 │
    │ F - Hardware Flow Control : Yes                                       │
    │ G - Software Flow Control : No                                        │
    │                                                                       │
    │    Change which setting?                                              │
    └───────────────────────────────────────────────────────────────────────┘
Iremos seleccionando las variables que necesitamos. 

La parte A indica en que puerto COM o ttyS al que tenemos conectado el cable que va al telefono. Yo en mi caso lo tengo al COM 0 (Acordaos que el primer numer es un 0, vamos que si teneis en vuestro ordenador 2 puerto com se llamaran COM 0 y COM 1 o ttyS0 y ttyS1).

De la parte B, C y D, no tocaremos nada. Es decir que si lo teneis cambiado poned lo que pone aqui.

La parte E, es la importante junto con la A claro. Aqui seleccionaremos la velocidad con la que nos comunicaremos con el movil, la paridad, el bit de stop y el numero de bits.

En la parte F pondremos YES 

y en la G NO.

Para cambiar los datos basta con decirle, por ejemplo A y poner lo que necesitamos, y luego pulsar enter, si pulsamos ESC volveremos al estado anterior. 

Una vez que tengamos todo cambiado bastara con pulsar ENTER para volver a la pantalla anterior.

            ┌─────[configuration]──────┐
            │ Filenames and paths      │
            │ File transfer protocols  │
            │ Serial port setup        │
            │ Modem and dialing        │
            │ Screen and keyboard      │
            │ Save setup as dfl        │
            │ Save setup as..          │
            │ Exit                     │
            │ Exit from Minicom        │
            └──────────────────────────┘

Pulsaremos la opcion  "Save setup as dfl" nos grabara las opciones como opciones por defecto.

Muy bien si pulsamos exit intentara la conexion con el movil:

                            ┌───────────────────────┐
                            │                       │
                            │  Initializing Modem   │
                            │                       │
                            └───────────────────────┘

Despues de inicializado el modem nos saldra una pantalla donde podemos escribir, pongo los comandos utilizados, en negrita, para ver que el movil responde:

Welcome to minicom 1.83.1

OPTIONS: History Buffer, F-key Macros, Search History Buffer, I18n
Compiled on Nov 21 2001, 00:35:58.

Press CTRL-A Z for help on special keys

at
OK
ati
Nokia Mobile Phones

OK
ati2
SW05.01

OK

Perfecto, el ordenador se comunica con el movil a la perfeccion.

Os preguntareis para que necesitamos hacer todo esto, pues para sacar una linea que necesita alamin para comunicarse con el movil. 

Aqui tengo que deciros que esto SOLO me ha funcionado con el movil 6210, NO funciona bien con el 7110, me refiero a la comunicacion de minicom con el telefono, pero con las mismas configuraciones que he dejado arriba, alamin lo hace funcionar a la perfeccion.

Bien saquemos la linea que necesita alamin.

Despues de quedarnos en la pantalla de arriba Pulsaremos CTRL+A y luego la tecla Z y nos saldra un menu.

     ┌───────────────────────────────────────────────────────────────────┐
     │                     Minicom Command Summary                       │
     │                                                                   │
     │          Commands can be called by CTRL-A <key>                   │
     │                                                                   │
     │               Main Functions                  Other Functions     │
     │                                                                   │
     │ Dialing directory..D  run script (Go)....G | Clear Screen.......C │
     │ Send files.........S  Receive files......R | cOnfigure Minicom..O │
     │ comm Parameters....P  Add linefeed.......A | Suspend minicom....J │
     │ Capture on/off.....L  Hangup.............H | eXit and reset.....X │
     │ send break.........F  initialize Modem...M | Quit with no reset.Q │
     │ Terminal settings..T  run Kermit.........K | Cursor key mode....I │
     │ lineWrap on/off....W  local Echo on/off..E | Help screen........Z │
     │                                            | scroll Back........B │
     │                                                                   │
     │      Select function or press Enter for none.                     │
     │                                                                   │
     │             Written by Miquel van Smoorenburg 1991-1995           │
     │             Some additions by Jukka Lahtinen 1997-1999            │
     │             i18n by Arnaldo Carvalho de Melo 1998                 │
     └───────────────────────────────────────────────────────────────────┘

Bien pulsaremos la opcion  "Quit with no reset.Q" y nos preguntara si queremos dejarlo sin resetearlo. SI.

Estaremos de nuevo en la linea de comandos de debian y ahi pulsaremos el siguiente comando:

sms:~# stty -g </dev/ttyS0
1:0:800008be:0:3:1c:7f:15:4:5:1:0:11:13:0:0:12:f:17:16:0:0:2f:0:0:0:0
:0:0:0:0:0:0:0:0:0

Esa es la linea que necesitamos. La copiaremos en algunarchivo para su posterior utilizacion. (Cuidado con el salto de linea)

Esta linea funciona a la perfeccion con los moviles 7110 y 6210 de Nokia, conectado al ttyS0. Si teneis uno de estos moviles os podeis saltar todos los pasos anteriores y usar la linea qu he dejado mas arriba.

Instalacion de ALAMIN.

Sigamos adelante instalando ALAMIN.

sms:~# apt-get install alamin-server alamin-client

Vale, perfecto ya tenemos instalado ALAMIN. Empezaremos a configurar la parte cliente.

sms:~# vi /etc/alamin/gsgc.conf

Lo unico que debemos cambiar obligatoriamente es la linea:

host gsm

y la cambiaremos por 

host localhost

De todo lo demas no he tocado nada las configuraciones que deja por defecto en la parte cliente de ALAMIN.

Configuremos ahora la parte Servidor de ALAMIN.

sms:~# vi /etc/alamin/gsgd.conf

En este archivo debemos cambiar la linea:

gsmdevice at text /dev/gsm

por 

gsmdevice at text /dev/ttyS0

o el puerto com que tengamos

Ademas debemos cambiar la linea que pone 

sttystring

por 

sttystring 1:0:800008be:0:3:1c:7f:15:4:5:1:0:11:13:0:0:12:f:17:16:0:0:2f:0:0:0:0
:0:0:0:0:0:0:0:0:0

Aqui pondremos la linea que nos dio el minicom, para esto lo necesitabamos.
NO tenemos que hacer mas cambios, probaremos directamente a mandarnos un mensaje al movil:

sms:~#  gsgc --send 666424356 "Mensaje de prueba con SERVIDOR SMS"

¿Nos ha llegado?

Podemos ver los archivos de log:

sms:~# vi /var/log/alamin/gsgd-accounting.log

OUT,OK,queue,localhost 127.0.0.1,666424356,default,Thu Apr 21 13:45:20 2005,XX Mensaje de prueba con SERVIDOR SMS XX
OUT,OK,at,localhost 127.0.0.1,666424356,default,Thu Apr 21 13:45:34 2005,XX Mensaje de prueba con SERVIDOR SMS XX

Si os dais cuenta la primera linea es la que recoje la entrada del mensaje en el servidor y la segunda que ha conseguido enviarlo bien.

Instalacion de MON (Monitorizador de Red)

Bueno instalaremos mon de la siguiente forma:

sms:~# apt-get install mon fping

Muy bien ya lo tenemos instalado, ahora solo tenemos que configurar el archivo mon.cf:

sms:~# vi /etc/mon/mon.cf

En este archivo debemos configurar los recursos que queramos monitorizar, os dejo el siguiente manual para que podais hacerlo:

http://antares.escomposlinux.org/?p=41

Para que mon utilize el movil para mandarnos el mensaje en caso de fallo debemos hacer lo siguiente:

Nos crearemos un archivo llamado alamin.alert y lo meteremos en la carpeta que tiene mon todas las alertas y meteremos el codigo de Andres Seco que dejo ahi abajo.

sms:~# vi /usr/lib/mon/alert.d/alamin.alert

#!/usr/bin/perl
#
# alamin.alert - GSM SMS alert for mon using Alamin GSM SMS Gateway
# v1.3 20010123
#
# Copyright (C) 2001, Andres Seco, AndresSH@alamin.org
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#

=head1 NAME

alamin.alert - GSM SMS alert for mon using Alamin GSM SMS Gateway

=head1 SYNOPSIS

B<alamin.alert> I<-p port> I<-m host> I<-i priority> I<-s service> I<-g group> I<-t time> I<-u>

=head1 DESCRIPTION

B<alamin.alert> calls gsgc (the Alamin GSM SMS Gateway client) to send
messages using selected priority.

More information on Alamin GSM SMS Gateway at http://alamin.sourceforge.net

=head1 PARAMETERS

-p port         SMS gateway port (mapped to --port option of gsgc)
-m host         SMS gateway host (mapped to --host option of gsgc)
-i priority     priority (mapped to --priority option of gsgc)

=head1 EXAMPLE

line to be used inside mon.cf

alert alamin.alert -p 11201 -m gsm.domain.com -i 1 666111222 666111333

=head1 AUTHOR

The script was written by Andres Seco <AndresSH@alamin.org> based from a
template for an alert from Jim Trocki, trokij@transmeta.com

=cut
    
use Getopt::Std;
getopts ("p:m:i:s:g:h:t:l:u");

$summary=<STDIN>;
chomp $summary;

$t = localtime($opt_t);
($wday,$mon,$day,$tm) = split (/\s+/, $t);

my $destinations = join (',', @ARGV);

$ALERT = $opt_u ? "UPALERT" : "ALERT";

my $texttobesent = "MON - ".$ALERT."\nGroup: $opt_g\nService: $opt_s\nDate: $wday $mon $day $tm\nSummary: $summary";

my @gsgcpars = ();

push @gsgcpars, "gsgc";

if ($opt_p) {
  push @gsgcpars, "--port";
  push @gsgcpars, $opt_p;
}

if ($opt_m) {
  push @gsgcpars, "--host";
  push @gsgcpars, $opt_m;
}

if ($opt_i) {
  push @gsgcpars, "--priority";
  push @gsgcpars, $opt_i;
}

push @gsgcpars, "--send";
push @gsgcpars, $destinations;
push @gsgcpars, $texttobesent;

system @gsgcpars;

La forma de utilizar alamin en mon es la siguiente, os dejo mi archivo mon.cf para que veais como lo hace:

#
# Opciones globales
#
cfbasedir   = /etc/mon
alertdir    = /usr/lib/mon/alert.d
mondir      = /usr/lib/mon/mon.d
maxprocs    = 20
histlength = 100
randstart = 60s

#
# Privilegios de cada usuario
#

list:          all
reset:         root,admin
loadstate:     root
savestate:     root

#
# DEJAR LINEAS EN BLANCO ENTRE LAS LINEAS. Parte HOSTGROUPS Los grupos de
# hosts nos serviran para agrupar maquinas que requieran de un servicio
# de monitorizacion similar, agruparlas bajo un seudonimo, y utilizarlo
# para simplificar la definicion de monitores posteriormente.
hostgroup mailhost 85.35.23.90

hostgroup workstations 10.19.4.23 10.19.4.103

hostgroup wwwservers www.google.es www.yahoo.com 

hostgroup ftpservers 85.123.144.23

hostgroup dnsservers 10.19.4.3

hostgroup mon 10.19.4.22
#
# Zona WATCH. Una linea watch con el nombre del hostgroup sobre el que se hara l
a
# monitorizacion. Dentro de esta, tantas secciones service como servicios
# queramos monitorizar, con sus parametros propios.
# Dentro de cada servicio tantos periodos como deseemos que definiran
# las acciones a tomar en caso de alarma.
#

# Servidores WEB

watch wwwservers
 service http
  description Ver si el servicio http funciona en webservers.
  interval 1m
  monitor http.monitor
  allow_empty_group
   period wd {Mon-Sun} hr {0am-24pm}
   alert file.alert /var/log/mon.log
   upalert file.alert /var/log/mon.log
   alert alamin.alert -p 11201 -m localhost  -i 1 662654765
   upalert alamin.alert -p 11201 -m localhost  -i 1 662654765
   alertevery 45m

# Estaciones de trabajo

watch workstations
 service ping
  description Ping contra estaciones de trabajo.
  interval 1m
  monitor ping.monitor
  allow_empty_group
   period wd {Mon-Sun} hr {0am-24pm}
   alert file.alert /var/log/mon.log
   upalert file.alert /var/log/mon.log
   alert alamin.alert -p 11201 -m localhost  -i 1 662654765
   upalert alamin.alert -p 11201 -m localhost  -i 1 662654765
   alertevery 45m

# Servidor de correo

watch mailhost
 service smtp
  description Ver si el servicio SMTP esta funcionando contra Servidores de Corr
eo.
  interval 1m
  monitor smtp.monitor
  allow_empty_group
  period wd {Mon-Sun} hr {0am-24pm}
   alert file.alert /var/log/mon.log
   upalert file.alert /var/log/mon.log
   alert alamin.alert -p 11201 -m localhost  -i 1 662654765
   upalert alamin.alert -p 11201 -m localhost  -i 1 662654765
   alertevery 45m
 service pop3
  description Ver si el servicio POP3 esta funcionando contra Servidores de Corr
eo.
  interval 1m
  monitor pop3.monitor
  allow_empty_group
  period wd {Mon-Sun} hr {0am-24pm}
   alert file.alert /var/log/mon.log
   upalert file.alert /var/log/mon.log
   alert alamin.alert -p 11201 -m localhost  -i 1 662654765
   upalert alamin.alert -p 11201 -m localhost  -i 1 662654765
   alertevery 45m

# Servidores FTP

watch ftpservers
 service ftp
  description Prueba conexiones ftp.
  interval 1m
  monitor ftp.monitor
  allow_empty_group
   period wd {Mon-Sun} hr {0am-24pm}
   alert file.alert /var/log/mon.log
   upalert file.alert /var/log/mon.log
   alert alamin.alert -p 11201 -m localhost  -i 1 662654765
   upalert alamin.alert -p 11201 -m localhost  -i 1 662654765
   alertevery 45m

# Servidores DNS

watch dnsservers
 service dns
  description Prueba conexiones DNS
  interval 1m
  monitor dns.monitor -zone arco2000.es -master 10.19.4.3
  allow_empty_group
   period wd {Mon-Sun} hr {0am-24pm}
   alert file.alert /var/log/mon.log
   upalert file.alert /var/log/mon.log
   alert alamin.alert -p 11201 -m localhost  -i 1 662654765
   upalert alamin.alert -p 11201 -m localhost  -i 1 662654765
   alertevery 45m

# Servidores MON

watch mon
 service mon
  description Prueba el servidor MON
  interval 1m
  monitor mon.monitor
  allow_empty_group
   period wd {Mon-Sun} hr {0am-24pm}
   alert file.alert /var/log/mon.log
   upalert file.alert /var/log/mon.log
   alert alamin.alert -p 11201 -m localhost  -i 1 662654765
   upalert alamin.alert -p 11201 -m localhost  -i 1 662654765
   alertevery 45m

A mi mon me dio unos errores al intentar monitorizar, eran problemas de permisos, observad cada archivo que os vaya fallando y dadle unos permisos aceptables.

Sobre los tipos de monitores leeros el manual que os he dejado mas arriba. A mi me falta un monitorizador, el Terminal Services de Windows que no he conseguido por ningun sitio, si lo conseguis o podeis programarlo, poneos en contacto conmigo en juanmi@planalfa.es

Solo falta dar la gracias, sin ellos me hubiese sido imposible realizar el servidor y el manual:

Andres Seco (Programador del paquete ALAMIN) mil gracias Andres, sigue asi.
Alfonso de MicroAlcarria, me puso en contacto con Andres.
Daniel Espilez amigo y comercial de Vodafone, me ayudo a encontrar moviles viejos.
Agustin Calvo Flores, siempres estas ahi.
A vosotros que juntos mejoraremos este documento.

Muchas gracias a todos y que lo disfruteis.

Saludos.

Juanmi.