El monitor de API con secuencia de comandos verifica los extremos de API para asegurarse de que estén funcionando correctamente. Para crear un monitor API con secuencia de comandos, vaya a one.newrelic.com > Synthetic monitoring > Create a monitor y luego seleccione el icono Endpoint availability .
Sugerencia
Para ver y compartir otros ejemplos de pruebas de API, visite la sección de scripts de Sintético en el Foro de soporte o la biblioteca de inicios rápidos de Synthetic Monitoring.
Utilice el módulo API obtenido
Las pruebas de API funcionan con el módulo got, que está disponible a través del objeto $http . El objeto $http proporciona una experiencia personalizada similar a la requestcon got, lo que le brinda a su monitor compatibilidad con versiones anteriores para casos de uso básicos. La experiencia similar a requestproporcionada por el objeto $http también se devolverá para cualquier cliente que intente usar request directamente en Node.js 16 y tiempos de ejecución de API con script más recientes.
Se proporcionarán detalles sobre el tiempo de los resultados siempre que utilice el objeto $http . Para casos de uso de API con secuencias de comandos que no están cubiertos por el objeto $http , puede utilizar el objeto $har para informar detalles de tiempo personalizados.
Importante
Después de un tiempo de ejecución máximo de tres minutos, New Relic detiene manualmente el script.

one.newrelic.com > Synthetic monitoring > Create monitor: El editor script sugiere funciones, selectores y otros elementos para simplificar los comandos del script (disponibles en GitHub).
Configurar opciones de solicitud
Para iniciar su script:
- Declare una variable (como
options) para almacenar su objeto de opciones obtenidas. - Defina opciones de solicitud como el extremo de la URL y encabezados personalizados.
Sugerencia
Para obtener una lista completa de las opciones admitidas, consulte las opciones obtenidas en la documentación got en GitHub.
A continuación se muestra un ejemplo de metadatos opcionales en el objeto de opciones:
Enviar una solicitud GET
Para realizar una solicitud GET, utilice el método $http.get para enviar su solicitud. Defina las opciones de su solicitud, realice su solicitud usando $http.get y luego valide la respuesta para asegurarse de que su extremo devuelva los resultados correctos.
El siguiente ejemplo demuestra cómo puede:
- Manejar reintentos y tiempos de espera para una solicitud GET
- Analice el cuerpo de la respuesta json.
- Verificar el estado de salud de la aplicación.
- Almacena el resultado en un atributo personalizado.
/** * Script Name: Advanced Example - Node 16.10.0 * Author: New Relic * Version: 1.0 */
const assert = require("assert")
// Get secure credentialsconst applicationId = $secure.APP_IDconst apiKey = $secure.API_KEY
// The URL for the API endpoint to get information about a specific applicationconst URL = `https://api.newrelic.com/v2/applications/${applicationId}.json`
// Define headers, including the API key for authenticationconst headers = { "X-Api-Key": apiKey, "Custom-Header": "CustomValue", // Example of a custom header}
// Define got options for retries and timeoutsconst options = { headers: headers, timeout: { request: 10000, // Set a global timeout of 10000 milliseconds for the request }, retry: { limit: 3, // Retry a failed request up to 3 times statusCodes: [408, 413, 429, 500, 502, 503, 504], // Common status codes to retry on errorCodes: [ "ETIMEDOUT", "ECONNRESET", "EADDRINUSE", "ECONNREFUSED", "EPIPE", "ENOTFOUND", "ENETUNREACH", "EAI_AGAIN", ], methods: ["GET"], // Only retry for GET requests }, hooks: { beforeRetry: [ (options, error, retryCount) => { console.error( `Retrying after error ${error.code}, retry #: ${retryCount}` ) }, ], },}
// Make the GET request with a callback$http.get(URL, options, function (error, response, body) { if (error) { // Handle the error case console.error(`Request failed: ${error.message}`) return }
// Assert the response status code is 200 assert.equal(response.statusCode, 200, "Expected HTTP status code 200")
// Log the status code to the console console.log("Request Status Code:", response.statusCode)
// If further processing of the response body is needed, it can be done here // For example, parsing JSON response (if response is in JSON format) const jsonData = typeof body === "string" ? JSON.parse(body) : body
// Log the parsed JSON to the console console.log("Parsed JSON data:", jsonData)
// Check the application's health status const healthStatus = jsonData.application.health_status assert.equal(healthStatus, "green", "Expected the application's health status to be 'green'")
// If the assertion passes, the script will continue; otherwise, it will fail the monitor
// This shows up in SyntheticCheck as `custom.healthStatus` $util.insights.set("healthStatus", healthStatus)})Enviar una solicitud POST
Para realizar una solicitud POST, utilice el método $http.post para enviar su solicitud. Defina las opciones de su solicitud, realice su solicitud usando $http.post y luego valide la respuesta para asegurarse de que su extremo devuelva los resultados correctos.
Importante
El entorno del script contiene directorios protegidos contra escritura. Si su script requiere almacenar archivos, anteponga cualquiera de las siguientes rutas al nombre del archivo:
runtime/input-output/input/runtime/input-output/output/
Validar resultados
Para validar sus resultados, importe el módulo assert para definir su caso de prueba. Llame a un método assert para validar la respuesta de su extremo. Si alguna de las funciones assert falla, todo el monitor se considerará una verificación fallida. Esto puede activar una notificación de alerta y afectar su métrica.
Importante
Monitoreo sintético no permite excepciones lanzadas. Las excepciones lanzadas provocan un error en el script. Utilice el módulo assert para validar sus resultados y utilice console.log() para log los resultados en la consola de Sintético.