25. ¿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
26. ¿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.
27. ¿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.
28. ¿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
• ...
33. ¿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
• ...
34. ¿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
40. ¿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
41. ¿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"
42. ¿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"
44. ¿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"
55. 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
66. 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.