[Jderobot-admin] Caída de zabbix_server este fin de semana

Borja Mon Serrano borjamonserrano en gmail.com
Mar Dic 4 19:26:03 CET 2012


Tenía pendiente contestarte a varias cosillas, Óscar, así que allá van:

1) Los logs generados por zabbix el sábado indican que la base de datos
estaba caída mucho tiempo antes de que se terminase de caer la máquina.
Aquí es la primera vez que aparece el síntoma:

  1360:20121201:154253.366 [Z3001] Connection to database 'zabbix' failed:
[1040] Too many connections
  1360:20121201:154253.370 Watchdog: Database is down

Casi dos horas antes de que se terminara la actividad en el servidor la
base de datos ya estaba caída. ¿Hay alguna forma de que la máquina se
reinicie en cuanto se sepa que la base de datos está caída? Con watchdog sé
que se puede monitorizar el pid de cualquier proceso, incluida la base de
datos, pero dijiste que esto no era buena práctica; ¿cómo se podría hacer
esto?

Esos mensajes se vinieron repitiendo continuamente hasta la propia caída
del servidor. Poco antes de morir soltó lo siguiente:

  1401:20121201:172741.538 Executing housekeeper
  1401:20121201:172741.539 [Z3001] Connection to database 'zabbix' failed:
[1040] Too many connections
  1360:20121201:172741.960 One child process died (PID:1401). Exiting ...
  1360:20121201:172744.040 Syncing history data...
  1360:20121201:172744.055 Syncing history data...done.
  1360:20121201:172744.055 Syncing trends data...
  1360:20121201:172745.655 Syncing trends data...done.
  1360:20121201:172745.710 Zabbix Server stopped. Zabbix 1.8.2 (revision
11211).

Supongo que el mensaje de que un proceso hijo murió se refiere a un proceso
de la base de datos, ¿puede ser posible?

1') Como apunte adicional, pero ya dejando de lado lo que es la caída del
servidor en sí, tengo que cambiar la plantilla para que no saque mensajes
que no sirven de nada, como por ejemplo:

  1391:20121201:154337.476 Item [Zabbix Server:sensor[temp2]] error: Not
supported by Zabbix Agent
  1393:20121201:154339.919 Item [Zabbix Server:sensor[temp3]] error: Not
supported by Zabbix Agent
  1390:20121201:154341.740 Item [Zabbix Server:sensor[temp1]] error: Not
supported by Zabbix Agent

Es totalmente innecesario monitorizar algo que no está soportado, ¿no?

Y en relación con el cambio de configuraciones en las plantillas:

  1390:20121201:155106.180 Item [Zabbix
Server:vfs.fs.inode[/var/www,pfree]] error: Type of received value
[95.261516] is not suitable for value type [Numeric (integer 64bit)]

Esto también se repite cada dos por tres.

Este tipo de mensajes:

  1396:20121201:152632.345 Sending list of active checks to [127.0.0.1]
failed: host [localhost] not found

Yo creo que también tienen relación a que no está bien hecha la plantilla.
En lugar de localhost lo mismo hay que poner la IP de localhost como tal. O
directamente monitorizar la IP que tiene el servidor (193.147.15.110), ¿no?

2) Supongo que lo que comentas de poder crear usuarios normales para poder
meterse en la máquina se podrá hacer con la base de datos de usuarios del
LDAP, es decir, configurar el servidor SSH de alguna manera para que
consiga loguear a usuarios "normales". No sé lo que dirá José María al
respecto, pero supongo que si se pudiese hacer esto lo lógico sería que
estos usuarios no tuviesen ningún tipo de privilegio salvo el de poder
acceder a su propio home. Aun así, creo recordar que me dijo José María un
día que no lo tenía hecho así a propósito.

3) En la configuración de watchdog está puesto:

max-load-5              = 18

Ese valor es el que viene por defecto, pero está claro que se lo ha saltado
a la torera viendo los resultados... Quizá para la antigua máquina esto
hubiera sido un valor muy bajo, pero a lo mejor ahora viene bien dejarlo
activo así (o quizá un pelín más alto para no pillarnos los dedos, por
ejemplo en 35 ó 40). El fichero /etc/default/watchdog está como sigue:

# Start watchdog at boot time? 0 or 1
run_watchdog=1
# Load module before starting watchdog
watchdog_module="none"
# Specify additional watchdog options here (see manpage).

Supongo que en lo de las opciones se le podría indicar la opción de "-b"
para que haga un softboot...

4) Lo de squid es algo que habría que hacer, sí, independientemente de cómo
sea la máquina, ya que parece que va a mejorar notablemente el rendimiento
de la misma. En este apartado de "aplicaciones" que has ido comentando a lo
largo de todo este tiempo también tengo pendiente instalar fail2ban como
mecanismo de defensa.

De todas formas, todo esto lo tendré que probar primero en un servidor a
parte antes de pasarlo a jderobot.

5) Con lo de "mantener el disco" me refería a que lo que se ha hecho ha
sido coger el disco de la anterior máquina y meterlo en la nueva, tal cual.
Por tanto, así de primeras yo no pensaba que se pudiera arreglar el
problema de tu página de Working Progress... Creo que el problema está en
la base de datos, supongo que eliminando solamente esa entrada bastaría,
pero bueno, puedo probar a hacer lo que dices. Guardar todas las bases de
datos lo tengo ya bastante claro pero, ¿cómo las cargo? Antes de usar esta
nueva máquina había intentado hacer justo eso y no lo logré. No estoy muy
ducho en este tipo de operaciones, pero por lo que leí se supone que
bastaría con un "source basededatos.sql", aunque eso lo leí para cargar una
sola base de datos, no todas.

6) En los logs de apache2 no veo nada relativo a PHP. Lo que sí veo es este
tipo de mensajes cada cierto tiempo:

svn: Unable to find repository location for
'file:///var/lib/svn/robotica/robotvision/trunk/write/robocity2009-atencion/atencion-interaccion20090910.doc'
in revision 15

Y eso para varios svn's, no solo el de robotvision. Eso sí, siempre (o al
menos los casos que he podido comprobar) son de revisiones antiguas del
svn. Veo que es algo normal, ya que realmente no existe el directorio trunk
que debería de colgar de robotvision; en cambio, lo que cuelga de él es:

conf  dav  db  format  hooks  locks  README.txt

Al igual que en cualquier otro svn. Lo que no sé es ahora mismo por qué
hace ese tipo de comprobaciones.

También veo otro tipo de mensajes:

[Tue Dec 04 14:36:05 2012] [notice] child pid 12543 exit signal
Segmentation fault (11)
[Tue Dec 04 14:36:05 2012] [notice] child pid 12546 exit signal
Segmentation fault (11)
[Tue Dec 04 14:36:05 2012] [notice] child pid 12547 exit signal
Segmentation fault (11)
[Tue Dec 04 14:36:05 2012] [notice] child pid 12549 exit signal
Segmentation fault (11)
[Tue Dec 04 14:36:05 2012] [notice] child pid 12551 exit signal
Segmentation fault (11)
[Tue Dec 04 14:36:05 2012] [notice] child pid 12552 exit signal
Segmentation fault (11)
[Tue Dec 04 14:36:08 2012] [notice] child pid 12586 exit signal
Segmentation fault (11)

De estos hay muchos más, pero no sé de dónde pueden provenir. Luego hay
otros mensajes que creo que saltan al iniciar la máquina. Y digo que lo
creo porque más o menos coincide con las ocasiones en las que se ha
reiniciado (o iniciado de nuevo):

[Tue Dec 04 09:46:41 2012] [warn] Init: Name-based SSL virtual hosts only
work for clients with TLS server name indication support (RFC 4366)
[Tue Dec 04 09:46:45 2012] [error] python_init: Python version mismatch,
expected '2.6.5+', found '2.6.6'.
[Tue Dec 04 09:46:46 2012] [error] python_init: Python executable found
'/usr/bin/python'.
[Tue Dec 04 09:46:46 2012] [error] python_init: Python path being used
'/usr/lib/python2.6/:/usr/lib/python2.6/plat-linux2:/usr/lib/python2.6/lib-tk:/usr/lib/python2.6/lib-old:/usr/lib/python2.6/lib-dynload'.
[Tue Dec 04 09:46:46 2012] [notice] mod_python: Creating 8 session mutexes
based on 150 max processes and 0 max threads.
[Tue Dec 04 09:46:46 2012] [notice] mod_python: using mutex_directory /tmp
[Tue Dec 04 09:46:47 2012] [warn] Init: Name-based SSL virtual hosts only
work for clients with TLS server name indication support (RFC 4366)
[Tue Dec 04 09:46:47 2012] [notice] Apache/2.2.16 (Debian) DAV/2 SVN/1.6.12
PHP/5.3.3-7+squeeze14 with Suhosin-Patch mod_python/3.3.1 Python/2.6.6
mod_ssl/2.2.16 OpenSSL/0.9.8o mod_perl/2.0.4 Perl/v5.10.1 configured --
resuming normal operations

Lo de python_init supongo que vendrá en algún sitio de la configuración de
apache y se podrá cambiar. Lo de mod_python no sé ni tan siquiera ahora
mismo para qué está instalado, porque por todo lo que he visto hasta este
momento no hay nada del servidor desarrollado en python. Que me corrija
José María si me equivoco.

7) Cierto es que con los kernels -pae se pueden manejar tamaños más grandes
de memoria, no había caído en ello, no estoy habituado. Comprobando la
configuración de mi portátil, que tiene 8GB de RAM, he visto que tiene en
Debian un kernel -pae y reconoce a la perfección toda la RAM. Así que en
este punto hay dos alternativas posibles que he hablado con Roca, dos
alternativas que se manejan mmás que nada porque lo que se quiere es
cambiar el disco duro también y poner el que traía la nueva máquina (320GB
SATA a 7200 rpm en lugar de 40GB (SO) + 40GB (chroot) + 80GB (svn), todo
ello en IDE):

7a) Hacer con PartImage [1] imágenes de disco de los tres que hay y luego
cargar la imagen en el nuevo disco, en particiones separadas. Con
actualizar el kernel a un -pae valdría. El tiempo invertido en esto sería
pequeño y se solucionaría el hecho de querer ampliar posteriormente la
memoria RAM.

7b) Particionar el disco e instalar Debian de 64 bits, replicando todo lo
que hay en el servidor. Es decir, que habría que instalar de cero
absolutamente todo.

Está claro que lo rápido y (espero) fácil es lo primero, pero quizá
convendría más lo segundo. ¿Merece la pena el esfuerzo a invertir en
instalar de cero todo o sería "una pérdida de tiempo" teniendo en cuenta lo
que se puede ganar?

Un saludo y perdón por el tocho,

Borja.

[1] - http://www.guia-ubuntu.org/index.php?title=Partimage
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jderobot-admin/attachments/20121204/f864593f/attachment.htm 


More information about the Jderobot-admin mailing list