Los tests HTTP te permiten enviar solicitudes HTTP a los endpoints de API de tus aplicaciones para verificar las respuestas y las condiciones definidas, como el tiempo de respuesta global, el código de estado esperado, la cabecera o el contenido del cuerpo.
Los tests HTTP pueden ejecutarse tanto desde localizaciones gestionadas como de localizaciones privadas dependiendo de tu preferencia de ejecución de tests desde fuera o dentro de tu red. Los tests HTTP pueden ejecutarse de forma programada, bajo demanda o directamente dentro de tus pipelines CI/CD.
Configuración
Puedes crear un test utilizando una de las siguientes opciones:
Crea un test a partir de una plantilla:
Pasa el ratón por encima de una de las plantillas ya rellenadas y haz clic en View Template (Ver plantilla). Se abrirá un panel lateral en el que se mostrará la información de configuración rellenada previamente, que incluye: detalles de tests, detalles de solicitudes, aserciones, condiciones de alerta y parámetros de monitor.
Haz clic en +Create Test (+Crear test) para abrir la página Definir solicitud, en la que podrás revisar y editar las opciones de configuración rellenadas previamente. Los campos presentados son idénticos a aquellos disponibles cuando se crea un test desde cero.
Haz clic en Save Details (Guardar detalles) para enviar tu test de API.
Crea un test desde cero:
Para crear un test desde cero, haz clic en la plantilla + Start from scratch (+ Empezar desde cero), selecciona el tipo de solicitud HTTP y especifica la URL a consultar.
Los métodos disponibles son: GET, POST, PATCH, PUT, HEAD, DELETE y OPTIONS. Se admiten las URL http y https.
Añade etiquetas (tags) de entorno así como cualquier otra etiqueta a tu test HTTP. A continuación, puedes utilizar estas etiquetas para filtrar a través de tus tests Synthetic en la página de monitorización Synthetic y tests continuos.
Haz clic en Enviar para probar la configuración de la solicitud. Aparecerá una vista previa de la respuesta en la parte derecha de la pantalla.
Haz clic en Create Test (Crear test) para enviar tu test de API.
Fragmentos
When setting up a new Synthetic Monitoring API test, use snippets to automatically fill in basic auth, performance, and regions, rather than selecting these options manually. The following snippets are available:
Basic Auth: Automatically test your APIs using pre-populated basic auth headers, JavaScript, bearer token, and API/app key auth variables.
Performance: Automatically configure a test with the shortest frequency (one minute), perform a gRPC health check, and test for overall response time latency with a breakdown of network timing.
Regions: Automatically test your API endpoint against a location in each of the three primary geographic regions (AMER, APAC and EMEA).
Opciones avanzadas
Versión HTTP: Selecciona HTTP/1.1 only, HTTP/2 only o HTTP/2 fallback to HTTP/1.1.
Seguir redirecciones: Selecciona esta opción para que tu test HTTP pueda acceder a un máximo de diez redirecciones al realizar la solicitud.
Ignorar error de certificado del servidor: Selecciona esta opción para que tu test HTTP continúe con la conexión, aunque se produzcan errores al validar el certificado SSL.
Tiempo de espera: Especifica la cantidad de tiempo en segundos antes de que se inicie un tiempo de espera en el test.
Request headers (Encabezados de la solicitud): define encabezados para añadir a tu solicitud HTTP. También puedes anular los encabezados predeterminados (por ejemplo, el encabezado user-agent).
Cookies: define cookies para añadir a tu solicitud HTTP. Define varias cookies con el formato <COOKIE_NAME1>=<COOKIE_VALUE1>; <COOKIE_NAME2>=<COOKIE_VALUE2>.
Certificado de cliente: Autentícate a través de mTLS cargando tu certificado de cliente (.crt) y la clave privada asociada (.key) en formato PEM. Puedes utilizar la biblioteca openssl para convertir tus certificados. Por ejemplo, puedes convertir un certificado PKCS12 en certificados y claves privadas en formato PEM.
HTTP Basic Auth (Autenticación básica de HTTP): añade credenciales de autenticación básica de HTTP.
Autenticación Digest: Añade credenciales de autenticación Digest.
NTLM: añade credenciales de autenticación NTLM. Es compatible con NTLMv2 y NTLMv1.
AWS Signature v4: Introduce tu ID de clave de acceso y tu clave de acceso secreta. Datadog genera la firma para tu solicitud. Esta opción utiliza la implementación básica de SigV4. Las firmas específicas, como Amazon S3, no son compatibles de forma predefinida.
Para las solicitudes de transferencia “Single Chunk” a buckets de Amazon S3, añade x-amz-content-sha256 con el cuerpo de la solicitud codificado con sha256 como cabecera (para un cuerpo vacío: x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855).
OAuth 2.0: Elige entre conceder credenciales de cliente o una contraseña de propietario de recurso e introduce un token de acceso URL. Dependiendo de tu selección, introduce un ID de cliente y un secreto, o un nombre de usuario y una contraseña. En el menú desplegable, selecciona una opción para enviar el token de la API como encabezado de autenticación básica o envía las credenciales del cliente en el cuerpo. Opcionalmente, puedes proporcionar información adicional como la audiencia, el recurso y el contexto (así como el ID y el secreto del cliente, si seleccionaste Contraseña del propietario del recurso).
Codificar parámetros: Añade el nombre y el valor de los parámetros de consulta que requieren codificación.
Tipo de cuerpo: Selecciona el tipo de cuerpo de la solicitud (application/json, application/octet-stream, application/x-www-form-urlencoded, multipart/form-data, text/html, text/plain, text/xml, GraphQL o None) que quieres añadir a tu solicitud HTTP.
Cuerpo de la solicitud: Añade el contenido del cuerpo de tu solicitud HTTP.
El cuerpo de la solicitud está limitado a un tamaño máximo de 50 kilobytes para application/json, application/x-www-form-urlencoded, text/html, text/plain, text/xml, GraphQL.
El cuerpo de la solicitud está limitado a un archivo de 3 megabytes para application/octet-stream.
El cuerpo de la solicitud está limitado a tres archivos de 3 megabytes cada uno para multipart/form-data.
Proxy URL (URL del proxy): especifica la URL del proxy por la que debe pasar la solicitud HTTP (http://<YOUR_USER>:<YOUR_PWD>@<YOUR_IP>:<YOUR_PORT>).
Cabecera de proxy: Añade cabeceras para incluir en la solicitud HTTP al proxy.
No guardar el cuerpo de la respuesta: Selecciona esta opción para evitar que se guarde el cuerpo de la respuesta en tiempo de ejecución. Esta opción es útil para garantizar que no se muestren datos confidenciales en los resultados del test, pero debes utilizarla con prudencia ya que puede dificultar la resolución de problemas. Para obtener recomendaciones de seguridad, consulta Seguridad en la monitorización Synthetic.
Define variables para tus tests de API HTTP con JavaScript:
Definición de aserciones
Las aserciones definen cuál es el resultado esperado de un test. Después de hacer clic en URL del test, se añaden aserciones básicas de response time, status code y headercontent-type basadas en la respuesta obtenida. Debes definir al menos una aserción para que sea monitorizada por tu test.
Tipo
Operador
Tipo de valor
cuerpo
contains, does not contain, is, is not, matches, does not match, jsonpath, xpath
Los tests HTTP pueden descomprimir cuerpos con las siguientes cabeceras content-encoding: br, deflate, gzip y identity.
Puedes crear hasta 20 aserciones por test de API haciendo clic en Nueva aserción o haciendo clic directamente en la vista previa de la respuesta:
Para aplicar una lógica OR en una aserción, utiliza el comparador matches regex para definir una expresión regular con varios valores esperados, como (200|302). Por ejemplo, te podría interesar que tu test HTTP tenga éxito cuando el servidor responde con un código de estado 200 o 302. La aserción status code tiene éxito si el código de estado es 200 o 302. También puedes añadir la lógica OR en una aserción de body o header.
Si un test no contiene una aserción en el cuerpo de la respuesta, la carga útil del cuerpo cae y devuelve un tiempo de respuesta asociado para la solicitud dentro del límite de tiempo de espera establecido por el worker de Synthetics.
Si un test contiene una aserción en el cuerpo de la respuesta y se alcanza el límite de tiempo de espera, aparecerá el error Assertions on the body/response cannot be run beyond this limit.
Seleccionar localizaciones
Selecciona las Localizaciones desde donde ejecutar tu test HTTP. Los tests HTTP pueden ejecutarse desde localizaciones gestionadas y también privadas, en función de si prefieres ejecutar el test desde fuera o desde dentro de tu red.
Datadog’s out-of-the-box managed locations allow you to test public-facing websites and endpoints from regions where your customers are located.
Americas
APAC
EMEA
Canada Central (AWS)
Hong Kong (AWS)
Cape Town (AWS)
Northern California (AWS)
Mumbai (AWS)
Frankfurt (AWS)
Northern Virginia (AWS)
Seoul (AWS)
Ireland (AWS)
Ohio (AWS)
Singapore (AWS)
London (AWS)
Oregon (AWS)
Sydney (AWS)
Paris (AWS)
São Paulo (AWS)
Tokyo (AWS)
Stockholm (AWS)
Virginia (Azure)
Osaka (AWS)
Milan (AWS)
Jakarta (AWS)
Bahrain (AWS)
The Datadog for Government site (US1-FED) uses the following managed location:
Americas
US-West
Indicar la frecuencia del test
Los tests HTTP se pueden ejecutar:
De forma programada para garantizar que los endpoints más importantes siempre resulten accesibles para tus usuarios. Selecciona la frecuencia con la que quieres que Datadog ejecute tu test HTTP.
En tus pipelines CI/CD para empezar a realizar envíos sin temer que un código defectuoso pueda afectar a la experiencia de tus clientes.
Bajo demanda para ejecutar tus tests cuando sea más conveniente para tu equipo.
Define alert conditions
Set alert conditions to determine the circumstances under which you want a test to fail and trigger an alert.
Alerting rule
When you set the alert conditions to: An alert is triggered if any assertion fails for X minutes from any n of N locations, an alert is triggered only if these two conditions are true:
At least one location was in failure (at least one assertion failed) during the last X minutes;
At one moment during the last X minutes, at least n locations were in failure.
Fast retry
Your test can trigger retries X times after Y ms in case of a failed test result. Customize the retry interval to suit your alerting sensibility.
Location uptime is computed on a per-evaluation basis (whether the last test result before evaluation was up or down). The total uptime is computed based on the configured alert conditions. Notifications sent are based on the total uptime.
Configure the test monitor
A notification is sent by your test based on the alerting conditions previously defined. Use this section to define how and what to message your team.
Similar to how you configure monitors, select users and/or services that should receive notifications either by adding an @notification to the message or by searching for team members and connected integrations with the dropdown menu.
Show when the monitor matches priority (P1 to P5).
{{ ^is_priority }}
Show unless the monitor matches priority (P1 to P5).
Specify how often you want your test to re-send the notification message in case of test failure. To prevent renotification on failing tests, leave the option as Never renotify if the monitor has not been resolved.
Click Create to save your test configuration and monitor.
La creación de tests de API sugiere endpoints del Catálogo de servicios y de los tests de API existentes para pre-rellenar tu formulario de tests con opciones relevantes.
Utiliza las fuentes de datos existentes de Datadog, como las trazas (traces) APM, la detección de endpoints del Catálogo de servicios y los tests Synthetic existentes similares, creados por los usuarios.
Empieza a escribir en la entrada URL del test de la API para obtener sugerencias de endpoints o tests similares en la monitorización Synthetic:
A continuación, selecciona una sugerencia para pre-rellenar la configuración de tu test (opciones y cabeceras de solicitud, autenticación y variables):
Create local variables
To create a local variable, click Create a Local Variable. You can select one of the following available builtins to add to your variable string:
{{ numeric(n) }}
Generates a numeric string with n digits.
{{ alphabetic(n) }}
Generates an alphabetic string with n letters.
{{ alphanumeric(n) }}
Generates an alphanumeric string with n characters.
{{ date(n unit, format) }}
Generates a date in one of Datadog’s accepted formats with a value corresponding to the UTC date the test is initiated at + or - n units.
{{ timestamp(n, unit) }}
Generates a timestamp in one of Datadog’s accepted units with a value corresponding to the UTC timestamp the test is initiated at +/- n units.
{{ uuid }}
Generates a version 4 universally unique identifier (UUID).
{{ public-id }}
Injects the Public ID of your test.
{{ result-id }}
Injects the Result ID of your test run.
To obfuscate local variable values in test results, select Hide and obfuscate variable value. Once you have defined the variable string, click Add Variable.
Para visualizar tu lista de variables, escribe {{ en el campo de tu elección.
Fallo del test
Un test se considera FAILED si no satisface una o más aserciones o si la solicitud ha fallado prematuramente. En algunos casos, el test puede fallar sin comprobar las aserciones respecto al endpoint.
Los errores más comunes incluyen los siguientes:
AUTHENTICATION_ERROR
La monitorización Synthetic desactiva automáticamente los reintentos de tests cuando se producen fallos de autenticación. Esta medida de seguridad permanece vigente hasta que se actualiza el test con credenciales válidas. De este modo se evitan ejecuciones de tests innecesarios que generarían falsas alertas e incrementarían el uso facturable.
CONNREFUSED
No se ha podido establecer una conexión, ya que la máquina de destino la ha rechazado continuamente.
CONNRESET
El servidor remoto ha cerrado bruscamente la conexión. Entre las posibles causas se incluyen que el servidor web haya encontrado un error o falla al responder, o que se haya perdido la conectividad del servidor web.
DNS:
No se ha encontrado la entrada DNS para la URL del test. Entre las posibles causas se incluyen una URL de test mal configurada o una configuración incorrecta de las entradas DNS.
Error performing HTTP/2 request
No se ha podido realizar la solicitud. Para obtener más información, consulta la página de errores específicos.
INVALID_REQUEST
La configuración del test no es válida (por ejemplo, un error tipográfico en la URL).
La solicitud no se ha podido completar en un plazo razonable. Pueden ocurrir dos tipos de TIMEOUT:
TIMEOUT: The request couldn't be completed in a reasonable time. indica que la duración de la solicitud ha alcanzado el tiempo de espera definido en el test (por defecto se define en 60s).
Para cada solicitud, en la cascada de la red sólo se muestran las etapas completadas de la solicitud. Por ejemplo, en el caso de que sólo se muestre Total response time, el tiempo de espera se produjo durante la resolución DNS.
TIMEOUT: Overall test execution couldn't be completed in a reasonable time. indica que la duración del test (solicitud + aserciones) alcanza la duración máxima (60,5 segundos).
MALFORMED_RESPONSE
El servidor remoto ha respondido con una carga útil que no cumple con las especificaciones HTTP.
Permisos
De manera predeterminada, sólo los usuarios con los roles de administrador de Datadog y estándar de Datadog pueden crear, editar y eliminar tests HTTP Synthetic. Para crear, editar y eliminar tests HTTP Synthetic, actualiza tu usuario a uno de esos dos roles predeterminados.
Si estás utilizando la función de rol personalizado, añade tu usuario a cualquier rol que incluya permisos synthetics_read y synthetics_write.
Restringir el acceso
Use granular access control to limit who has access to your test based on roles, teams, or individual users:
Open the permissions section of the form.
Click Edit Access.
Click Restrict Access.
Select teams, roles, or users.
Click Add.
Select the level of access you want to associate with each of them.
Click Done.
Note: You can view results from a Private Location even without Viewer access to that Private Location.