Con el monitoreo sintético, puede monitor y probar sus aplicaciones y abordar problemas antes de que afecten a su usuario final. A continuación te damos cinco consejos para que puedas aprovechar toda su potencia.
Elige tu monitor Sintético
Los monitores Sintético son navegadores virtuales que miden el rendimiento de su sitio web y capturan números agregados de tiempo de carga, tiempo de actividad y tamaño promedio de descarga. También tendrá acceso a estadísticas detalladas sobre el incidente del tiempo de inactividad y el recurso de cada página.
Disponemos de siete tipos de monitor Sintético para elegir, dependiendo de lo que quieras monitor y cómo quieras hacerlo. Por ejemplo, un monitor de pasos es una excelente manera de crear lo que esencialmente funciona como un browser con script sin escribir código. Si está buscando una administración automatizada de su monitor Sintético, nuestra API NerdGraph le permite crear, actualizar y eliminar su monitor Sintético a través de llamada API.
Añade tu monitor Sintético
Para agregar un monitor, vaya a one.newrelic.com > All capabilities > Synthetic Monitoring.
Si tiene una cuenta basada en la UE, vaya a one.eu.newrelic.com.
Haga clic en Create monitor.
Seleccione un tipo de monitor y luego complete todos los campos obligatorios.
Puede agregar una etiqueta, cambiar el período o seleccionar una versión de tiempo de ejecución diferente. Para ping y monitor browser simple, puede agregar una cadena de validación. Puede utilizar las opciones avanzadas para habilitar el monitoreo de subcadenas para los siguientes tipos de validaciones de respuestas:
Verify SSL (for ping and simple browser). Esta opción verifica la validez de la cadena del certificado SSL. Se puede duplicar ejecutando la siguiente sintaxis:
bash$openssl s_client -servername {YOUR_HOSTNAME} -connect {YOUR_HOSTNAME}:443 -CApath /etc/ssl/certs > /dev/nullBypass HEAD request (for ping monitors). Esta opción omite la solicitud HEAD predeterminada y en su lugar utiliza el verbo GET con una verificación de ping. La solicitud GET siempre ocurrirá si la solicitud HEAD falla.
Redirect is Failure (for ping). Si se produce un resultado de redireccionamiento cuando
Redirect is Failure
está habilitado, su monitor Sintético lo categoriza como una falla en lugar de seguir el redireccionamiento y verificar la URL resultante.
Seleccione las ubicaciones desde donde desea que se ejecute su monitor. Recomendamos elegir al menos tres ubicaciones para evitar falsos positivos. En otras palabras, si al menos una ubicación arroja un resultado exitoso, entonces el extremo debe estar activado y se puede evitar la activación de una alerta.
Dependiendo del tipo de monitor, aparecerá el símbolo de Save monitor, Validate o Write script.
Vea sus resultados tal como los recibe en la página de resumen.
Vea la página de resumen de su monitor Sintético
En la página de resumen, verás información sobre el estado de tu monitor Sintético. Si algo creó un incidente activo que desencadenó una alerta, haga clic en el enlace de alerta crítica para abrir una nueva ventana.
Obtenga una descripción general del rendimiento de su aplicación
Para garantizar que los servicios web estén implementados, funcionando como se espera y sin errores, querrá tener acceso continuo a los resultados del rendimiento de su aplicación. El monitoreo sintético brinda este tipo de garantía al realizar pruebas automatizadas en su aplicación web para cada ubicación seleccionada. Su monitor Sintético anotará el tiempo de inactividad de la instancia y recopilará los números agregados, los resultados y las estadísticas detalladas de cada recurso de la página.
Para identificar rápidamente los monitores que están fallando, puede usar el índice de la página del monitor Sintético para ver qué monitor tiene incidentes abiertos, tasas de éxito durante 24 horas, cantidad de ubicaciones fallidas, período del monitor y tipo de monitor . Cuando hace clic en un monitor, accederá a la página Summary donde encontrará información para evaluar dónde falla ese monitor en particular, por qué falla, por ejemplo, último mensaje de error, códigos de respuesta de error, duración por dominio y más. Con esta información, tendrá una información más profunda y valiosa sobre el rendimiento de su aplicación a lo largo del tiempo.
Visualiza tu monitor en tu lista de entidad
Ver resultados monitor individuales
Puede ver el rendimiento de sus aplicaciones web a medida que se accede a ellas desde diferentes partes del mundo. Su página de resultados muestra cómo todo, desde el desarrollo hasta la producción, afecta la experiencia del usuario. Puede ordenar lo que aparece en la lista para identificar mejor áreas problemáticas o resultados inusuales. Intente filtrar por ubicación para comparar el rendimiento del monitor desde diferentes ubicaciones. Para hacer esto:
Vaya a one.newrelic.com > All capabilities > Synthetic Monitoring.
Haga clic en Monitor y luego haga clic en Results.
Puede ver vistas actualizadas al minuto de las cargas de página más lentas para cada ubicación del monitor.
Comprender el impacto del tiempo de carga de cada recurso
Puedes ver cómo los diferentes componentes de tu sitio afectan tu carga general en la página de recursos de Sintético . Estos componentes pueden ser CSS, JavaScript, imágenes, HTML, etc. Puede profundizar en métricas detalladas recopiladas en el tiempo de ejecución, localizar información de rendimiento sobre el tiempo invertido por recursos de terceros e identificar códigos de respuesta HTTP para cada recurso. Para hacer esto:
Vaya a
y luego haga clic en
Synthetic Monitoring
.
En el menú desplegable
Monitors
, seleccione su monitor.
Haga clic en
Monitor
y luego haga clic en
Resources
.
Configurar y desarrollar una prueba browser con script
Al utilizar un navegador con secuencias de comandos, puede crear un flujo de trabajo de monitoreo complejo con los enlaces de Selenium JavaScript Webdriver. Por ejemplo, puede log sesión en la aplicación, navegar a un enlace en particular y esperar a que se cargue un elemento de página y agregue una afirmación. Para hacer esto, usted:
Vaya a
one.newrelic.com > All capabilities > Synthetic Monitoring
.
Haga clic en el botón
Create monitor
.
Ingrese el nombre y los detalles de su monitor. Por ejemplo,
sitename.com
browser con secuencias de comandos.Seleccione las ubicaciones desde donde desea que se ejecute su monitor. Por ejemplo, Mumbai, Seúl, Columbus o Montreal.
Elija una frecuencia para determinar con qué frecuencia su monitor funcionará desde esto. Por ejemplo, cinco minutos.
Establezca un método de notificación para alertar a su equipo cuando ocurra un incidente de desempeño.
Ahora está listo para escribir su script. Consulte este script de ejemplo para probar el rendimiento de
newrelic.com
y verificar que ciertos elementos se hayan cargado.
/** * Script Name: Best Practices - Chrome 100 * Author: New Relic * Version: 1.5 * Purpose: best practices example * Reference: https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/scripting-monitors/synthetic-scripted-browser-reference-monitor-versions-chrome-100/ */
// -------------------- CONSTANTSconst SCRIPT_NAME = "Best Practices - Chrome 100" // name to record in script logconst IMPLICIT_TIMEOUT = 3000 // default implicit timeout is 10 seconds, 3 seconds x 8 findElement operations = 24 seconds, assuming all operations time outconst PAGE_LOAD_TIMEOUT = 60000 // default page load timeout is 60 seconds, fail early to prevent long duration timeoutsconst SCRIPT_TIMEOUT = 20000 // default script timeout is 30 secondsconst USER_AGENT = "default" // set the user agent for Chromeconst PROTOCOL = "https://" // set the protocolconst USERNAME = "" // username:const PASSWORD = "" // password@const DOMAIN = "docs.newrelic.com" // your domainconst PATH = "/docs/new-relic-solutions/get-started/intro-new-relic/" // path to main pageconst CHECK = "Need some inspiration first? Check out this intro video." // text to match on pageconst AUTH = USERNAME + PASSWORDconst MAIN_URL = PROTOCOL + AUTH + DOMAIN + PATH
// -------------------- DEPENDENCIESvar assert = require("assert")
// -------------------- CONFIGURATIONawait $webDriver.manage().setTimeouts({implicit: IMPLICIT_TIMEOUT, // sets element load timeoutpageLoad: PAGE_LOAD_TIMEOUT, // sets page load timeoutscript: SCRIPT_TIMEOUT // sets script timeout})
// -------------------- VARIABLESvar By = $selenium.Byvar loc = {video: By.css("#gatsby-focus-wrapper > div.css-1uz5ayg > div > main > div > article > div > div > div:nth-child(1) > div > p:nth-child(2)"),start: By.css("#gatsby-focus-wrapper > div.css-1uz5ayg > div > main > div > h1"),e: [{ step: 'signup', selector: By.css("#sign-up-for-new-relic-if-you-havent-already") },{ step: 'ingest', selector: By.css("#ingest-some-data") },{ step: 'dashboards', selector: By.css("#check-out-some-dashboards") },{ step: 'data', selector: By.css("#add-more-data") },{ step: 'alerting', selector: By.css("#set-up-alerting") },{ step: 'users', selector: By.css("#add-users") }]}
// -------------------- FUNCTIONS// for backwards compatibility with legacy runtimesasync function waitForAndFindElement(locator, timeout) {const element = await $webDriver.wait($selenium.until.elementLocated(locator),timeout,"Timed-out waiting for element to be located using: " + locator)await $webDriver.wait($selenium.until.elementIsVisible(element),timeout,"Timed-out waiting for element to be visible using ${element}")return await $webDriver.findElement(locator)}
// -------------------- START OF SCRIPT// Start loggingvar start_time = new Date()console.log("Starting synthetics script: " + SCRIPT_NAME)
// confirm timeouts are setconst {implicit, pageLoad, script} = await $webDriver.manage().getTimeouts()console.log("Timeouts are set to:")console.log(" IMPLICIT: " + implicit / 1000 + "s")console.log(" PAGE LOAD: " + pageLoad / 1000 + "s")console.log(" SCRIPT: " + script / 1000 + "s")
// Setting User Agent is not then-able, so we do this first (if defined and not default)if (USER_AGENT && 0 !== USER_AGENT.trim().length && USER_AGENT != "default") {$headers.add("User-Agent", USER_AGENT)console.log("Setting User-Agent to " + USER_AGENT)}
// if an error happens at any step, script execution is halted and a failed result is returnedconsole.log("1. get: " + MAIN_URL)await $webDriver.get(MAIN_URL)
console.log("2. waitForAndFindElement: " + loc.video)const textBlock = await waitForAndFindElement(loc.video, IMPLICIT_TIMEOUT)
console.log("3. getText: " + CHECK)const text = await textBlock.getText()
console.log("4. assert.equal: " + text)assert.equal(text, CHECK, "validation text not found")
console.log("5. waitForAndFindElement: " + loc.start)const platformMenu = await waitForAndFindElement(loc.start, IMPLICIT_TIMEOUT)
console.log("6. takeScreenshot")await $webDriver.takeScreenshot()
console.log("7. findElement")loc.e.forEach(async function (nr, i) {let n = i + 1try{// verify each asset has loadedconsole.log(" " + n + ". " + nr.step + ": " + nr.selector)await $webDriver.findElement(nr.selector)}catch(exception){console.error("Failure in Step 7." + n)throw exception}})
// End loggingvar end_time = new Date()
// Calculate the durationvar script_duration = end_time - start_time
// Log the timesconsole.log("Start time: " + start_time)console.log("End time: " + end_time)console.log("Duration: " + script_duration)