Mostrando entradas con la etiqueta monitorización. Mostrar todas las entradas
Mostrando entradas con la etiqueta monitorización. Mostrar todas las entradas

lunes, 17 de febrero de 2014

Script para enviar totales de tráfico de red vía email

El siguiente código fuente muestra cómo podemos enviar vía email los totales de tráfico de red obtenidos a través del software ipfm (IP Flow-meter). Realizando una correcta configuración de ipfm podemos obtener en un archivo con el formato ipfm-global-YYYY-mm-dd.log el volumen de tráfico generado diariamente (por ejemplo). Estos totales pueden ser volcados a un archivo de texto que constituirá el cuerpo del mensaje de correo electrónico que enviaremos a nuestra cuenta de monitorización.

De manera paralela, a través de este archivo de totales podemos incorporar en nuestro apache un script realizado en php que, tomando los datos de dicho archivo, nos mostrará en formato web lo descargado por los equipos que forman nuestra red. Puedes encontrár más información sobre esto en: http://scripfm.sourceforge.net/



Este es el código fuente:

#!/bin/bash

#Script que envía el estado del log de tráfico de ipfm a través
#de un mensaje de correo electrónico enviado desde la consola

servidor="[nombre del servidor]"
hoy=`date +%Y_%d_%m`
actual=`date +%Y-%m-%d`

if [ -f estadotrafico.txt ]
then
    rm estadotrafico.txt
else
    touch estadotrafico.txt
fi

echo "Subject: Estado del tráfico $servidor" >> estadotrafico.txt
echo
echo
echo "Trafico: $hoy" >> estadotrafico.txt
#Enviamos contenido archivo con totales diarios
cat /var/log/ipfm/ipfm-global-$actual.log >> estadotrafico.txt


sudo ssmtp tudirecciondecorreo@dominio.com < estadotrafico.txt

viernes, 7 de febrero de 2014

Instalador servicio correo ssmtp para alertas por email

Complementando las entradas de script de instalación y configuración automática de servicios en un servidor, os propongo una posible solución para dotar a un servidor de capacidad para enviar correos electrónicos de alerta a su administrador. Para ello, se realiza la instalación del servicio ssmtp (servicio de correo electrónico simple) y su correspondiente configuración modificando los archivos ssmtp.conf y revaliases, según la configuración que se indique desde teclado.


Para comprobar el correcto funcionamiento del servicio ssmtp, una vez haya sido instalado y configurado desde el script, sólo tendremos que teclear en la consola de comandos algo como esto:

ssmtp dirección_destino@loquesea.com < mensaje.txt

donde mensaje.txt deberá tener un formato adecuado, tal que así:

from: servidor que envia la alerta
subject: asunto de la alerta
# línea en blanco
texto de la alerta, tantas líneas como se necesiten

En este enlace puedes encontrar más información relacionada con el envío y preparación de correos electrónicos a través de consola. Y hacia el final de esta otra entrada podrás encontrar la primera versión de instalación automática del servicio ssmtp y envío de alertas por email.

En próximas entradas de este mismo blog, os mostraremos scripts que construirán mensajes de alerta automáticos en función del servicio/os que puedan haber caído.

#!/bin/bash

#Script que instala y configura servicio
#de correo electrónico ssmtp

#-------------------------------------
#     FUNCIONES
#-------------------------------------

function eresroot()
{
    if [ "$LOGNAME" != "root" ]              
    then
        echo "Este script debe ser ejecutado con privilegios de root."
        exit 1
    fi 
}

function configura()
{

    #1) Saco copia de seguridad
    if [ -f /etc/ssmtp/ssmtp.conf.old ]
    then
        echo "No se sacará copia de seguridad de ssmtp.conf"
    else
        cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.old
    fi

    if [ -f /etc/ssmtp/revaliases.old ]
    then
        echo "No se sacará copia de seguridad de revaliases"
    else
        cp /etc/ssmtp/revaliases /etc/ssmtp/revaliases.old
    fi


    #2) Modifico ssmtp.conf

    read -p "Introduce el usuario de gmail (sin @gmail.com): " usuario_gmail
    read -s -p "Introduce la contraseña: " clave_gmail

    echo "root=$usuario_gmail@gmail.com
mailhub=smtp.gmail.com:587
rewriteDomain=
hostname=$usuario_gmail
AuthUser=$usuario_gmail@gmail.com
AuthPass=$clave_gmail
FromLineOverride=YES
UseSTARTTLS=YES " > /etc/ssmtp/ssmtp.conf

    #3) Modifico revaliases
    echo "root:$usuario_gmail@gmail.com:smtp.gmail.com:587
tu_usuario_linux:$usuario_gmail@gmail.com:smtp.gmail.com:587" >> /etc/ssmtp/revaliases

}

function instala()
{

    which ssmtp
    if [ $? -ne 0 ]
    then
        # Hacemos una instalación silenciosa y sin confirmación
        sudo apt-get install -y -q=2 ssmtp
        if [ $? -eq 0 ]
        then
            echo "Instalación correcta de ssmtp"
            configura
        else
            echo "Error en la instalación de ssmtp"
            exit 1
        fi
    else
        configura   
    fi


}


#-------------------------------------
#     PROGRAMA PRINCIPAL
#-------------------------------------
eresroot
instala



miércoles, 5 de febrero de 2014

Preinstalación automática de Servidor (Shell Script)

El código fuente de este script nos puede ser muy útil para realizar la instalación inicial de los servicios básicos de un Servidor. Entre otros, podremos instalar: Apache, PHP, MySQL, SSH, Servicio de correo electrónico, sistema de alertas por email, Webmin, PHPMyadmin, etc. Todo de una manera muy automática y relativamente cómoda.

Revísalo y cambia lo que necesites, podría tener algún bug. Es código directamente generado en clase de 2ºSMR - 2014 IES Oretania.


#!/bin/bash

#Este script sirve para preparar rápidamente un
#servidor con los servicios básicos más comunes.

#Además, es posible instalar webmin a través de 
#un script previo que se publicó en este mismo blog.
#Otras funciones añadidas permiten instalar phpmyadmin,
#así como habilitar un servidor básico de correo
#electrónico para que el servidor pueda enviar
#alertas por email a su administrador del sistema.

#----------------------------------------------------
#    FUNCIONES
#----------------------------------------------------

function menu()
{

    clear
    echo "*********** MENU SERVICIOS ***********"
    echo "*                     *"
    echo "*  1.- Iniciar asistente instalación *"
    echo "*  2.- Instalar Webmin               *"
    echo "*  3.- Instalar Php MyAdmin          *"
    echo "*  4.- Alertas por email             *"
    echo "*  5.- Salir                         *"
    echo "*                     *"
    echo "**************************************"

}

function asistente()
{

    which tasksel > /dev/null 2>&1
    if [ $? -ne 0 ]
    then   
        echo "Inicializando asistente, un momento por favor..."
        apt-get install -y tasksel #> /dev/null 2>&1
        if [ $? -ne 0 ]
        then
            echo "Error, no puede ejecutarse Tasksel."
            read -p "Pulse una tecla para finalizar."
            exit 1
        fi   
    fi
    tasksel

    #Instalaremos lo que necesitemos a través de esta
    #herramienta.

}

function phpmyadmin()
{

    which phpmyadmin > /dev/null 2>&1
    if [ $? -ne 0 ]
    then   
        echo "Instalando phpmyadmin, un momento por favor..."
        apt-get install -y phpmyadmin #> /dev/null 2>&1
        if [ $? -ne 0 ]
        then
            echo "Error, no puede ejecutarse phpmyadmin."
            read -p "Pulse una tecla para finalizar."
            exit 1
        fi   
    fi
    #Abrimos phpmyadmin para que el usuario empiece a usarlo
    firefox http://localhost/phpmyadmin

}

function webmin()
{
    #Llamamos al script de instalación de webmin
    ./instalawebmin.sh
}

function alertasemail()
{
    which ssmtp > /dev/null 2>&1
    if [ $? -ne 0 ]
    then   
        echo "Instalando ssmtp, un momento por favor..."
        apt-get install -y ssmtp #> /dev/null 2>&1
        if [ $? -ne 0 ]
        then
            echo "Error, no puede ejecutarse ssmtp."
            read -p "Pulse una tecla para finalizar."
            exit 1
        fi   
    fi

   
    read -p "Indica la dirección de destino de las alertas: " email_alertas

    if [ -f /etc/ssmtp/ssmtp.conf ]
    then
        #sacamos copia seguridad
        if [ -f /etc/ssmtp/ssmtp_old.conf ]
        then
            echo "no se sacará copia de ssmtp.conf"
        else
            cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp_old.conf
            read -p "Indica la dirección de email del servidor(sin @gmail.com): " email_servidor
            #Solicitamos contraseña de manera oculta
            echo "Indica la constraseña de la cuenta: "   
            read -s clave
        fi
        #comprobación errores?


        #Volcamos aquí toda la configuración a
        #los dos archivos de configuración de ssmtp
        echo -e "root=$email_servidor@gmail.com \n
mailhub=smtp.gmail.com:587 \n
#rewriteDomain= \n
hostname=$email_servidor \n
AuthUser=$email_servidor@gmail.com \n
AuthPass=$clave \n
FromLineOverride=YES \n
UseSTARTTLS=YES" > /etc/ssmtp/ssmtp.conf
       
    else

        echo "Error al intentar configurar ssmtp: ssmtp.conf."
        exit 1
    fi

    if [ -f /etc/ssmtp/revaliases ]
    then
        #sacamos copia seguridad
        if [ -f /etc/ssmtp/revaliases_old ]
        then
            echo "no se sacará copia de ssmtp.conf"
        else
            cp /etc/ssmtp/revaliases /etc/ssmtp/revaliases_old
        fi
       
        #Modificamos ahora el archivo
        echo "root:$email_servidor@gmail.com:smtp.gmail.com:587" >> /etc/ssmtp/revaliases
        #el nombre de usuario debe de ser uno con privilegios de
        #administrador
        echo "alumno:$email_servidor@gmail.com:smtp.gmail.com:587" >> /etc/ssmtp/revaliases
    else
        echo "Error al intentar configurar ssmtp: revaliases.conf"
        exit 1
    fi
   
    #Enviamos un email de confirmación
    ssmtp $email_alertas < correo.txt

    
    #Donde correo.txt debe tener el formato
    #from: origen del mensaje
    #subject: asunto del mensaje
    #texto del mensaje que se quiere enviar

}




#----------------------------------------------------
#    PROGRAMA PRINCIPAL
#----------------------------------------------------


menu
opcion=""
while [ "$opcion" == "" ]
do
    read -p "Introduce la opción elegida: " opcion
    case $opcion in
        1)asistente;read;;
        2)echo "Instalando Webmin...";webmin;;
        3)echo "Instalando Php MyAdmin";phpmyadmin;;
        4)echo "Alertas por email";alertasemail;;
        5)echo "Finalizando script";exit 0;;
        *)echo "Opción no válida";opcion="";;
    esac
    menu   
    opcion=""
   
done

 El correo electrónico que se ha de generar en el archivo correo.txt que se ha de enviar en la función de "alertasemail" tendría la siguiente forma:

from: servidor que envía la alerta
subject: asunto de la alerta
Este es un correo de confirmación de la correcta instalación y configuración del servicio de alertas por correo electrónico.

jueves, 20 de junio de 2013

Análisis de tráfico de red con ipfm


Cuando queremos tener nuestra red relativamente controlada se hace necesario utilizar ciertas herramientas que nos faciliten la tarea. En este caso vamos a utilizar una herramienta para Linux llamada ipfm o IP Flow Meter. 

Con esta herramienta podemos tener una medición del tráfico de subida, bajada y total realizado por IP`s en nuestra red. Explicaremos cómo instalarla, cómo visualizar el resultado de su ejecución y cómo complementar estos datos mediante su visualización a través de un módulo en php que nos ofrecerá los datos capturados en un formato más legible, incluso a través de gráficos. Estos son los pasos que realizamos para poder hacerla funcionar:

1) Instalamos en nuestra máquina Ubuntu la herramienta mediante apt-get. Puedes encontrar más información en http://aspiranteageek.wordpress.com/2009/10/22/monitoreo-de-ancho-de-banda/
2) Descarga el siguiente paquete de http://scripfm.sourceforge.net/ y alójalo en /var/www de tu máquina Ubuntu.(lo normal es que tengas instalado un servidor http con intérprete php, mysql, etc. Una posible opción es lamp).
3) Una vez instalada tenemos que tener en cuenta que el lugar donde quedan los archivos de ipfm es en /var/www/ipfm. Es allí donde podremos encontrar todos los archivos asociados a este software, así como ejemplos de configuración para el mismo.
4) Tendremos que modificar los archivos de configuración y para ello tendremos que tener controlados los dos siguientes: /etc/ipfm.conf y /var/www/ipfm/conf.php. Te encontrarás dentro de /var/www/ipfm un archivo llamado ipfm.conf-sample en el que te puedes basar para generar tu propia configuración. Pero no generes un ipfm.conf en /var/www/ipfm ya que entraría en conflicto con el existente en /etc.
5) Por último en /usr/share/doc/ipfm también podrás encontrar un ejemplo de archivo de configuración muy completo sobre el que basarte, sobre todo para establecer las subredes, rangos y demás opciones con las que ipfm debe funcionar.
6) En el archivo /etc/ipfm.conf debes configurar qué redes o subredes quieres analizar, la frecuencia del análisis, cómo se van a generar los logs, cuántos, dónde, la periodicidad con la que se eliminarán éstos, la ordenación de los datos, etc.
7) Configura ahora el archivo /var/www/ipfm/php.conf con el que conseguirás que el módulo php funcione adecuadamente. Podrás establecer si quieres que aparezcan las estadísticas en un color u otro, si quieres que funcione con gráficos o sólo con datos, mensualmente, diariamente, etc. Fìjate en las líneas de comentario del archivo, ya que te aclararán los términos a configurar.  

(Por ejemplo, hay una línea en la que se establece el tipo de estadísticas, por defecto viene "daily", pues puedes utilizar "daily-graph" si quieres que te aparezcan las estadísticas en formato de gráfico. Ojo en las líneas de comentario asociadas a esta parte del archivo, aparece la palabra "dailygraph" pero si lo configuras así no obtendrás los gráficos esperados. Debes utilizar "daily-graph" para que te funcione, es el nombre del archivo php que verás en la carpeta /var/www/ipfm/daily-graph.php).

Ten en cuenta que cuando quieras que el módulo php te genere las estadísticas de tráfico, deberás generar algún log en /var/log/ipfm con el formato ipfm-global-año-mes-dia.log, donde año, mes y día serán variables del sistema. Un posible ejemplo de fragmento del archivo ipfm.conf podría ser:

# Indicamos la red a analizar
FILENAME "/var/log/ipfm/ipfm-global-%Y-%m-%d.log"
DUMP EVERY 30 minutes
CLEAR EVERY 1 day
SORT TOTAL

RESOLVE

Fíjate en el nombre del archivo con extensión log, ya que si no lo pones así el módulo php no lo reconocerá y no te sacará correctamente las estadísticas.

Después de darle algunas vueltas más a los archivos de configuración, sólo tendrás que acceder a tu servidor con una dirección del tipo www.miservidor.es/ipfm a través del navegador para poder ver algo como esto:

Por otra parte, accediendo a /var/log/ipfm podrás visualizar las carpetas creadas por ipfm en las que estarán todas las capturas realizadas a modo de logs.

Eso es todo, pruébalo y verás que seguro será de tu utilidad. Hasta la próxima.


miércoles, 13 de febrero de 2013

Tweets desde consola de comandos Linux (twidge y TTYtter)


Twidge y TTYtter son dos alternativas muy útiles para enviar tweets desde la terminal de comandos.

En un post anterior os ofrecía una guía para poder enviar correos electrónicos desde la consola de comandos de GNU/Linux (Ubuntu). Concretamente a través del servidor ssmtp. En esta ocasión vamos a ver qué tenemos que hacer para poder enviar Tweets desde una Shell.

El objetivo del envío de estos Tweets es recopilar en un hastag mensajes de monitorización de los servidores que pudiera tener a su cargo un administrador de sistemas. Estos Tweets, al ser cortos y muy concretos en su información, pueden ofrecer una visión rápida del estado de los servidores o alertas que tengamos configuradas en ellos.

Manos a la obra. La primera herramienta que vamos a utilizar se denomina Twidge y para instalarla/configurarla haremos lo siguiente:

1) Actualiza tu sistema Ubuntu mediante un: 
sudo apt-get update

2) Realiza la instalación de Twidge:
sudo apt-get install twidge

3) Una vez instalado, debemos proceder con la configuración básica de Twidge:
sudo twidge setup

Al lanzar este comando, se nos mostrará en pantalla una URL que deberemos copiar y pegar en nuestro navegador web. Seguidamente, el programa de configuración de Twidge queda a la espera de la introducción de un código numérico.

Este código numérico lo obtendremos siguiendo las indicaciones que se marcan en la URL indicada anteriormente. Una vez en la página correspondiente a dicha dirección, deberemos hacer un login con nuestro usuario y contraseña de Twitter para autorizar a Twidge el uso de dicha cuenta, de cara al envío de Tweets. Después de hacer login, se mostrará el código numérico que debemos ingresar en la línea de comandos, para finalizar correctamente la instalación de Twidge.

Ya estaríamos preparados para empezar a enviar Tweets a través de consola. Para ello utilizaríamos el siguiente formato:

twidge update 'Texto a enviar - máximo 140 caracteres'

Si necesitamos obtener algo más de información sobre las opciones de twidge podemos teclear:

man twidge
twidge lscommands

Por cierto, es muy recomendable que accedas a tu cuenta en Twitter y edites las preferencias de tu cuenta para modificar la seguridad de tus envíos y la forma en la que pueden seguir tus Tweets el resto de usuarios de Twitter, tú mismo.

Ahora ya solo quedaría generar Shell Scripts en GNU/Linux que sean capaces de recopilar información interesante para un administrador de sistemas y enviarla vía Twitter a tu cuenta para mantenerte informado al momento. Espero que en próximas entregas podamos ver el código fuente de algún script que haga algo relacionado.

En segundo lugar, analizaremos el uso alternativo de TTytter, ya que es posible que al intentar enviar los tweets con twidge en Ubuntu 12 os genere algún error 410 de usuario no autorizado. Este error se produce por una modificación que se realizó en la API de twitter y que dejó a twidge fuera de combate, si lo quieres ejecutar en un Ubuntu 12. Para resolver esto tendreis que seguir el siguiente enlace y realizar los pasos que os indica: Instalación y configuración de TTYtter para envío de tweets bajo terminal de comandos mediante TTYtter. Otros enlaces relacionados que pueden ser interesantes son estos: posible alternativa a twidge, TTYtter.

Yo he probado TTYtter desde consola de comandos y ha bastado con escribir esto en la terminal para recibir correctamente los tweets.

ttytter -status="Este es un mensaje de prueba desde TTYtter"
(Ojo, primero debes autorizar a TTYtter, pero esto lo podeis hacer desde el enlace que os he pasado más arriba.)