• /
  • EnglishEspañolFrançais日本語한국어Português
  • Se connecterDémarrer

Cette traduction automatique est fournie pour votre commodité.

En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.

Créer un problème

Écrire des tests API synthétiques

Le moniteur d'API scripté vérifie vos points de terminaison d'API pour s'assurer qu'ils fonctionnent correctement. Pour créer un moniteur d’API scripté, accédez à one.newrelic.com > Synthetic monitoring > Create a monitor, puis sélectionnez la mosaïque Endpoint availability .

Conseil

Pour afficher et partager d'autres exemples de tests API, visitez la section Script Synthetics dans le forum d'assistance ou la bibliothèque de démarrages rapides de monitoring Synthétique.

Utiliser le module API got

Les tests API sont alimentés par le module got, qui est disponible via l'objet $http . L'objet $http fournit une expérience personnalisée de type requestavec got, offrant à votre moniteur une compatibilité descendante pour les cas d'utilisation de base. L'expérience de type requestfournie par l'objet $http sera également renvoyée à tous les clients tentant d'utiliser request directement dans les environnements d'exécution d'API scriptés Node.js 16 et plus récents.

Les détails du timing des résultats seront fournis tant que vous utiliserez l'objet $http . Pour les cas d'utilisation d'API scriptés non couverts par l'objet $http , vous pouvez utiliser l'objet $har pour signaler des détails de synchronisation personnalisés.

Important

Après un temps d'exécution maximum de trois minutes, New Relic arrête manuellement le script.

syntheticApiTestScript

one.newrelic.com > Synthetic monitoring > Create monitor:L'éditeur script suggère des fonctions, des sélecteurs et d'autres éléments pour simplifier les commandes de script (disponibles sur GitHub).

Configurer les options de demande

Pour démarrer votre script :

  • Déclarez une variable (telle que options) pour stocker votre objet d'options obtenu.
  • Définissez les options de demande telles que le point de terminaison de l'URL et les en-têtes personnalisés.

Conseil

Pour une liste complète des options prises en charge, consultez les options obtenues dans la documentation got sur GitHub.

Voici un exemple de métadonnées facultatives dans l'objet options :

Envoyer une requête GET

Pour effectuer une requête GET, utilisez la méthode $http.get pour soumettre votre requête. Définissez vos options de demande, effectuez votre demande en utilisant $http.get, puis validez la réponse pour vous assurer que votre point de terminaison renvoie les résultats corrects.

L'exemple suivant montre comment vous pouvez :

  • Gérer les tentatives et les délais d'attente pour une requête GET
  • Analyser le corps de la réponse JSON.
  • Affirmer l'état de santé de l'application.
  • Stockez le résultat dans un attribut personnalisé.
/**
* Script Name: Advanced Example - Node 16.10.0
* Author: New Relic
* Version: 1.0
*/
const assert = require("assert")
// Get secure credentials
const applicationId = $secure.APP_ID
const apiKey = $secure.API_KEY
// The URL for the API endpoint to get information about a specific application
const URL = `https://api.newrelic.com/v2/applications/${applicationId}.json`
// Define headers, including the API key for authentication
const headers = {
"X-Api-Key": apiKey,
"Custom-Header": "CustomValue", // Example of a custom header
}
// Define got options for retries and timeouts
const 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)
})

Envoyer une requête POST

Pour faire une requête POST, utilisez la méthode $http.post pour soumettre votre requête. Définissez vos options de demande, effectuez votre demande en utilisant $http.post, puis validez la réponse pour vous assurer que votre point de terminaison renvoie les résultats corrects.

Important

L'environnement de script contient des répertoires protégés en écriture. Si votre script nécessite le stockage de fichiers, ajoutez l'un des chemins suivants au nom de fichier :

  • runtime/input-output/input/
  • runtime/input-output/output/

Valider les résultats

Pour valider vos résultats, importez le module assert pour définir votre cas de test. Appelez une méthode assert pour valider la réponse de votre point de terminaison. Si l'une des assert fonctions échoue, l'ensemble du contrôle sera considéré comme ayant échoué. Cela peut déclencher une notification d'alerte et affecter vos métriques.

Important

monitoring synthétique ne permet pas de lever d'exceptions. Les exceptions levées entraînent l’échec du script. Utilisez le module assert pour valider vos résultats et utilisez console.log() pour log les résultats dans la console de Synthétique.

Droits d'auteur © 2025 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.