Te ofrecemos esta traducción automática para facilitar la lectura.
En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.
Escribir pruebas de API Sintético (tiempo de ejecución legacy - Node.js 10 y versiones anteriores)
Utilice las pruebas API de monitoreo sintético para monitor sus extremos de API y asegurarse de que esté funcionando correctamente. New Relic utiliza el módulo http-request internamente para realizar llamadas HTTP a su extremo y validar los resultados.
Aquí presentamos algunas funciones de ejemplo que muestran cómo utilizar el objeto $http para enviar su solicitud. Para obtener documentación detallada sobre las opciones disponibles para este objeto, consulte el archivo readme de solicitud http. (Tenga en cuenta que Solicitud está en desuso, pero estas opciones aún se aplican).
Las pruebas de API funcionan con el módulo http-request , que está disponible a través del objeto $http . Una vez cada intervalo de frecuencia, New Relic consulta su extremo desde cada una de las ubicaciones seleccionadas. Para obtener instrucciones sobre cómo crear un monitor, consulte Agregar monitores.
Defina opciones de solicitud como el extremo de la URL y encabezados personalizados.
Si está configurando SSL o opciones de agente, consulte Requisitos de SSL y agentOptions. Recomendamos utilizar SSL para evitar exponer credenciales de texto sin formato en sus encabezados.
For SSL and agentOptions: Si configura opciones SSL o proporciona un objeto agentOptions , la propiedad agent en el objeto de solicitud options deberá establecerse en $globalAgents.https o $globalAgents.http para garantizar que sus solicitudes HTTP utilicen el agente global instrumentado.
A continuación se muestra un ejemplo del uso de una opción SSL o agentOptions:
Este ejemplo utiliza agentOptions:
//Declare optional metadata
var options = {
//Specify the endpoint URL
url: 'https://api-endpoint.example.com',
//Specify optional headers
headers: {
'Endpoint-Key': 'uqNTC57Phe72pnnB8JuJmwAr7b09nKSKSz',
'Additional-Header': 'Additional-Header-Data'
}
//Specify global agent as the http agent
agent: $globalAgents.https,
//Set SSL option
strictSSL: true,
//Specify http agent options
agentOptions: {
maxVersion: 'TLSv1.1'
},
};
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.
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.
nrql: 'SELECT average(duration) FROM Transaction',
},
}),
};
// Define expected results using callback function
function callback(err, response, body) {
// Log JSON results from endpoint to Synthetics console
console.log(JSON.parse(body));
console.log('Script execution completed');
}
// Make POST request, passing in options and callback
$http.post(options, callback);
Este ejemplo envía un evento personalizado que contiene enteros estáticos a la API de eventos:
//Define your authentication credentials.
var myAccountID = '{YOUR_ACCOUNT_ID}';
var myLicenseKey = '{YOUR_LICENSE_KEY}';
//Import the 'assert' module to validate results.
var assert = require('assert');
var options = {
//Define endpoint URL.
url: "https://insights-collector.newrelic.com/v1/accounts/"+myAccountID+"/events",
//Define body of POST request.
body: '[{"eventType":"SyntheticsEvent","integer1":1000,"integer2":2000}]',
//Define New Relic license key and expected data type.
headers: {
'Api-Key': myLicenseKey,
'Content-Type': 'application/json'
}
};
//Define expected results using callback function.
function callback(error, response, body) {
//Log status code to Synthetics console.
console.log(response.statusCode + " status code")
//Verify endpoint returns 200 (OK) response code.
assert.ok(response.statusCode == 200, 'Expected 200 OK response');
//Parse JSON into variable.
var info = JSON.parse(body);
//Verify that `info` contains element named `success` with a value of `true`.
assert.ok(info.success == true, 'Expected True results in Response Body, result was ' + info.success);
//Log end of script.
console.log("End reached");
}
//Make POST request, passing in options and callback.
$http.post(options, callback);
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.
Este ejemplo realiza una PUBLICACIÓN en la API de eventos y luego valida que la respuesta sea {"success":true}: