[Jderobot-admin] Zabbix
Oscar Garcia
oscar.robotica en linaresdigital.com
Mie Nov 21 13:45:14 CET 2012
El 21/11/2012 11:29, Borja Mon Serrano escribió:
> La reinstalación de zabbix ya la hice en su momento, como te comenté.
> Hice un purge con apt-get (apt-get purge zabbix-agent
> zabbix-server-mysql zabbix-frontend-php) y volví a instalar todo (menos
> el agente) de cero. Aun así, cuando intento acceder al recurso /zabbix
> me salía el mismo mensajito de error que anteriormente:
> mysql_connect(): Access denied for user 'zabbix'@'localhost' (using
> password: YES)[/usr/share/zabbix/include/db.inc.php:58]
Al desinstalar el paquete zabbix-server-mysql creo que ni se borra el
usuario zabbix de base de datos, ni sus permisos ni la base de datos. La
verdad es que no lo he hecho nunca, ¿has comprobado que siguieran ahí?
Podría estar dando problemas si ahora hay varios usuarios con el mismo
nombre pero diferentes contraseñas o, peor aún, no se limpió la base de
datos.
Un "DROP DATABASE zabbix;" debería arreglar el problema de mantener
datos (una vez hecho el dpkg -P zabbix-server-mysql o el apt-get remove
--purge zabbix-server-mysql).
> Diciéndome además que "Zabbix is temporarily unavailable!". De todas
> formas, reinstalaré de nuevo zabbix, no vaya a ser que metiese la pata
> en la reinstalación última que hice.
Eso siempre lo dice cuando no puede conectarse a la base de datos (por
estar caída, por no tener permisos, etc).
> Lo de la contraseña de Admin de zabbix lo vi en el enlace que dejaste.
> En la máquina virtual funciona bien, sin problemas, en jderobot no lo sé
> precisamente por el error que te comento un poco más arriba.
> Según la consulta que me has dicho, sí, la contraseña coincide:
> mysql> SELECT alias,passwd,md5('zabbix') as posible FROM users WHERE
> alias LIKE 'admin';
> +-------+----------------------------------+----------------------------------+
> | alias | passwd | posible
> |
> +-------+----------------------------------+----------------------------------+
> | Admin | 5fce1b3e34b520afeffb37ce08c7cd66 |
> 5fce1b3e34b520afeffb37ce08c7cd66 |
> +-------+----------------------------------+----------------------------------+
> 1 row in set (0.00 sec)
Entonces la contraseña web es Admin/zabbix, pero ahora quizá no te
funcione debido a que en dbconfig.php exista un usuario/contraseña de
base de datos que no es correcta, quizá al reinstalar la cambiaste y
ahora hay conflicto... si haces un purge a zabbix-* (incluido el agente)
puedes eliminar con seguridad el directorio /etc/zabbix.
> mucho intentarlo al final lo conseguí. Estuve "monitorizando" el uso de
> CPU con top durante un rato y de vez en cuando hacía un free -m para ver
> cómo iba la RAM. Normalmente iba todo bien, salvo durante un rato que el
> proceso apache2 se estuvo devorando la CPU (pongo solo lo más
> significativo):
Precisamente hubiera sido un momento genial para iotop más que para top.
> 19072 www-data 20 0 96180 51m 3932 R 93 2.5 1:43.34 apache2
> 19002 www-data 20 0 96272 50m 3728 R 88 2.5 1:25.10 apache2
> 18028 www-data 20 0 66824 14m 3324 S 4 0.7 0:12.11 apache2
Quizá el parámetro para regenerar los hijos de apache2 esté mal
configurado ya que no debería tener tanto tiempo de ejecución sin
regenerarse (marca 1 hora y 45 minutos uno de ellos). Nosotros tenemos
configuradas 50 conexiones por hijo antes de que éste se regenere.
Es lo normal de un servidor web en carga:
top - 12:31:58 up 7 days, 5:26, 2 users, load average: 0.73, 0.64, 0.52
Tasks: 228 total, 2 running, 226 sleeping, 0 stopped, 0 zombie
Cpu0 : 43.0%us, 5.6%sy, 0.0%ni, 49.3%id, 0.0%wa, 0.3%hi, 1.7%si,
0.0%st
Cpu1 : 11.8%us, 5.2%sy, 0.0%ni, 83.0%id, 0.0%wa, 0.0%hi, 0.0%si,
0.0%st
Cpu2 : 6.9%us, 4.9%sy, 0.0%ni, 88.2%id, 0.0%wa, 0.0%hi, 0.0%si,
0.0%st
Cpu3 : 12.5%us, 3.6%sy, 0.0%ni, 83.9%id, 0.0%wa, 0.0%hi, 0.0%si,
0.0%st
Cpu4 : 3.7%us, 4.7%sy, 0.0%ni, 91.7%id, 0.0%wa, 0.0%hi, 0.0%si,
0.0%st
Cpu5 : 3.6%us, 4.0%sy, 0.0%ni, 92.4%id, 0.0%wa, 0.0%hi, 0.0%si,
0.0%st
Cpu6 : 2.3%us, 4.0%sy, 0.0%ni, 93.7%id, 0.0%wa, 0.0%hi, 0.0%si,
0.0%st
Cpu7 : 1.7%us, 4.2%sy, 0.0%ni, 94.1%id, 0.0%wa, 0.0%hi, 0.0%si,
0.0%st
Mem: 2060264k total, 1703880k used, 356384k free, 84288k buffers
Swap: 499704k total, 0k used, 499704k free, 1157184k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
13903 www-data 20 0 225m 35m 12m S 20 1.8 0:01.32 apache2
13016 www-data 20 0 225m 34m 11m S 13 1.7 0:01.39 apache2
13238 www-data 20 0 219m 28m 12m S 11 1.4 0:01.22 apache2
15795 www-data 20 0 213m 20m 9.8m S 9 1.0 0:00.26 apache2
9421 www-data 20 0 219m 29m 13m S 8 1.5 0:03.10 apache2
9007 www-data 20 0 217m 28m 13m S 8 1.4 0:02.79 apache2
15794 www-data 20 0 216m 24m 10m S 7 1.2 0:00.31 apache2
9422 www-data 20 0 225m 36m 13m S 6 1.8 0:03.34 apache2
9004 www-data 20 0 217m 27m 13m R 4 1.4 0:02.35 apache2
8693 www-data 20 0 219m 28m 12m S 1 1.4 0:01.98 apache2
Aunque el ejemplo no vale mucho debido a que el servidor está tras un
acelerador web (un squid que balancea la carga entre varios servidores
web) y que esta máquina tiene 8 núcleos "Intel(R) Xeon(R) CPU
E7450 @ 2.40GHz" (sacado del /proc/cpuinfo), pero es normal que ante
ciertas páginas se queden durante un par de segundos usando el 99% de
cpu uno o varios procesos apache2 (he estado esperando un par de minutos
a ver si pillaba alguno así y no ha habido suerte, pero ha habido
ocasiones en los que he visto eso).
Quizá deberíais probar a cambiar:
MaxRequestsPerChild 50
Lo único que hace es que los procesos "hijos" de apache2 que realmente
sirven las peticiones "mueran" tras atender 50 peticiones, liberando
memoria (para evitar agujeros o zonas muertas de memoria, etc) y
posteriormente (si se necesita y está dentro del rango de procesos
configurado) levantará un proceso fresco. De este modo será difícil que
un proceso apache2 siga vivo con una hora y tres cuartos de tiempo de
ejecución.
> En esos momentos al servidor le costaba mucho devolver la página web,
> pero bueno, aunque lento (como por la mañana) iba bien. Me sorprendió
> también que hubiera tantísima memoria RAM libre:
El iotop, ha fallado el iotop aquí para descartar velocidad de acceso a
disco (si los datos están en disco local).
Por cierto, provecho para preguntar, ¿es un sistema de archivos local o
es nfs?
> jderobot:~# free -m
> total used free shared buffers cached
> Mem: 2018 344 1674 0 6 71
> -/+ buffers/cache: 265 1752
> Swap: 1608 110 1497
También te ha faltado un "uptime" para saber si el servidor ha sido
reiniciado o no... por la poca memoria "cached" y la cantidad de memoria
libre tiene toda la pinta de que llevaba poco tiempo levantado (vamos,
que había sido reiniciado hacía poco, aunque fuera la madrugada anterior).
Posiblemente saltó watchdog para salvar la situación desde el error de
anoche. Si watchdog salta tras una congelación debida a paginación
excesiva es normal que no deje rastro en el syslog (si watchdog falla
con el reboot "suave" tira de un reset brusco).
> Unos minutos más tarde, que sería cuando yo me metí (aproximadamente),
> aparecen mensajes:
>
> Nov 20 23:42:28 jderobot kernel: [110400.572039] INFO: task syslogd:927
> blocked for more than 120 seconds.
> Nov 20 23:42:28 jderobot kernel: [110400.572074] "echo 0 >
> /proc/sys/kernel/hung_task_timeout_secs" disables this message.
> Nov 20 23:42:28 jderobot kernel: [110400.572107] syslogd D
> c1087f2a 0 927 1 0x00000000
¡Eso sí es un síntoma de paginación excesiva! Ese es el típico mensaje
que sale cuando la máquina pagina con tantísima frecuencia que si una
operación de entrada/salida se retrasa más de 120 segundos aparece un
mensaje en el log advirtiendo sobre eso... y poco a poco lo hace con más
frecuencia.
Si en ese momento hiciéramos un top veríamos una carga de CPU muy
elevada (por encima de 15), y un tiempo iowait también elevado (por
encima del 75%) y un uso de swap elevado.
Un consejo: un servidor debería tener menos del 50% de swap que de
memoria RAM, así el equipo no perdería rendimiento por uso de memoria,
si no que se dedicaría a matar procesos que considere que puedan ser
eliminados.
Yo prefiero una caída suave de los servicios que una caída completa del
servidor.
> Y eso repetido para otras tareas:
>
> Nov 20 23:42:31 jderobot kernel: [110760.573026] INFO: task
> kjournald:238 blocked for more than 120 seconds.
> Nov 20 23:42:33 jderobot kernel: [110760.573299] INFO: task mysqld:17108
> blocked for more than 120 seconds.
> Nov 20 23:42:33 jderobot kernel: [110760.573567] INFO: task mysqld:17361
> blocked for more than 120 seconds.
Es normal que los primeros procesos que sufran las consecuencias sean
mysql, por la cantidad de operaciones de lectura/escritura que realiza,
y kjournald, el encargado de mantener el jornal del sistema de archivos,
ya que es el proceso que afianza dicha información escrita en disco.
> Ese último mensaje de mysqld que ves repetido sale varias veces
> repetido. Supongo que ahora mismo la base de datos no está del todo
> bien, a parte de los mensajes esos, hay otros de por la mañana que dicen:
>
> Nov 20 11:21:04 jderobot mysqld: 121120 11:21:04 [ERROR]
> /usr/sbin/mysqld: Incorrect key file for table
> './wikidb/wikijde_searchindex.MYI'; try to repair it
> Nov 20 11:21:04 jderobot mysqld: 121120 11:21:04 [ERROR]
> /usr/sbin/mysqld: Incorrect key file for table
> './wikidb/wikijde_searchindex.MYI'; try to repair it
Es lo malo de los reinicios "bruscos", pero nada que no se pueda reparar
con un "REPAIR TABLE ...". Los índices siempre se pueden reconstruir a
partir de los datos (tenemos suerte en ese aspecto), si llega a ser un
archivo de datos entonces recuperar a partir del log de transacciones es
más complejo, no es tan fiable (nunca sabes si los datos que te faltan
están recogidos en el reducido tamaño de log que tiene mysql) y encima
no está soportado en bases de datos myisam, sólo en innodb (es como la
diferencia entre ext2 y ext3).
> Nov 20 13:28:03 jderobot mysqld: 121120 13:26:58 [ERROR]
> /usr/sbin/mysqld: Got an error writing communication packets
>
> Nov 20 13:34:20 jderobot suhosin[22676]: ALERT - canary mismatch on
> efree() - heap overflow detected at 0xb99faf44 (attacker 'REMOTE_ADDR
> not set', file
> '/var/www/mediawiki-1.18.1/includes/db/DatabaseMysql.php', line 23)
He hecho una búsqueda rápida en los bugs de debian y he encontrado esto:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=535148#65
¿Podrías comprobar si somos víctimas de ese bug? En caso afirmativo,
¿podrías desinstalar el paquete php5-suhosin?
Es un bug extremadamente viejo, pero sin poder ver las versiones
instaladas no sé si estamos bajo su influjo. Por lo pronto desactivar o
desinstalar ese paquete podría arrojar luz sobre el problema aunque
también podría estar derivado de peticiones al servidor MySQL que han
sido canceladas, postpuestas, etc por latencias altas de acceso a disco
y que PHP no haya sabido cómo tratar ese evento.
> Lo que creo es que con lo que pasó el otro día con watchdog, que no
> hacía otra cosa que reiniciar el servidor, hubo varias cosas que se
> cargaría. Entre ellas, algo de la base de datos. Y digo entre ellas
> porque desde ese momento no se puede acceder al recurso del mediawiki
> que enviaste y, por ejemplo, dejó de funcionar phpldapadmin (lo tuve que
> reinstalar, ahora ya funciona).
Podría tratarse de corrupción del sistema de archivos, ¿has hecho un
fsck o lo has forzado para el próximo reinicio? No es normal que un
archivo se quede "colgado" accediendo a él o que un registro de una
tabla de la base de datos se quede "congelada" de esa manera, pero sí me
ha pasado que tras periodos muy largos de paginación de una máquina en
repetidas ocasiones, el calor que genera la actividad ha terminado por
dañar los discos duros físicos de la máquina y han empezado a
comportarse de manera extraña a partir de entonces.
Prueba antes de nada un RECOVER TABLE de todas las tablas. Como no la
base de datos de la wiki no es muy grande no tardará mucho.
Para asegurarte _haz antes_ un backup _completo_ con mysqldump (-p --opt
--all-databases, etc) por si las moscas. Nunca se sabe, no me ha pasado
nunca que se corrompan las bases de datos, pero siempre hay un primer
día para que ocurra algo. Vuelca a local y, si puedes, a un USB o equipo
externo en dos ejecuciones diferentes (no copies un archivo previamente
generado), así evitamos propagar cualquier problema de disco.
Si quieres, por velocidad, excluye del backup la base de datos zabbix (y
si hacéis backups lógicos diarios más vale excluirla de ellos a no ser
que sean backups binarios).
Después de todo esto, si sigue la congelación del equipo habrá que mirar
dmesg por si hay errores de entrada/salida del tipo:
[332888.147751] ata1.00: failed command: WRITE FPDMA QUEUED
[332888.150324] ata1.00: cmd 61/08:50:48:9c:1e/00:00:06:00:00/40 tag 10
ncq 4096 out
[332888.150327] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask
0x44 (timeout)
[332888.155453] ata1.00: status: { DRDY }
[332888.158000] ata1: hard resetting link
[332888.500039] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[332888.566365] ata1.00: configured for UDMA/133
[332888.566373] ata1.00: device reported invalid CHS sector 0
[332888.566406] ata1.00: device reported invalid CHS sector 0
[332888.566427] ata1: EH complete
[333184.165140] ata1.00: exception Emask 0x50 SAct 0x1 SErr 0x280900
action 0x6 frozen
[333184.167747] ata1.00: irq_stat 0x08000000, interface fatal error
[333184.170354] ata1: SError: { UnrecovData HostInt 10B8B BadCRC }
[333184.172942] ata1.00: failed command: READ FPDMA QUEUED
[333184.175506] ata1.00: cmd 60/a8:00:e0:00:b9/00:00:03:00:00/40 tag 0
ncq 86016 in
[333184.175508] res 40/00:00:e0:00:b9/00:00:03:00:00/40 Emask
0x50 (ATA bus error)
[333184.180671] ata1.00: status: { DRDY }
[333184.183242] ata1: hard resetting link
[333184.530054] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
Ve probando y vamos a ver si terminamos de poner a punto todo para que
vuelva todo a la normalidad.
Un saludo.
More information about the Jderobot-admin
mailing list