monitorización desymfony

72

Upload: cristina-quintana-cano

Post on 06-Jul-2015

639 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Monitorización DeSymfony
Page 2: Monitorización DeSymfony
Page 3: Monitorización DeSymfony

Cristina Quintana Soy de Córdoba Java Sun Certified Programmer Zend Certified Engineer PHP 5.3

Page 4: Monitorización DeSymfony

Monitorización

Page 5: Monitorización DeSymfony
Page 6: Monitorización DeSymfony

Monitorización

¿Por qué?

Page 7: Monitorización DeSymfony

Bueno

Conoceríamos el estado de las piezas vitales del sistema.

Monitorización

¿Por qué?

Page 8: Monitorización DeSymfony

Bueno Bonito

Anticiparnos a errores. Mínimos tiempos de respuesta a fallos.

Monitorización

¿Por qué?

Page 9: Monitorización DeSymfony

Bueno Bonito Barato

Prevenimos perder dinero con: •  cortes de servicio •  estructuras mal dimensionadas •  estructuras mal configuradas

Monitorización

¿Por qué?

Page 10: Monitorización DeSymfony

Monitorización

Objetivos

Page 11: Monitorización DeSymfony

Monitorización

Objetivos

Identificar

Obtener

Utilizar

Page 12: Monitorización DeSymfony

Ejemplo de infraestructra

Page 13: Monitorización DeSymfony

Ejemplo de infraestructura

Esquema básico

Page 14: Monitorización DeSymfony

Ejemplo de infraestructura

Atentos...

Queremos saber: •  el estado de los servicios •  qué ven los nodos entre ellos •  qué ve el usuario

Page 15: Monitorización DeSymfony

Ejemplo de infraestructura

Comprobando nodos

Page 16: Monitorización DeSymfony

Ejemplo de infraestructura

Atentos... ¿a qué?

Queremos saber: •  el estado de los servicios •  qué ven los nodos entre ellos •  qué ve el usuario

Page 17: Monitorización DeSymfony

Ejemplo de infraestructura

Esto también, ¿eh?

Page 18: Monitorización DeSymfony

Ejemplo de infraestructura

Ahora... ¡sí!

Page 19: Monitorización DeSymfony

Ejemplo de infraestructura

Atentos... ¿a qué?

Queremos saber: •  el estado de los servicios •  qué ven los nodos entre ellos •  qué ve el usuario

Page 20: Monitorización DeSymfony

Ejemplo de infraestructura

Casi... pero no

Page 21: Monitorización DeSymfony

Ejemplo de infraestructura

Verdad verdadera

Page 22: Monitorización DeSymfony

¿Cómo monitorizar?

Page 23: Monitorización DeSymfony

¿Cómo monitorizar?

Niveles de seguimiento

Infraestructura

Aplicación

Funcional

Page 24: Monitorización DeSymfony

¿Cómo monitorizar?

Socket / puertos

A nivel de infraestructura

Page 25: Monitorización DeSymfony

¿Cómo monitorizar?

Socket / puertos

A nivel de infraestructura

Se debe monitorizar todo aquello que tenga un socket, que sea necesario para el funcionamiento de la plataforma.

server$ netstat -lnpt (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connection (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:8005 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:902 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN

Page 26: Monitorización DeSymfony

¿Cómo monitorizar?

Procesos

A nivel de infraestructura

root 31905 1 0 May28 ? 00:00:00 nginx: master process /usr/sbin nginx www-data 31906 31905 0 May28 ? 00:03:11 nginx: worker process www-data 31907 31905 0 May28 ? 00:01:48 nginx: worker process www-data 31908 31905 0 May28 ? 00:01:28 nginx: worker process www-data 31909 31905 0 May28 ? 00:03:05 nginx: worker process

Se debe controlar, por ejemplo, que el número de procesos no sea excesivo.

Page 27: Monitorización DeSymfony

¿Cómo monitorizar?

Status

A nivel de infraestructura

Apache, nginx o lighttpd tienen módulos que muestran el estado del servidor a través de una url.

Estos datos pueden ser analizados por nagios.

Page 28: Monitorización DeSymfony

¿Cómo monitorizar?

Third parties

A nivel de infraestructura

Chequeo de las conexiones con plataformas externas, como servicios de correo o de envío de sms.

•  Puertos de escucha •  Funciones por api •  ...

Page 29: Monitorización DeSymfony

¿Cómo monitorizar?

HERRAMIENTAS

A nivel de infraestructura

Cacti Nagios

New Relic

Icinga

Splunk

Page 30: Monitorización DeSymfony

¿Cómo monitorizar?

HERRAMIENTAS

Icinga

Page 31: Monitorización DeSymfony

¿Cómo monitorizar?

HERRAMIENTAS

Icinga

Page 32: Monitorización DeSymfony

¿Cómo monitorizar?

Niveles de seguimiento

Infraestructura

Aplicación

Funcional

Page 33: Monitorización DeSymfony

¿Cómo monitorizar?

Probes end2end

A nivel de aplicación

Chequeo de que la aplicación devuelve lo que esperamos. •  Medición de tiempos de respuesta •  ...

Page 34: Monitorización DeSymfony

¿Cómo monitorizar?

Logs

A nivel de aplicación

Complemento de la anterior.

•  Seguimiento de los logs de la app •  Sequimiento de los logs de máquinas

Page 35: Monitorización DeSymfony

¿Cómo monitorizar?

HERRAMIENTAS

A nivel de aplicación

New relic

Monolog

Desarrollo de Ofertix

Page 36: Monitorización DeSymfony

¿Cómo monitorizar?

HERRAMIENTAS

A nivel de aplicación New Relic

Page 37: Monitorización DeSymfony

¿Cómo monitorizar?

HERRAMIENTAS

New Relic

Page 38: Monitorización DeSymfony

¿Cómo monitorizar?

Niveles de seguimiento

Infraestructura

Aplicación

Funcional

Page 39: Monitorización DeSymfony

¿Cómo monitorizar?

HERRAMIENTAS

A nivel de funcional

Pingdom Behat

Page 40: Monitorización DeSymfony

¿Cómo monitorizar?

HERRAMIENTAS

Behat

server$ bin/behat features/search.feature Feature: Buscar en el museo Vamos a buscar arte Scenario: Buscar # ../search.feature:4 Given I am on "http://www.museothyssen.org/thyssen/home" # ::visit() When I fill in "buscar_thyssen" with "tintoretto" # ::fillField() And I press "sa" # ::pressButton() Then I should see "andrea" # ::assetPageContainsText() 1 scenario (1 passed) 4 steps (4 passed) 0m1.333s

Page 41: Monitorización DeSymfony

¿Cómo monitorizar?

HERRAMIENTAS

Behat

<form method="post" action="http://www.museothyssen.org/validation/resultados_buscador" id="cse-search-box">

<fieldset> <label for="buscar_thyssen">

<input type="text" id="buscar_thyssen" name="q"/> <input type="submit" name="sa" alt="Enviar" src="http://www.museothyssen.org/img/flecha33.png" id="submit_buscar_thyssen"

value=""/> </fieldset>

</form>

Given I am on "http://www.museothyssen.org/thyssen/home"

Page 42: Monitorización DeSymfony

¿Cómo monitorizar?

HERRAMIENTAS

Behat

<form method="post" action="http://www.museothyssen.org/validation/resultados_buscador" id="cse-search-box">

<fieldset> <label for="buscar_thyssen">

<input type="text" id="buscar_thyssen" name="q"/> <input type="submit" name="sa" alt="Enviar" src="http://www.museothyssen.org/img/flecha33.png" id="submit_buscar_thyssen"

value=""/> </fieldset>

</form>

When I fill in "buscar_thyssen" with "tintoretto"

Page 43: Monitorización DeSymfony

¿Cómo monitorizar?

HERRAMIENTAS

Behat

<form method="post" action="http://www.museothyssen.org/validation/resultados_buscador" id="cse-search-box">

<fieldset> <label for="buscar_thyssen">

<input type="text" id="buscar_thyssen" name="q"/> <input type="submit" name="sa" alt="Enviar" src="http://www.museothyssen.org/img/flecha33.png" id="submit_buscar_thyssen"

value=""/> </fieldset>

</form>

And I press "sa"

Page 44: Monitorización DeSymfony

¿Cómo monitorizar?

HERRAMIENTAS

Behat

<ul class="listadoCalendario"> <li>

<a title=" <strong>TINTORETTO</strong>" href="http://www.museothyssen.org/thyssen/ficha_artista/558">

<strong>TINTORETTO</strong> <span>

Andrea Schiavone.

<strong>TINTORETTO</strong> empezó a ejercer como maestro independiente en 1539, cultivando en esos años asuntos religiosos,...

</span> </a>

</li>

</ul>

Then I should see "andrea"

Page 45: Monitorización DeSymfony

¿Cómo monitorizar?

HERRAMIENTAS

Page 46: Monitorización DeSymfony

¿Cómo monitorizar?

HERRAMIENTAS

Pingdom

Page 47: Monitorización DeSymfony

¿Cómo monitorizar?

HERRAMIENTAS

New Relic Pingdom

Page 48: Monitorización DeSymfony

¿Cómo monitorizar?

HERRAMIENTAS

Page 49: Monitorización DeSymfony

Casos

Page 50: Monitorización DeSymfony

Casos

SUPUESTO 1

Infraestructura:

o  Varnish o  Varias máquinas virtuales (webserver)

Problema:

o  Una de cada 5 páginas vistas, por ejemplo se queda en blanco.

Page 51: Monitorización DeSymfony

Casos

Página en blanco

Supuesto 1

Page 52: Monitorización DeSymfony

Casos

Supuesto 1

Page 53: Monitorización DeSymfony

Casos

Supuesto 1

Page 54: Monitorización DeSymfony

Casos

Página en blanco

Supuesto 1

Page 55: Monitorización DeSymfony

Casos

¿La caché de symfony de una de las máquinas virtuales no se ha generado correctamente? Unas veces si y otras no, ¿algo en una máquina?

Supuesto 1

CAUSA

Page 56: Monitorización DeSymfony

Casos

Consulta de logs de symfony.

Supuesto 1

DETECCIÓN DEL PROBLEMA

Page 57: Monitorización DeSymfony

Casos

•  Parseo del fichero según criterios de búsqueda.

•  Alertas a usuarios.

Supuesto 1

FUTURA MONITORIZACIÓN

Page 58: Monitorización DeSymfony

Casos

Supuesto 1

EJEMPLO DE NOTIFICACIÓN

Page 59: Monitorización DeSymfony

Casos

Supuesto 1

EJEMPLO DE NOTIFICACIÓN

Page 60: Monitorización DeSymfony

Casos

VARIANTE DEL SUPUESTO 1

Page 61: Monitorización DeSymfony

Casos

SUPUESTO 2

No login

Page 62: Monitorización DeSymfony

Casos

SUPUESTO 2

Login

Page 63: Monitorización DeSymfony

Casos

SUPUESTO 2

La visualización de esta pequeña parte de pantalla, cambia aleatoriamente.

Page 64: Monitorización DeSymfony

Casos

CAUSA

¿Tener varios varnish? ¿APC?

¿Security.yml? ...

¿Mala suerte?

Supuesto 2

Page 65: Monitorización DeSymfony

Casos

Factor humano

Supuesto 2

DETECCIÓN DEL PROBLEMA

Page 66: Monitorización DeSymfony

Casos

Supuesto 2

POSIBLE SOLUCIÓN

Cambiar el hash por el que se cachea esa request en Varnish, mediante una cookie.

La cookie se crea y destruye en función del

acceso de cada usuario. La cookie contiene información reproducible por

el usuario.

Page 67: Monitorización DeSymfony

Curiosidades

Page 68: Monitorización DeSymfony

Curiosidades

Querido hacker,

Page 69: Monitorización DeSymfony

Curiosidades

XXX - - [31/May/2013:11:00:29 -0400] "GET /w00tw00t.at.blackhats.romanian.anti-sec:) HTTP/1.1" 404 239 "-" "ZmEu" "-" 0/905

XXX - - [31/May/2013:11:00:30 -0400] "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 404 226 "-" "ZmEu" "-" 0/442

XXX - - [31/May/2013:11:00:30 -0400] "GET /phpmyadmin/scripts/setup.php HTTP/1.1" 404 226 "-" "ZmEu" "-" 0/341

XXX - - [31/May/2013:11:00:31 -0400] "GET /admin/scripts/setup.php HTTP/1.1" 404

221 "-" "ZmEu" "-" 0/312

XXX - - [31/May/2013:11:00:31 -0400] "GET /pma/scripts/setup.php HTTP/1.1" 404 219 "-" "ZmEu" "-" 0/370

XXX - - [31/May/2013:11:00:32 -0400] "GET /mysql/scripts/setup.php HTTP/1.1" 404 221 "-" "ZmEu" "-" 0/895

¡Ay truhán! que poco me conoces...

Page 70: Monitorización DeSymfony

Curiosidades

Querido hacker, Toda relación es pasajera. Te enseñan lo que necesitas saber, y luego se van para continuar su camino.

Se te quiere...

Page 71: Monitorización DeSymfony

Preguntas

Page 72: Monitorización DeSymfony

Muchas gracias

@jautu

[email protected] http://es.linkedin.com/in/cristinaquintanacano

http://joind.in/talk/view/8850

Contacto