Increible !! :-)
jueves, 29 de octubre de 2009
martes, 6 de octubre de 2009
NAGIOS - PLUGIN DE CHEQUEO NDO2DB
Como han visto en post anteriores, en mi trabajo tuve que realizar un concentrador de 3 nagios diferentes, la cuestión es que por algunas circunstancias el ndo2db se caía y nos enterabamos porque no había control para su chequeo.
tampoco estaba en nagios_exchange
entonces me cree un simple script para su chequeo y es el siguiente:
#/bin/bash
STATUS=`ps aux | grep "ndo2db.cfg" | wc -l`;
if [ $STATUS -lt 2 ]
then
echo "ALERTA - NDO2DB CAIDO PROBLEMAS NAGIOS-MON";
exit 0
else
echo "OK - NOD2DB FUNCIONANDO CORRECTAMENTE";
exit 0
fi
Espero les sirva..
Hernan Mazzeo
tampoco estaba en nagios_exchange
entonces me cree un simple script para su chequeo y es el siguiente:
#/bin/bash
STATUS=`ps aux | grep "ndo2db.cfg" | wc -l`;
if [ $STATUS -lt 2 ]
then
echo "ALERTA - NDO2DB CAIDO PROBLEMAS NAGIOS-MON";
exit 0
else
echo "OK - NOD2DB FUNCIONANDO CORRECTAMENTE";
exit 0
fi
Espero les sirva..
Hernan Mazzeo
sábado, 3 de octubre de 2009
CRONTAB - EJECUTAR TAREAS DESDE ROOT CON OTRO USUARIO
En muchas ocasiones nos es necesario tener que ejecutar desde el corntab de root tareas con otro usuario para que cree los permisos de acceso necesarios para su ejecución.
Un ejemplo claro que ocurrió hace poco es la ejecucion de un script que corria como root y generaba directorios entre otras cosas como ese usuario, luego el apache y otras aplicaciones no le daban acceso.
Para solucionar este problema basta solamente con poner delante de la tarea del crontab el usuario con el que lo queremos ejecutar.
Ej:
*/5 * * * * www-data /usr/bin/php -q /var/www/dvr/servidor/111.php >> /var/log/111.log
Esto ejecutará la tarea del cron con el usuario indicado.
NOTA IMPORTANTE: Para que funcione esto no se debe realizar con el comando crontab -e, sino que deben editar el archivo /etc/crontab.
Basicamente porque cuando ejecutamos crontab -e, estamos entrando al crontab del usuario que estamos.
cuando editamos el archivo /etc/crontab estamos trabajando sobre el crontab del sistema.
Hernan Mazzeo
Un ejemplo claro que ocurrió hace poco es la ejecucion de un script que corria como root y generaba directorios entre otras cosas como ese usuario, luego el apache y otras aplicaciones no le daban acceso.
Para solucionar este problema basta solamente con poner delante de la tarea del crontab el usuario con el que lo queremos ejecutar.
Ej:
*/5 * * * * www-data /usr/bin/php -q /var/www/dvr/servidor/111.php >> /var/log/111.log
Esto ejecutará la tarea del cron con el usuario indicado.
NOTA IMPORTANTE: Para que funcione esto no se debe realizar con el comando crontab -e, sino que deben editar el archivo /etc/crontab.
Basicamente porque cuando ejecutamos crontab -e, estamos entrando al crontab del usuario que estamos.
cuando editamos el archivo /etc/crontab estamos trabajando sobre el crontab del sistema.
Hernan Mazzeo
viernes, 2 de octubre de 2009
NETWORKING - CAMBIAR IP y GW de CONSOLA EN UN LINUX
Muchas veces sucede que las herramientas de configuración de RED no funcionan por diversos motivos.
Siendo la única salida cambiar la IP y el GW por consola.
Hernan Mazzeo
Siendo la única salida cambiar la IP y el GW por consola.
[root@TWITTER /]$ ifconfig eth0 192.168.1.40 netmask 255.255.255.0
[root@TWITTER /]$ route add default gw 192.168.1.254 eth0
Hernan Mazzeo
jueves, 1 de octubre de 2009
BLACKBERRY - Sincronizar una blackberry en Linux con Evolution. (BARRY)
Este instructivo se hizo en base a Ubuntu.
con barry.
funciona perfectamente.
1º) Instalo dos paquetes necesarios.
2º) Descargo los siguientes paquetes (pueden instalar también los que vienen con la nueva version de ubuntu en los repositorios, pero estos estoy seguro que funcionan, los otros no).
Una vez descargados los pueden ejecutar haciendo doble click y con el gestor de paquetes synaptics.
3º) Una vez instalados todos los paquetes ejecutamos los siguientes comandos:
Ahi busco la linea que diga
y reemplazo el xxxxxxxx por nuestro numero de PIN*.
* Para encontrar el numero de PIN de nuestro dispositivo vamos a herramientas de configuracion -> Estado
Grabamos el archivo.
4º) Conectamos la blackberry por USB y ejecutamos los siguientes comandos:
con barry.
funciona perfectamente.
1º) Instalo dos paquetes necesarios.
[hmazzeo@TWITTER ~]$ apt-get install opensync-plugin-evolution
[hmazzeo@TWITTER ~]$ apt-get install multisync-tools
2º) Descargo los siguientes paquetes (pueden instalar también los que vienen con la nueva version de ubuntu en los repositorios, pero estos estoy seguro que funcionan, los otros no).
Una vez descargados los pueden ejecutar haciendo doble click y con el gestor de paquetes synaptics.
http://downloads.sourceforge.net/barry/libbarry_0.13-1.2_i386.deb?modtime=1217433545&big_mirror=0
http://downloads.sourceforge.net/barry/barrybackup-gui_0.13-1.2_i386.deb?modtime=1217433325&big_mirror=0
http://downloads.sourceforge.net/barry/barry-util_0.13-1.2_i386.deb?modtime=1217433460&big_mirror=0
http://downloads.sourceforge.net/barry/libbarry-dev_0.13-1.2_i386.deb?modtime=1217433629&big_mirror=0
http://downloads.sourceforge.net/barry/libopensync-plugin-barry_0.13-1.2_i386.deb?modtime=1217433710&big_mirror=0
3º) Una vez instalados todos los paquetes ejecutamos los siguientes comandos:
[hmazzeo@TWITTER ~]$ msynctool --addgroup Blackberry
[hmazzeo@TWITTER ~]$ msynctool --addmember Blackberry barry-sync
[hmazzeo@TWITTER ~]$ msynctool --addmember Blackberry evo2-sync
[hmazzeo@TWITTER ~]$ msynctool --showgroup Blackberry
[hmazzeo@TWITTER ~]$ msynctool --addmember Blackberry barry-sync
[hmazzeo@TWITTER ~]$ msynctool --addmember Blackberry evo2-sync
[hmazzeo@TWITTER ~]$ msynctool --showgroup Blackberry
[hmazzeo@TWITTER ~]$ msynctool --configure Blackberry 1
Ahi busco la linea que diga
Device xxxxxxxxx 1 1
y reemplazo el xxxxxxxx por nuestro numero de PIN*.
* Para encontrar el numero de PIN de nuestro dispositivo vamos a herramientas de configuracion -> Estado
Grabamos el archivo.
4º) Conectamos la blackberry por USB y ejecutamos los siguientes comandos:
[hmazzeo@TWITTER ~]$ evolution --force-shutdown
[hmazzeo@TWITTER ~]$ msynctool --sync Blackberry
[hmazzeo@TWITTER ~]$ msynctool --sync Blackberry
Estos comandos son los que debemos ejecutar siempre para sincronizar nuestro equipo.
Hernan Mazzeo
miércoles, 30 de septiembre de 2009
NAGIOS 3.x - ARGUMENTOS HABILITADOS PARA NRPE
En muchas ocasiones tendremos que ejecutar un comando creado por nosotros al cual tenemos que agregarle argumentos para chequear:
Ejemplo:
/home/commands/check_nrpe -H 192.168.0.2 -p 5666 -c check_cimage -a 1233 122
Esto nos devolverá error porque no soporta argumentos.
para habilitar los argumentos enviados por NRPE cuando se compile nrpe se debe ejecutar con la siguiente instrucción:
./configure --enable-command-args
básicamente esto lo pongo porque me trajo muchos dolores de cabeza y se que lo voy a volver a necesitar y me voy a volver a olvidar.
Hernan Mazzeo
Ejemplo:
/home/commands/check_nrpe -H 192.168.0.2 -p 5666 -c check_cimage -a 1233 122
Esto nos devolverá error porque no soporta argumentos.
para habilitar los argumentos enviados por NRPE cuando se compile nrpe se debe ejecutar con la siguiente instrucción:
./configure --enable-command-args
básicamente esto lo pongo porque me trajo muchos dolores de cabeza y se que lo voy a volver a necesitar y me voy a volver a olvidar.
Hernan Mazzeo
HOW-TO - CREANDO UN PLUGIN PARA NAGIOS
El nagios ya tiene varios plugins que se pueden descargar desde la página oficial.
No obstante en muchos casos tenemos que realizar chequeos especificos que no se pueden realizar con los plugins genericos.
Por eso y porque un compañero vino hoy a preguntar como carajo hacía para hacer un chequeo que le habíamos pedido (Pepo, nuestro experimento fue un exito).
Los script pueden realizarse en cualquier lenguaje que pueda ejecutarse desde consola.
La lógica se puede hacer con un script común teniendo en cuenta que lo mas importante es lo que muestra en la salida y el exit que tenga siguiendo las relaciones de :
exit 0 - OK
exit 1 - WARNING
exit 2 - CRITICAL
Un ejemplo en bash para chequear si se están almacenando correctamente las imagenes de un determinado dispositivo:
#/bin/bash
#Le paso como argumento el nombre del monitor
MONITOR=$1
CMINIMA=$2
DIR_TEMP="/home/commands/tmp";
USER="root"
PASS="password"
BD="base"
#Obtengo el ID de la Camara
IDCAM=`echo "SELECT Id FROM tabla1 WHERE Name = '${MONITOR}'" | /usr/bin/mysql -u $USER -p$PASS -D $BD --skip-column-names`
#Con el ID de la camara saco el ultimo evento cerrado y la cantidad de imagenes
UECLOSE=`echo "select Frames from tabla2 where MonitorId='${IDCAM}' and EndTime is not null order by StartTime desc limit 1" | /usr/bin/mysql -u $USER -p$PASS -D $BD --skip-column-names`
UECLOSEDATE=`echo "select StartTime from tabla2 where MonitorId='${IDCAM}' order by StartTime desc limit 1" | /usr/bin/mysql -u $USER -p$PASS -D $BD --skip-column-names`
UE=`echo "select Id from Events where MonitorId='${IDCAM}' order by StartTime desc limit 1" | /usr/bin/mysql -u $USER -p$PASS -D $BD --skip-column-names`
UESTORE=`cat $DIR_TEMP/ULTIMO_VENTO_$IDCAM`;
if [ $UE -eq $UESTORE ]
then
UFTAM=`du -sk /var/www/html/events/${IDCAM}/${UE} | awk '{print $1}'`;
AFTAM=`cat $DIR_TEMP/GRABA_CAM_$IDCAM`;
echo $UFTAM > $DIR_TEMP/GRABA_CAM_$IDCAM
if [ $UFTAM -eq $AFTAM ]
then
RESPONDE="7";
else
RESPONDE="9";
fi
else
UFTAM=`du -sk /var/www/html/events/${IDCAM}/${UE} | awk '{print $1}'`;
echo $UFTAM > $DIR_TEMP/GRABA_CAM_$IDCAM
RESPONDE="9";
fi
#echo "---------------------------";
#echo "DEBUG";
#echo "---------------------------";
#echo "ULTIMO EVENTO" $UESTORE
#echo "EVENTO ACTUAL" $UE
#echo "TAMANO ANTERIOR" $UFTAM
#echo "TAMANO ACTUAL" $AFTAM
#echo "ESTADO DE GRABACIONES" $RESPONDE;
#echo "---------------------------";
echo $UE > $DIR_TEMP/ULTIMO_VENTO_$IDCAM
if [ $RESPONDE -eq 9 ]
then
if [ $UECLOSE -lt $CMINIMA ]
then
echo "ALERTA - ${UECLOSE} IMAGENES EN EL ULTIMO EVENTO CERRADO";
exit 1
echo "OK - ${UECLOSE} IMAGENES / ${UECLOSEDATE} FECHA ULTIMO EVENTO";
exit 0
else
echo "OK - ${UECLOSE} IMAGENES / ${UECLOSEDATE} FECHA ULTIMO EVENTO HM";
exit 0
fi
else
RCAM = `/usr/local/bin/zmdc.pl restart zmc -m $IDCAM`;
echo "ALERTA - UE:${UESTORE} / ${UECLOSEDATE} FECHA ULTIMO EVENTO";
exit 2
fi
Esto lo ponemos dentro de un archivo que se situará (en instalación default) /usr/local/nagios/libexec/
Se le darán permisos de ejecución correspondientes y se lo asociará al grupo que lo pueda ejecutar sin problemas.
Una vez realizado esto se debe generar el comando:
/usr/local/nagios/objects/commands.cfg
define command{
command_name check_cimage
command_line /home/commands/check_cimage $ARG1$ $ARG2$
}
Con eso se realizará el chequeo que necesitemos sin problemas.
Hernán Mazzeo
No obstante en muchos casos tenemos que realizar chequeos especificos que no se pueden realizar con los plugins genericos.
Por eso y porque un compañero vino hoy a preguntar como carajo hacía para hacer un chequeo que le habíamos pedido (Pepo, nuestro experimento fue un exito).
Los script pueden realizarse en cualquier lenguaje que pueda ejecutarse desde consola.
La lógica se puede hacer con un script común teniendo en cuenta que lo mas importante es lo que muestra en la salida y el exit que tenga siguiendo las relaciones de :
exit 0 - OK
exit 1 - WARNING
exit 2 - CRITICAL
Un ejemplo en bash para chequear si se están almacenando correctamente las imagenes de un determinado dispositivo:
#/bin/bash
#Le paso como argumento el nombre del monitor
MONITOR=$1
CMINIMA=$2
DIR_TEMP="/home/commands/tmp";
USER="root"
PASS="password"
BD="base"
#Obtengo el ID de la Camara
IDCAM=`echo "SELECT Id FROM tabla1 WHERE Name = '${MONITOR}'" | /usr/bin/mysql -u $USER -p$PASS -D $BD --skip-column-names`
#Con el ID de la camara saco el ultimo evento cerrado y la cantidad de imagenes
UECLOSE=`echo "select Frames from tabla2 where MonitorId='${IDCAM}' and EndTime is not null order by StartTime desc limit 1" | /usr/bin/mysql -u $USER -p$PASS -D $BD --skip-column-names`
UECLOSEDATE=`echo "select StartTime from tabla2 where MonitorId='${IDCAM}' order by StartTime desc limit 1" | /usr/bin/mysql -u $USER -p$PASS -D $BD --skip-column-names`
UE=`echo "select Id from Events where MonitorId='${IDCAM}' order by StartTime desc limit 1" | /usr/bin/mysql -u $USER -p$PASS -D $BD --skip-column-names`
UESTORE=`cat $DIR_TEMP/ULTIMO_VENTO_$IDCAM`;
if [ $UE -eq $UESTORE ]
then
UFTAM=`du -sk /var/www/html/events/${IDCAM}/${UE} | awk '{print $1}'`;
AFTAM=`cat $DIR_TEMP/GRABA_CAM_$IDCAM`;
echo $UFTAM > $DIR_TEMP/GRABA_CAM_$IDCAM
if [ $UFTAM -eq $AFTAM ]
then
RESPONDE="7";
else
RESPONDE="9";
fi
else
UFTAM=`du -sk /var/www/html/events/${IDCAM}/${UE} | awk '{print $1}'`;
echo $UFTAM > $DIR_TEMP/GRABA_CAM_$IDCAM
RESPONDE="9";
fi
#echo "---------------------------";
#echo "DEBUG";
#echo "---------------------------";
#echo "ULTIMO EVENTO" $UESTORE
#echo "EVENTO ACTUAL" $UE
#echo "TAMANO ANTERIOR" $UFTAM
#echo "TAMANO ACTUAL" $AFTAM
#echo "ESTADO DE GRABACIONES" $RESPONDE;
#echo "---------------------------";
echo $UE > $DIR_TEMP/ULTIMO_VENTO_$IDCAM
if [ $RESPONDE -eq 9 ]
then
if [ $UECLOSE -lt $CMINIMA ]
then
echo "ALERTA - ${UECLOSE} IMAGENES EN EL ULTIMO EVENTO CERRADO";
exit 1
echo "OK - ${UECLOSE} IMAGENES / ${UECLOSEDATE} FECHA ULTIMO EVENTO";
exit 0
else
echo "OK - ${UECLOSE} IMAGENES / ${UECLOSEDATE} FECHA ULTIMO EVENTO HM";
exit 0
fi
else
RCAM = `/usr/local/bin/zmdc.pl restart zmc -m $IDCAM`;
echo "ALERTA - UE:${UESTORE} / ${UECLOSEDATE} FECHA ULTIMO EVENTO";
exit 2
fi
Esto lo ponemos dentro de un archivo que se situará (en instalación default) /usr/local/nagios/libexec/
Se le darán permisos de ejecución correspondientes y se lo asociará al grupo que lo pueda ejecutar sin problemas.
Una vez realizado esto se debe generar el comando:
/usr/local/nagios/objects/commands.cfg
define command{
command_name check_cimage
command_line /home/commands/check_cimage $ARG1$ $ARG2$
}
Con eso se realizará el chequeo que necesitemos sin problemas.
Hernán Mazzeo
Suscribirse a:
Entradas (Atom)