Solución de problemas de un valor controlado - Amazon CloudWatch

Solución de problemas de un valor controlado

En caso de que el valor controlado falle, verifique lo siguiente para solucionar el problema.

Solución de problemas generales

  • Utilice la página de detalles de valores controlados para encontrar más información. En la consola de CloudWatch, elija Valores controlados en el panel de navegación y, a continuación, elija el nombre del valor controlado para abrir la página de detalles del valor controlado. En la pestaña Availability (Disponibilidad), elija la métrica SuccessPercent para ver si el problema es constante o intermitente.

    Mientras todavía está en la pestaña Availability (Disponibilidad), elija un punto de datos fallido para verlas capturas de pantalla, registros y los informes de pasos (si están disponibles) para esa ejecución fallida.

    Si hay un informe de pasos disponible debido a que los pasos forman parte de su script, verifique qué paso ha fallado y vea las capturas de pantalla asociadas para ver el problema que los clientes están viendo.

    También puede comprobar los archivos HAR para ver si una o más solicitudes están fallando. Puede profundizar en el uso de registros para analizar a fondo las solicitudes y errores fallidos. Finalmente, puede comparar estos artefactos con los artefactos de un valor controlado exitoso para identificar el problema.

    De forma predeterminada, CloudWatch Synthetics toma capturas de pantalla para cada paso en un valor controlado de la UI. Sin embargo, es posible que el script esté configurado para desactivar las capturas de pantalla. Durante la depuración, es posible que desee habilitar las capturas de pantalla de nuevo. Del mismo modo, para los canaries de la API, es posible que desee ver las cabeceras y cuerpos de solicitud y respuesta HTTP durante la depuración. Para obtener más información acerca de cómo incluir los datos en el informe, consulte executeHttpStep(stepName, requestOptions, [callback], [stepConfig]).

  • Si ha tenido una implementación reciente en su aplicación, retroceda y ejecute la depuración más tarde.

  • Conéctese al punto de enlace de manera manual para verificar si puede reproducir el mismo problema.

El valor controlado falla tras la actualización del entorno de Lambda

Los valores controlados de CloudWatch Synthetics se implementan como funciones de Lambda en su cuenta. Estas funciones de Lambda están sujetas a actualizaciones del tiempo de ejecución de Lambda periódicas que incluyen actualizaciones de seguridad, correcciones de errores y otras mejoras. Lambda se esfuerza por proporcionar actualizaciones de tiempo de ejecución que sean compatibles con versiones anteriores a las funciones existentes. Sin embargo, al igual que ocurre con los parches de software, hay casos excepcionales en los que una actualización del tiempo de ejecución puede afectar negativamente a una función ya existente. Si cree que un valor controlado se ha visto afectado por una actualización del tiempo de ejecución de Lambda, puede utilizar el modo manual de administración del tiempo de ejecución de Lambda (en las regiones compatibles) para revertir temporalmente la versión del tiempo de ejecución de Lambda. Esto mantiene al valor controlado en funcionamiento y minimiza las interrupciones, lo que proporciona tiempo para corregir la incompatibilidad antes de volver a la última versión del tiempo de ejecución.

Si el valor controlado falla después de una actualización del tiempo de ejecución de Lambda, la mejor solución es actualizar a uno de los tiempos de ejecución más recientes de Synthetics. Para obtener más información sobre los tiempos de ejecución más recientes, consulte Versiones de tiempo de ejecución de Synthetics.

Como solución alternativa, en las regiones en las que estén disponibles los controles de administración del tiempo de ejecución de Lambda, puede revertir un valor controlado a un tiempo de ejecución administrado por Lambda anterior, mediante el modo manual con los controles de administración del tiempo de ejecución. Puede configurar el modo manual mediante la AWS CLI o la consola de Lambda con los pasos que se indican a continuación en las siguientes secciones.

aviso

Al cambiar la configuración del tiempo de ejecución al modo manual, la función de Lambda no recibirá actualizaciones de seguridad automáticas hasta que vuelva al modo automático. Durante este periodo, la función de Lambda podría estar expuesta a vulnerabilidades de seguridad.

Requisitos previos

Paso 1: obtener el ARN de la función de Lambda

Ejecute el siguiente comando para recuperar el campo EngineArn de la respuesta. Este EngineArn es el ARN de la función de Lambda asociada al valor controlado. Utilice este ARN en los siguientes pasos.

aws synthetics get-canary --name my-canary | jq '.Canary.EngineArn'

Resultado de ejemplo para EngingArn:

"arn:aws:lambda:us-west-2:123456789012:function:cwsyn-my-canary-dc5015c2-db17-4cb5-afb1-EXAMPLE991:8"

Paso 2: obtener el ARN de la última versión válida del tiempo de ejecución de Lambda

Para saber si su valor controlado se vio afectado por una actualización del tiempo de ejecución de Lambda, compruebe si la fecha y la hora de los cambios del ARN de la versión del tiempo de ejecución de Lambda en sus registros coinciden con la fecha y la hora en que vio los problemas en su valor controlado. Si no coinciden, probablemente no sea una actualización del tiempo de ejecución de Lambda lo que esté causando los problemas.

Si su valor controlado se ve afectado por una actualización del tiempo de ejecución de Lambda, debe identificar el ARN de la versión del tiempo de ejecución de Lambda en funcionamiento que utilizaba anteriormente. Siga las instrucciones de Identificación de los cambios de versión del tiempo de ejecución para buscar el ARN del tiempo de ejecución anterior. Registre el ARN de la versión del tiempo de ejecución y continúe con el paso 3 para establecer la configuración de administración del tiempo de ejecución.

Si su valor controlado aún no se ha visto afectado por una actualización del entorno de Lambda, puede buscar el ARN de la versión del tiempo de ejecución de Lambda que utiliza actualmente. Ejecute el siguiente comando para recuperar el RuntimeVersionArn de la función de Lambda de la respuesta.

aws lambda get-function-configuration \ --function-name "arn:aws:lambda:us-west-2:123456789012:function:cwsyn-my-canary-dc5015c2-db17-4cb5-afb1-EXAMPLE991:8" | jq '.RuntimeVersionConfig.RuntimeVersionArn'

Resultado de ejemplo para RuntimeVersionArn:

"arn:aws:lambda:us-west-2::runtime:EXAMPLE647b82f490a45d7ddd96b557b916a30128d9dcab5f4972911ec0f"

Paso 3: actualizar la configuración de administración del tiempo de ejecución de Lambda

Puede utilizar la AWS CLI o la consola de Lambda para actualizar la configuración de administración del tiempo de ejecución.

Para establecer el modo manual de la configuración de administración del tiempo de ejecución de Lambda mediante la AWS CLI

Ingrese el siguiente comando para cambiar la administración del tiempo de ejecución de la función de Lambda al modo manual. Asegúrese de reemplazar function-name y qualifier por el ARN de la función de Lambda y el número de versión de la función de Lambda, respectivamente, con los valores que encontró en el paso 1. Sustituya también runtime-version-arn por el ARN de la versión que encontró en el paso 2.

aws lambda put-runtime-management-config \ --function-name "arn:aws:lambda:us-west-2:123456789012:function:cwsyn-my-canary-dc5015c2-db17-4cb5-afb1-EXAMPLE991" \ --qualifier 8 \ --update-runtime-on "Manual" \ --runtime-version-arn "arn:aws:lambda:us-west-2::runtime:a993d90ea43647b82f490a45d7ddd96b557b916a30128d9dcab5f4972911ec0f"
Para cambiar un valor controlado al modo manual mediante la consola de Lambda
  1. Abra la consola de AWS Lambda en https://console.aws.amazon.com/lambda/.

  2. Elija la pestaña Versiones, elija el enlace del número de versión que corresponda a su ARN y elija la pestaña Código.

  3. Desplácese hacia abajo hasta Configuración de tiempo de ejecución, expanda la Configuración de administración del tiempo de ejecución y copie el ARN de la versión del tiempo de ejecución.

    Muestra la sección Configuración del tiempo de ejecución de la pantalla y dónde aparece el ARN del tiempo de ejecución en esta sección.
  4. Elija Editar la configuración de administración del tiempo de ejecución, elija Manual y pegue el ARN de la versión del tiempo de ejecución que copió anteriormente en el campo ARN de la versión del tiempo de ejecución. A continuación, elija Guardar.

    Muestra la pantalla Configuración de administración del tiempo de ejecución y dónde se debe pegar el ARN de la versión del tiempo de ejecución que copió anteriormente.

Mi valor controlado está bloqueado por AWS WAF

Para permitir el paso del tráfico de canarios a través de AWS WAF, cree una condición de coincidencia de cadenas de AWS WAF que permita obtener una cadena personalizada especificada por usted. Para obtener más información, consulte Trabajar con condiciones de coincidencia de cadena en la documentación de AWS WAF.

Le recomendamos encarecidamente que utilice su propia cadena usuario-agente personalizada en lugar de utilizar los valores predeterminados. Esto proporciona un mejor control del filtrado de AWS WAF y mejora la seguridad.

Para configurar una cadena usuario-agente personalizada, haga lo siguiente:

  • Para los tiempos de ejecución de Playwright, puede añadir su cadena usuario-agente personalizada aprobada por AWS WAF mediante el archivo de configuración de Synthetics. Para obtener más información, consulte Configuraciones de CloudWatch Synthetics.

  • Para los tiempos de ejecución de Puppeteer o Selenium, puede añadir su cadena usuario-agente personalizada mediante el uso de las funciones de biblioteca compatibles. Para los tiempos de ejecución de Puppeteer, consulte async addUserAgent(page, userAgentString);. Para los tiempos de ejecución de Selenium, consulte add_user_agent(user_agent_str).

En la espera de un elemento

Después de analizar los registros y las capturas de pantalla, si nota que el script está esperando que aparezca un elemento en la pantalla y agota el tiempo de espera, verifique la captura de pantalla correspondiente para ver si el elemento aparece en la página. Verifique el xpath para asegurarse de que es correcto.

Para problemas relacionados con el Puppeteer, consulte Puppeteer's GitHub page (Página de GitHub de Puppeteer) o foros de Internet.

El nodo no es visible o no es un HTMLElement para page.click()

Si un nodo no es visible o no es un HTMLElement para page.click(), verifique primero el xpath que está utilizando para hacer clic en el elemento. Además, si el elemento se encuentra en la parte inferior de la pantalla, ajuste la ventana gráfica. CloudWatch Synthetics utiliza de forma predeterminada una ventana gráfica de 1920 x 1080. Puede establecer una ventana gráfica diferente al lanzar el navegador o mediante la función Puppeteer page.setViewport.

No se pueden cargar artefactos en S3; excepción: no se puede obtener la ubicación del bucket de S3: acceso denegado

Si el valor controlado no funciona debido a un error de Amazon S3, esto significa que CloudWatch Synthetics no ha podido cargar las capturas de pantalla, los registros o los informes creados para el valor controlado debido a problemas de permisos. Comprueba lo siguiente:

  • Verifique que el rol de IAM del valor controlado tenga el permiso s3:ListAllMyBuckets, el permiso s3:GetBucketLocation para el bucket de Amazon S3 correcto y el permiso s3:PutObject para el bucket y donde el valor controlado almacena sus artefactos. Si el valor controlado lleva a cabo una supervisión visual, el rol también necesita el permiso s3:GetObject para el bucket. Estos mismos permisos también se requieren en la política del punto de conexión de la puerta de enlace de Amazon VPC S3, si el valor controlado se implementa en una VPC con un punto de conexión de VPC.

  • Si el valor controlado utiliza una clave administrada por el cliente de AWS KMS para cifrado en lugar de la clave administrada de AWS estándar (predeterminada), es posible que el rol de IAM del valor controlado no tenga permiso para cifrar o descifrar con esa clave. Para obtener más información, consulte Cifrado de artefactos de un valor controlado.

  • Es posible que la política de bucket no permita el mecanismo de cifrado que utiliza el valor controlado. Por ejemplo, si la política de bucket obliga a utilizar un mecanismo de cifrado específico o una clave de KMS, debe seleccionar el mismo modo de cifrado para su valor controlado.

Si el valor controlado lleva a cabo una supervisión visual, consulte Actualización de la ubicación y el cifrado de artefactos al utilizar supervisión visual para obtener más información.

Error: error de protocolo (Runtime.CallFunctionOn): destino cerrado.

Este error aparece si hay algunas solicitudes de red después de cerrar la página o el navegador. Es posible que haya olvidado esperar una operación asíncrona. Después de ejecutar el script, CloudWatch Synthetics cierra el navegador. La ejecución de cualquier operación asíncrona después de cerrar el navegador puede causar target closed error.

Error de valor controlado. Error: no hay punto de datos, el valor controlado muestra error de tiempo de espera

Esto significa que la ejecución del valor controlado superó el tiempo de espera. La ejecución del valor controlado se detuvo antes de que CloudWatch Synthetics pudiera publicar métricas porcentuales exitosas de CloudWatch o actualizar artefactos como archivos HAR, registros y capturas de pantalla. Si su tiempo de espera es demasiado corto, puede aumentarlo.

De forma predeterminada, un valor de tiempo de espera del valor controlado es igual a su frecuencia. Puede ajustar manualmente el valor de tiempo de espera para que sea menor o igual que la frecuencia de los valores controlados. Si la frecuencia del valor controlado es baja, debe aumentar la frecuencia para aumentar el tiempo de espera. Puede ajustar tanto la frecuencia como el valor de tiempo de espera en Programa cuando cree o actualice un valor controlado mediante la consola de CloudWatch Synthetics.

Asegúrese de que el valor de tiempo de espera del valor controlado no sea inferior a 15 segundos para permitir arranques en frío de Lambda y el tiempo que tarda en arrancar la instrumentación de valor controlado.

Los artefactos de valores controlados no se pueden ver en la consola de CloudWatch Synthetics cuando se produce este error. Se puede utilizar Registros de CloudWatch para ver los registros de valores controlados.

Cómo utilizar Registros de CloudWatch para ver los registros de un valor controlado
  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación a la izquierda, elija Log groups (Grupos de registros).

  3. Busque el grupo de registro con el nombre del valor controlado en el cuadro de filtro. Los grupos de registro para valores controlados tienen el nombre /aws/lambda/cwsyn-canaryName-randomId.

Acceso a un punto de enlace interno

Si desea que el valor controlado acceda a un punto de conexión de la red interna, se recomienda que configure CloudWatch Synthetics para que utilice VPC. Para obtener más información, consulte Ejecución de un valor controlado en una VPC.

Problemas con la actualización y las versiones anteriores de tiempo de ejecución de valores controlados

Si ha actualizado recientemente el valor controlado de la versión de tiempo de ejecución syn-1.0 a una versión posterior, puede ocurrir un problema de intercambio de recursos de origen cruzado (CORS). Para obtener más información, consulte Problema del intercambio de recursos de origen cruzado (CORS).

Si recientemente ha instalado una versión anterior de tiempo de ejecución del valor controlado, verifique que las funciones de CloudWatch Synthetics que está utilizando están disponibles en la versión de tiempo de ejecución anterior a la que ha instalado. Por ejemplo, la función executeHttpStep está disponible para la versión de tiempo de ejecución syn-nodejs-2.2 y posteriores. Para verificar la disponibilidad de las funciones, consulte Escritura de un script de valor controlado.

nota

Si planea actualizar o instalar versiones anteriores de tiempo de ejecución de un valor controlado, se recomienda que primero clone el valor controlado y actualice la versión del tiempo de ejecución en el valor controlado clonado. Una vez que haya verificado que el clon con la nueva versión de tiempo de ejecución funciona, puede actualizar la versión de tiempo de ejecución del valor controlado original y eliminar el clon.

Problema del intercambio de recursos de origen cruzado (CORS)

En un valor controlado de la UI, si algunas solicitudes de red fallan con 403 o net::ERR_FAILED, verifique si el valor controlado tiene habilitado el rastreo activo y también si utiliza la función Puppeteer page.setExtraHTTPHeaders para agregar cabeceras. Si es así, las solicitudes de red fallidas podrían deberse a restricciones de intercambio de recursos de origen cruzado (CORS). Puede confirmar si este es el caso al desactivar el rastreo activo o al eliminar las cabeceras HTTP adicionales.

¿Por qué sucede esto?

Cuando se utiliza el rastreo activo, se agrega una cabecera adicional a todas las solicitudes salientes para rastrear la llamada. La modificación de las cabeceras de solicitud al agregar una cabecera de seguimiento o cabeceras adicionales con Puppeteer’s page.setExtraHTTPHeaders provoca una verificación de CORS para las solicitudes XMLHttpRequest (XHR).

Si no desea desactivar el rastreo activo o eliminar las cabeceras adicionales, se puede actualizar la aplicación web para permitir el acceso de origen cruzado o puede desactivar la seguridad web mediante el indicador disable-web-security cuando lance el navegador Chrome en el script.

Puede anular los parámetros de lanzamiento que CloudWatch Synthetics ha utilizado y pasar los parámetros adicionales del indicador disable-web-security mediante la función de lanzamiento de CloudWatch Synthetics. Para obtener más información, consulte Funciones de la biblioteca disponibles para los scripts de canarios de Node.js mediante Puppeteer.

nota

Se pueden anular los parámetros de lanzamiento que CloudWatch Synthetics ha utilizado cuando utiliza la versión de tiempo de ejecución syn-nodejs-2.1 o posteriores.

Problemas de condiciones de carrera de los canarios

Para disfrutar de la mejor experiencia al usar CloudWatch Synthetics, asegúrese de que el código escrito para los canarios sea idempotente. De lo contrario, en raras ocasiones, las ejecuciones de canarios pueden encontrarse con condiciones de carrera cuando el canario interactúa con el mismo recurso en distintas ejecuciones.

Solución de problemas de un valor controlado en una VPC

Si tiene problemas después de crear o actualizar un valor controlado en una VPC, puede encontrar la solución en una de las siguientes secciones.

Un valor controlado nuevo muestra estado de error o no se puede actualizar

Si crea un valor controlado para ejecutarlo en una VPC y este entra inmediatamente en estado de error, o bien no puede actualizar un valor controlado para ejecutarlo en una VPC, es posible que el rol del valor controlado no tenga los permisos correctos. Para ejecutarse en una VPC, un valor controlado debe tener los permisos ec2:CreateNetworkInterface, ec2:DescribeNetworkInterfaces y ec2:DeleteNetworkInterface. Todos estos permisos están contenidos en la política administrada AWSLambdaVPCAccessExecutionRole. Para obtener más información, consulte Rol de ejecución y permisos de usuario.

Si el problema se produjo al crear un valor controlado, debe eliminarlo y crear uno nuevo. Si utiliza la consola de CloudWatch para crear el nuevo valor controlado, en Permisos de acceso, seleccione Crear un nuevo rol. Se crea un nuevo rol que incluye todos los permisos necesarios para ejecutar el valor controlado.

Si el problema ocurre al actualizar un valor controlado, puede volver a actualizarlo y proporcionar un nuevo rol que tenga los permisos necesarios.

Error “No se devolvió ningún resultado de prueba”

Si un valor controlado muestra un error de tipo “no se devolvió ningún resultado de prueba”, la causa puede ser uno de los problemas siguientes:

  • Si la VPC no tiene acceso a Internet, debe utilizar los puntos de conexión de VPC para proporcionar al valor controlado acceso a CloudWatch y a Amazon S3. Debe habilitar las opciones DNS Resolution (Resolución de DNS) y DNS hostname (Nombre de host DNS) en la VPC para que estas direcciones de punto de enlace se resuelvan correctamente. Para obtener más información, consulte Uso de DNS con su VPC y Uso de CloudWatch y CloudWatch Synthetics con puntos de conexión de VPC de interfaz.

  • Los Canaries deben ejecutarse en subredes privadas dentro de una VPC. Para comprobarlo, abra la página Subnets (Subredes) en la consola de VPC. Compruebe las subredes que seleccionó al configurar el valor controlado. Si tienen una ruta a una gateway de Internet (igw-), no son subredes privadas.

Para ayudarlo a solucionar estos problemas, consulte los registros del valor controlado.

Cómo ver los eventos de registro de un valor controlado
  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación, seleccione Grupos de registro.

  3. Elija el nombre del grupo de registro del valor controlado. El nombre del grupo de registro comienza por /aws/lambda/cwsyn-canary-name.

Solución de problemas de un canario con reintento automático

Para entender por qué el canario está fallando o para analizar intentos fallidos específicos, siga estos pasos de solución de problemas.

  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación, elija Señales de aplicación, Valores controlados de Synthetics.

  3. Elija la pestaña Canario.

  4. En la pestaña Disponibilidad, puede examinar los detalles de la ejecución de las siguientes maneras:

    • Selección de un punto específico en el gráfico de ejecuciones del canario

    • En Problemas, seleccione un registro. Tenga en cuenta que los reintentos están etiquetados y comparten marcas de tiempo con sus ejecuciones programadas.

    Puede ver información adicional en Pasos, Captura de pantalla, Registros, Archivo HAR o Rastros (si está habilitado el rastreo activo).

  5. En Artefactos del canario y ubicación de Amazon S3, puede acceder al artefacto y navegar hasta las carpetas o buckets de Amazon S3 a través de los enlaces disponibles.

  6. El gráfico de Ejecuciones del canario utiliza puntos de diferentes colores para indicar distintos estados:

    • Puntos azules: indican ejecuciones programadas exitosas con un valor constante del 100 %.

    • Puntos rojos: muestran fallos tanto de las ejecuciones programadas como de todos los reintentos, marcados con un 0 %.

    • Puntos anaranjados: muestran 0 % o 100 %. El 0 % indica que se está reintentando tras un intento anterior fallido, y el 100 % significa que se ha conseguido el éxito tras el reintento.