Utilisez l' API métrique pour envoyer des métriques personnalisées à la plateforme New Relic. Ce document comprend un démarrage rapide pour envoyer vos premières métriques personnalisées, ainsi que des informations détaillées sur la façon de formater et d'envoyer vos données métriques.
Démarrage rapide : Envoyer des données métriques
Nous rapportons les types métriques count
, gauge
et summary
. Pour plus d'informations sur les métriques, consultez notre documentation.
Soumettez les données métriques à New Relic via une requête HTTP POST. Composez chaque requête avec un ou plusieurs points de données métriques, constitués d'un name
, d'un timestamp
et d'un value
pour la métrique.
Suivez cet exemple pour envoyer vos premiers points de données métriques à New Relic :
Obtenez le pour le compte auquel vous souhaitez signaler des données.
Insérez la clé de licence dans le JSON suivant, puis envoyez le JSON à notre point de terminaison.
Pour
timestamp
remplacezINSERT_CURRENT_TIMESTAMP
par un horodatage d'époque valide. Cet exemple crée un seul point de données métrique pour une métrique nomméememory.heap
, mais vous pouvez créer des points de données ou d'attribut supplémentaires en spécifiant des types de métrique ou en ajoutant des blocscommon
facultatifs.bash$curl -vvv -k -H "Content-Type: application/json" \>-H "Api-Key: NEW_RELIC_LICENSE_KEY" \>-X POST https://metric-api.newrelic.com/metric/v1 \>--data '[{$"metrics":[{$"name":"memory.heap",$"type":"gauge",$"value":2.3,$"timestamp":INSERT_CURRENT_TIMESTAMP,$"attributes":{"host.name":"dev.server.com"}$}]$}]'
La métrique devrait être disponible dans New Relic dans quelques secondes. Vous pouvez interroger les données de n’importe quelle interface NRQL à l’aide de cette requête :
FROM Metric SELECT max(memory.heap) TIMESERIES
Pour en savoir plus sur l'emplacement où les données s'affichent, consultez Rechercher les données de l'API métrique.
URL du point de terminaison
Utilisez un HTTP POST lors de l'envoi de données métriques aux points de terminaison d'API métrique :
https://metric-api.newrelic.com/metric/v1
Conseil
Si votre organisation héberge des données dans un data center de l'UE, assurez-vous d'utiliser le point de terminaison de la région UE. Pour cette API, le point de terminaison UE est :
https://metric-api.eu.newrelic.com/metric/v1
En-têtes de requête HTTP
Incluez les en-têtes de requête HTTP suivants avec la requête POST. Vous pouvez envoyer certains paramètres sous forme de paramètres de requête au lieu d'en-têtes de requête.
En-tête | Envoyer comme paramètre de requête ? | Détails |
---|---|---|
| Non | Required. Doit être |
| Non | Required (usually set automatically by the HTTP client). La longueur du corps de la requête en octets (octets de 8 bits), sauf si elle est envoyée avec un codage fragmenté. Cet en-tête est généralement défini par défaut par le client HTTP sous-jacent qui envoie les données et, dans la plupart des cas, ne devrait pas nécessiter d'effort supplémentaire de la part de l'utilisateur final. |
| Oui | Required. Un pour le compte auquel vous souhaitez signaler des données. Si cela est fourni à la fois comme en-tête et comme paramètre de requête, les valeurs doivent correspondre. |
| Non | Required if GZIP. La valeur doit être |
| Non | Optional - Reserved for future use. La valeur doit être un |
Corps de la requête HTTP
Le corps de la requête HTTP POST doit être au format JSON. Ce qui suit décrit les exigences et les recommandations pour la charge utile JSON.
La charge utile doit être codée comme UTF-8.
Structure
La charge utile JSON utilise cette structure :
- La charge JSON est un ensemble de cartes.
- Chaque carte doit contenir une clé
metrics
dont la valeur est un éventail contenant un ou plusieurs points de données métriques. - Un point de données métrique est identifié par un
name
,value
ettimestamp
ainsi qu'un ensemble facultatif d'attributs.
Paires de clés de valeur requises
Chaque carte de points de données métriques de l'éventail metrics
utilise la structure de valeur clé suivante :
Clé | Description |
---|---|
chaîne | Required. Le nom de la métrique. La valeur doit être inférieure à 255 caractères. |
numéro ou carte | Required. La valeur varie en fonction du type de métrique. Pour |
long | Required. L'heure de début de la métrique en heure Unix. La valeur par défaut est le fuseau horaire UTC. Ce champ prend également en charge les secondes, les microsecondes et les nanosecondes. Cependant, les données seront converties en millisecondes pour le stockage et la requête. Les métriques sont supprimées si leur horodatage remonte à plus de 48 heures dans le passé ou à plus de 24 heures dans le futur à partir du moment où elles sont signalées. |
positif long | Required for |
| Recommandé. Cela doit être l’un des types métriques pris en charge. Si vous ne spécifiez pas de type, la valeur par défaut sera |
chaînes, nombres JSON ou booléens | Recommandé. Une carte des paires de valeurs clés associées à cette métrique spécifique. Les valeurs peuvent être des chaînes, des nombres JSON ou des booléens. Les clés sont sensibles à la casse et doivent comporter moins de 255 caractères. |
Partager l'attribut sur plusieurs métriques avec common
Si vous souhaitez inclure un ensemble d'attributs sur plusieurs métriques (et ne pas ajouter le même attribut pour chaque métrique), vous pouvez utiliser le bloc common
. Il s'agit d'une carte facultative qui spécifie les informations qui s'appliquent à tous les points de données métriques associés. Les valeurs de la section commune seront remplacées si la même clé existe sur un point de données métrique.
Le bloc peut inclure :
Attribut | Description |
---|---|
long | L'heure de début de la métrique en heure Unix. La valeur par défaut est l'heure actuelle dans le fuseau horaire UTC. Ce champ prend également en charge les secondes, les microsecondes et les nanosecondes. Cependant, les données seront converties en millisecondes pour le stockage et l'interrogation ultérieure. |
positif long | Required for |
chaînes, nombres JSON ou booléens | Une carte des paires de valeurs clés associées à cette métrique spécifique. Les valeurs peuvent être des chaînes, des nombres JSON ou des booléens. |
Validation des réponses et codes d'état
L'API métrique renvoie un code de réponse 202
pour requests réussies. Lorsque vos données sont acceptées, un code de réponse HTTP 202
est renvoyé avec une structure de réponse comme celle-ci :
HTTP/1.1 202 AcceptedContent-Type: application/json; charset=UTF-8Content-Length: 52Access-Control-Allow-Methods: GET, POST, PUT, HEAD, OPTIONSAccess-Control-Allow-Credentials: trueAccess-Control-Allow-Origin: *Connection: keep-alive
{"requestId":"f0e7bfff-001a-b000-0000-01682bcf4565"}
Données manquantes avec 202
Un code 202
indique que l'API a bien reçu vos données et que celles-ci ont passé les contrôles de validation de base. Normalement, vos données seront disponibles pour interrogation en quelques secondes. Cependant, New Relic exécute une validation supplémentaire de manière asynchrone après réception de vos données. Si vous recevez une réponse 202
mais que vous ne trouvez pas votre métrique, cela indique que New Relic a trouvé une erreur lors de cette validation asynchrone.
Vous pouvez trouver ces erreurs en interrogeant l'événementNrIntegrationError
dans le compte associé à l'API d'insertion de clé que vous avez utilisée. Le requestId
de chaque requête sera étiqueté sur l'événement NrIntegrationError
. Pour plus d'informations, voir Résoudre les problèmes d'un événement NRIntegrationError
.
Codes d'état
L'API métrique peut renvoyer les codes d'état HTTP suivants :
Code d'état | Définition |
---|---|
| Données acceptées. |
| La structure de la demande n'est pas valide. |
| Échec d'authentification. |
| Le chemin de la demande est incorrect. |
| J'ai utilisé une méthode de requête autre que POST. |
| La demande a mis trop de temps à atteindre le point de terminaison. |
| L'en-tête |
| La charge utile était trop lourde. la charge doit être inférieure à 1 Mo (10^6 octets). |
| L'URI de la demande était trop longue. |
| Le |
| Le quota du taux de requêtes a été dépassé. |
| Les en-têtes de requête sont trop longs. |
| Une erreur de serveur s'est produite (veuillez réessayer). |