Trabajo para una compañía de Fortune 500 que tiene problemas para medir con precisión el rendimiento y la disponibilidad de aplicaciones de alta disponibilidad (es decir, aplicaciones que aumentan el 99.5% con 5 segundos de navegación de página a página). Consideramos tanto el tiempo de inactividad programado como el no programado para determinar este número de disponibilidad. Sin embargo, recientemente agregamos un CDN a la mezcla, lo que complica un poco nuestras métricas. El CDN ahora maneja aproximadamente el 75% de nuestro tráfico, mientras envía el resto a nuestros propios servidores.
Intentamos medir lo que llamamos una "verdadera experiencia de usuario" (es decir, nuestros scripts de prueba emulan a un usuario típico que hace clic en la aplicación). Estos scripts de monitoreo se encuentran fuera de nuestra red, lo que significa que estamos llegando al CDN aproximadamente el 75% de el tiempo.
La gerencia ha decidido que tomemos el peor de los casos para medir la disponibilidad. Por lo tanto, si nuestros servidores de origen están teniendo problemas, pero la CDN está sirviendo bien el contenido, todavía tenemos un impacto en la disponibilidad. Lo mismo es cierto al revés. Mi opinión es que mientras la "experiencia del usuario" sea exitosa, no debemos castigarnos innecesariamente. Después de todo, ¡hay un CDN para mejorar el rendimiento y la disponibilidad!
Me pregunto si alguien tiene conocimiento de cómo otras compañías de Fortune 500 calculan sus números de disponibilidad. Miro a apple.com, por ejemplo, de una tienda que usa un CDN que nunca parece estar fuera de servicio (a menos que haya un anuncio importante del producto). Sería genial tener algunos datos concretos, ya que no No creo que necesitemos dañarnos innecesariamente con estas métricas. Nos estamos tomando decisiones de negocio basadas en estos números.
Sin embargo, puedo decir que, dado que estas métricas son visibles para la administración, los problemas se abordan y se resuelven bastante rápido (léase: eliminamos la burocracia bastante rápido). Desafortunadamente, como desarrollador, no quiero que la administración piense que la aplicación está arriba o abajo porque algún factor externo (es decir, CDN) está influyendo en los números.
Pensamientos?
(Por error publiqué esta pregunta en StackOverflow, lo siento de antemano por la publicación cruzada)
fuente
Estoy de acuerdo con user44700, es mejor separar las pruebas de disponibilidad para sus servidores en comparación con el CDN y rastrear los dos de forma independiente. Su verdadera disponibilidad será Server Avail * CDN Avail, ya que si cualquiera de las dos cae, está considerando que su página / sitio está caído. Esto también le costará menos con cualquiera de los proveedores de monitoreo.
No seguiría la ruta de la creación de una prueba de navegador y vería qué elementos fallaron, aunque podría funcionar y algunas empresas como Catchpoint tienen el concepto de "disponibilidad de contenido"; puede que no sea exactamente lo que desea para este caso. Digamos, por ejemplo, que su página web tiene una llamada al CDN para un archivo que entrega 404, la mayoría de las soluciones de monitoreo le dirán que esto es un error, pero ¿fue realmente el CDN el que falló? ¿Era ese archivo incluso importante? tal vez alguien simplemente olvidó eliminar alguna referencia de reliquia que ningún usuario nota.
Puede leer esta publicación de blog para obtener más ideas: http://blog.catchpoint.com/2010/07/21/true-availability-of-a-webpage/
fuente
El informe de SLA debe reflejar con precisión la realidad. Si está midiendo la disponibilidad desde la perspectiva del usuario y solo el servidor que realiza la medición está experimentando problemas, informar ese problema dentro de su SLA no reflejaría la experiencia del usuario.
Puedo entender querer mantener la información de origen en un estándar alto, tal vez siempre informarla aunque sea inexacta, pero con una nota que identifique por qué.
Si no puede llegar a un acuerdo, quizás haya una solución técnica para hacer que el servidor de medición sea menos falible.
Si la información se informa como una interrupción y no lo fue, ¿qué valor proporciona el informe?
En mi entorno, informamos de múltiples fuentes. Una metodología de monitoreo externo para informar la disponibilidad desde una perspectiva externa, así como también para informar nuestro sistema interno de registro de interrupciones, que es ingresado por humanos y considera múltiples factores que reflejan con mayor precisión la situación.
fuente
Gomez y Keynote son soluciones aceptadas por la empresa para recopilar los tipos de métricas que mencionó. Gomez también tiene un servicio que monitorea su UX de usuario final al obtener un archivo javascript de google-analytics-esque.
fuente
Pingdom son buenos: http://www.pingdom.com/
fuente
Somos un Fortune 500 con un sitio habilitado para CDN, y utilizamos varias cosas. Usted ha determinado correctamente que necesita medir cosas diferentes si desea detectar cosas diferentes. No me queda claro qué es lo que desea específicamente: los números de disponibilidad para ayudarlo a determinar cuándo una aplicación está realmente inactiva, o los números que le quitan la administración. De todas formas...
Para obtener el "CDN", puede tomar otro monitor Keynote / Gomez y apuntarlo a sus aplicaciones, no a través del CDN, utilizando un nombre DNS alternativo o cualquier otra cosa. Pero como todavía tiene activos estáticos, es más útil para el rendimiento que la disponibilidad. Y mantiene interrupciones de Internet, interrupciones de agentes, etc. en el ciclo, lo cual es apropiado para algunos propósitos y no para otros.
Monitoreo real del usuario. Está basado en la red (Coradiant, Tealeaf) y basado en etiquetas (Jiffy, Gomez). Usamos Coradiant como un sniffer de red y determina el rendimiento real visto por el usuario de los activos alojados aquí en nuestro centro de datos, en otras palabras, las aplicaciones reales y no toda la basura estática en el CDN. Luego escribimos informes para determinar las tasas de error y el rendimiento de la aplicación y utilizamos el Apdex (apdex.org) como una métrica derivada. En algunos casos, no puede usar la red (demasiado tráfico, o sus activos no están alojados donde puede acceder a la red), y la etiqueta no es tan confiable. Tiene el inmenso beneficio de ver realmente el tiempo de respuesta y los errores del usuario final: es fácil configurar un monitor sintético que no produce errores en todos los casos en que lo hace un usuario real.
Monitoreo local sintético. Nagios / zabbix / sitescope / cien más. Apunte un monitor a su aplicación localmente (no pase por la CDN). Para el monitoreo de disponibilidad procesable (como en, enviar una página para despertar a alguien), este es el estándar de oro. No tiene en cuenta las cosas de la red.
Registro de monitoreo. En cierto sentido, este es el gueto de monitoreo de usuarios reales. Pero si realmente solo quieres ver qué error ocurrió, es bastante útil. Tiene el beneficio de "no, eso es realmente lo que sucedió" de la supervisión real del usuario. A menudo, solo disponibilidad, a menos que esté registrando un tiempo de espera en el nivel web, en cuyo caso le muestra cuánto tiempo tardó su servidor - no es útil para el usuario que enfrenta SLA, pero es muy útil para "en qué código debemos trabajar" ". Usa splunk.
No se trata de ninguno de los dos, utilizamos todos estos, porque usted quiere la "historia del usuario final", así como "en qué programador debemos apoyarnos".
fuente
BrowserMob es genial
fuente