lunes, 23 de marzo de 2009

Solución al problema de memory_limit en phpSyslog-ng (con actualización del cache de servidores)

Luego de tener corriendo el Syslog-Ng en nuestros servidores, quise realizar un "Reload Search Cache" y me retornó un mensaje de:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 71 bytes) in /usr/share/syslog-ng/includes/common_funcs.php on line 203

Lo primero que intenté fué modificar el valor por default de memory_limit en el php.ini agrandando este mismo hasta 1Gb, cuando imaginé que la solución tendría que venir por otro lado. Al parecer existe un bug en el código fuente del phpSyslog-ng en el archivo common_funcs.php por suerte de fácil solución:

Debemos reemplazar la línea 199


$sql = "SELECT program FROM ".$table." WHERE program RLIKE
'^[a-zA-Z]+[a-zA-Z0-9/()._\-]+$'";

por:

$sql = "SELECT DISTINCT program FROM ".$table."
WHERE LENGTH(program)<80>

luego de correr la actualización se pudo recargar el cache de servidores.


"The search cache has been updated."



jueves, 19 de marzo de 2009

Reemplazar una cadena de texto en varios archivos al mismo tiempo

Esta está mejor que la anterior, ayudados del perl (Write-only language), reemplazamos una cadena de texto (en este caso stringOld por stringNew) y generamos una copia del archivo original con la extensión .save.

[pablo@laptop]# perl -e "s/stringOld/stringNew/g;" -pi.save $(find ./* -type f)

Suerte!

Cambiar codificación de caracteres de multiples archivos con Linux

Dejo un pequeño script bash para reemplazar la codificación de caracteres de múltiples archivos si contamos con una distribución Linux como herramienta.


[pablo@laptop]# mcedit ./iso2Utf.sh

#! /bin/bash
for archivos in "$@"
do
recode iso8859-15...UTF-8 ./$archivos
done

[pablo@laptop]# chmod +x ./iso2Utf.sh
[pablo@laptop]# ./iso2Utf.sh ./*.txt


$@ es el parámetro ingresado por teclado
recode es la aplicación para "recodificar" cada archivo

También se puede usar iconv pero éste trabaja sobre una copia por lo que habría que generar un temporal y luego copiarlo pisando el original.

miércoles, 18 de marzo de 2009

Anular espera de descarga en megaupload

Paso a paso como evitar esos 50 segundos de espera luego del captcha para la descarga vía megaupload.

1.- Primero debemos ingresar los códigos del captcha.


2.- Una vez que empieza el conteo seleccionamos en el menú del Firefox:


3.- Ver -> Estilo de la página -> Sin estilo

4.- Ahora sí, sin el cronómetro molestando le damos al boton de Descarga Normal:


Bingo!

viernes, 13 de marzo de 2009

Problemas con Soporte Técnico de HP/Compaq por falla de fábrica en notebook

Hace meses, unos seis, mi notebook Compaq Presario de la serie V3000 (una 3818LA para ser mas exacto) empezó a tener problemas en el arranque. Exactamente lo que le pasaba era que no encendia la primera vez que le daba al botón de power y quedaba colgado en un estado intermedio que me dejaba las luces del power, volumen, reset y mute encendidas pero el resto de la máquina sin reaccionar. La apagaba (manteniendo el botón de power unos segundos), la encendia nuevamente y ahí si arrancaba. Este procedimiento funcionaba siempre y cuando la notebook esté enchufada. Con la bateria se quedaba colgada en todos los casos. Importante es recalcar que esta falla se presentó unas semanas después del año de compra, por ende, en teoría había perdido la garantia.

Un día de aburrimiento, dando vueltas por la web descubrí que dicha falla se debía a una mal configuración del algoritmo de administración del cooler (que se encuentra en la BIOS) lo que hacia que la laptop caliente mas de lo debido, eso hizo que en las patas del micro (o su zócalo, eso no me quedó claro) se forme una "costra" con el barniz que las protege, lo que hacia que la tensión del micro se "pierda" por esas vías y al no llegar la tensión suficiente (creo que 1,8v) no arrancara la compu.

Las soluciones que HP daba a la comunidad que había adquirido esta tanda de equipos con problemas (que incluia a las Compaq Presario v3000, y tambien a las de la serie v6000 de Compaq, las HP Pavilion dv2000 y las HP Pavilion dv6000) era:
  • Si la compu aún no presentaba problemas de encendido (también podía presentar fallas en la placa de wi-fi), actualizar la BIOS.
  • Si la compu ya tenía estos síntomas, HP extendia la garantia a dos años por reconocer una falla en su fabricación. Entonces te comunicas con el 0800-555-5000 (este número ya está grabado en mi memoria), te la pasan a buscar por la dirección que le digas y en 5 a 7 días hábiles (jejejeje) te la devuelven a tu casa reparadita.
Bueno, eso es lo que hice, llame al 0800, opciones 3-1-1, la llevé yo a HP en la calle Luis M. Campos 1059 donde me atendieron tremendamente bien, un lunes 6 de febrero de 2009 y me garantizaron que la compu la recibiria esa misma semana pero que realmente HP siempre dice que la entregan entre 5 y 7 dias hábiles como me informaron por telefono.

A los 7 días me llamaron para pedir una prórroga de tiempo de cuatro dias mas porque se habian demorado con la espera de un repuesto (tenian que cambiar el mother).

Desde ahí nunca mas me llamaron hasta antes de ayer para que la pase a buscar ya reparada. Hoy es viernes 13 de febrero, o sea que el temita superó ampliamente el mes.

En resumidas cuentas empecé a leer foros donde le daban con un caño al servicio técnico de HP Argentina. Todos coincidian con que te retenian la máquina entre 2 y 3 meses y te la regresaban con la misma falla. Triste, no?

Ni hablar que llamé cada dos días, siempre hablando con unos mexicanos que me atendieron de 10 pero siempre sin recibir info de su estado .

LA SOLUCION!!!!

Uno de esos foros, creo que era el del blog de clarin, publicó el telefono de Dios (o el departamento de calidad de HP).

Serían ellos los que picanearan al soporte de HP Argentina????

La respuesta si es positiva :p

El Viernes pasado me logré comunicar con el Dto. de Calidad, 0800-555-5000, opcion 3-1-7 (ahí estaban escondidos), me asignaron una chica que seguiría mi caso y a los pocos dias me llamaron para arreglar la entrega.

Ahí no termina la historia (lamentablemente). Cuando le estaba reinstalando mi sistema operativo predilecto (Ubuntu) detecte unos 15 pixels muertos (negros) en forma de raya al medio de la pantalla (que obviamente no estaban ahi hace unos meses).

El tema es que hacemos ahora?

Pierdo un mes mas para que lo arreglen?
Lo cubre la garantia?
Como demuestro que todos los pixels estaban vivitos hace un mes?

Llame nuevamente al depto. de calidad y ahorita mismo manitos estoy esperando un llamado de los mexicanos.

Les cuento luego como me fué, pero espero no comprar un equipo de HP en el futuro.

jueves, 5 de marzo de 2009

Centralizando logs con Syslog-ng, Mysql y php-syslog-ng

Syslog-ng es un demonio que corre a la espera de registros de logs, basicamente utilizado para cuando las virtudes del clasico Syslog no alcanzan. Las mejores caracteristicas se describen a continuación:
  • Centralizado de logs en un único servidor
  • Almacenamiento en multiples bases de datos.
  • Disponibilidad de herramientas de análisis con interfaz web (como el phpsyslog-ng)
  • Compatibilidad con sistemas operativos de MS.

A continuación se detalla el procedimiento para la instalación en un servidor Ubuntu Server 8.10 en donde se almacenaran los eventos de varios servidores Linux y Windows en una base de datos Mysql y serán visualizados con la interfaz web que proporciona el phpsyslog-ng.

Para ello es necesario contar con:
  • Syslog-ng [1]
  • Servidor Web Apache [1]
  • Php [1]
  • Base de datos Mysql Server [1]
  • php-syslog-ng [2]
  • NTsyslog-ng [3]

Nota: El php-syslog-ng quedó freezado en sourceforge en la versión 2.9.1.x . Para versiones posteriores (acutalmente la 2.9.8l) descargar el instalador de http://code.google.com/p/php-syslog-ng/

Configuración del syslog-ng:

Hay que modificar el archivo /etc/syslog-ng/syslog-ng.conf agregando la siguiente linea de destino:


destination d_mysql {
pipe("/var/log/mysql.pipe"
template("INSERT INTO logs (host, facility, priority, level, tag, datetime, program, msg) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC', '$PROGRAM', '$MSG' );\n") template-escape(yes));
};


y en las secciones src y log agregar las siguientes líneas:

source net { udp(); };


log { source(net); destination(d_mysql); };

Luego debemos crear un programa, el cual leerá el pipe generado por el syslog-ng (ver destination) y enviará los INSERTs a la base de datos mysql.

en /etc/syslog-ng/syslog2mysql.sh escribimos:


#!/bin/bash

if [ ! -e /var/log/mysql.pipe ]
then
mkfifo /var/log/mysql.pipe
fi
while [ -e /var/log/mysql.pipe ]
do
mysql -u mysqlfeeder --password=miPassWord syslog < /var/log/mysql.pipe >/dev/null
done


Y le damos permiso de ejecución:

chmod +x /etc/syslog-ng/syslog2mysql.sh


Recordar agregar un usuario mysqlfeeder con permiso de INSERT para la base syslog.


Descomprimimos el phpsyslog-ng en /usr/share/syslog-ng y agregamos un vhost en el apache (sino se puede descomprimir en el /var/www y acceder con http://127.0.0.1/)

Dentro de /install tendremos una serie de pantallas que nos iran llevando por la instalación típica.


Instalación del cliente MS Windows:

Sencillamente descargamos el instalados del NTsyslog y lo instalamos en el sistema a monitorear. El servidor se define en la siguiente clave de registro:

[HKEY_LOCAL_MACHINE\SOFTWARE\SaberNet]"Syslog"="IP-Server_Syslog-NG"

Mediante el acceso directo generado se puede ararncar/parar el servicio, y configurar que logs serán enviados a nuestro servidor.


Instalación del cliente Linux

Despues de instalar (apt-get nuevamente) el syslog-ng, solo debemos agregar las siguientes lineas al archivo de configuración:

destination dest_server0102{udp("syslog-ng.midominio.com" port(514));};
log { source(s_all); destination(dest_server0102); };



[1] Instalacion vía el comando apt-get
[2] http://code.google.com/p/php-syslog-ng/
[3] http://ntsyslog.sourceforge.net/