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.
Envoyez un événement personnalisé avec notre API événement
L'API événement vous permet d'envoyer des données d'événement personnalisées à New Relic. Ces événements peuvent ensuite être interrogés et cartographiés.
Vous souhaitez tester notre API événement ? Créez un compte New Relic gratuitement ! Aucune carte de crédit requise.
Notre API d'événement est une option permettant de générer des rapports de données personnalisées. Une autre option consiste à signaler l'attribut personnalisé. Pour un aperçu des raisons pour lesquelles vous utiliseriez l'API événement par rapport à d'autres options, consultez événement personnalisé et attribut.
Exigences
Pour les limites de l'API événement et les attributs restreints, voir Limites.
Assurez-vous que la connectivité sortante sur le port TCP 443 est autorisée sur la plage CIDR qui correspond à votre région. La méthode de configuration préférée consiste à utiliser le nom DNS insights-collector.newrelic.com ou insights-collector.eu01.nr-data.net.
Exemple de soumission et d'interrogation d'un événement personnalisé
Voici un exemple de l'API événement en action :
l'événement personnalisé peut être inséré via l' API d'agent ou directement via l'API événement. L'exemple suivant montre comment envoyer un type d'événement personnalisé CLIRun, qui suit le moment où un outil de ligne de commande écrit en Ruby voit son processus quitter en raison d'une exception.
# Hook into the runtime 'at_exit' event
at_exit do
# Name the custom event
payload ={'eventType'=>'CLIRun'}
# Check to see if the process is exiting due to an error
puts "Sending run summary to New Relic: #{payload.to_json}"
begin
response = http.request(request)
puts "Response from New Relic: #{response.body}"
rescueException=> e
puts "There was an error posting to New Relic. Error: #{e.inspect}"
end
end
Vous pouvez ensuite exécuter une requête NRQL pour obtenir plus de détails sur cet événement personnalisé, comme :
SELECTcount(*)FROM CLIRun FACET errors SINCE 1 week ago
Comment utiliser l'API événement
L'API événement est un point de terminaison asynchrone. Cela vous permet d'envoyer un très grand volume de POSTS, de manière fiable, avec une latence de réponse très faible.
L'API événement limite la taille, le débit et les caractères autorisés dans événement personnalisé. De plus, comme d’autres données disponibles dans NRQL, les événements personnalisés ne peuvent pas être mis à jour ou supprimés après leur création. Si vous rencontrez des problèmes avec votre événement personnalisé, suivez les procédures de dépannage ou créez un nouvel événement personnalisé.
Formater le JSON
L'API événement accepte des formats spécifiques pour les attributs inclus dans la charge. Seules les valeurs flottantes ou de chaîne sont autorisées.
Lors de la définition de l'attribut pour votre événement personnalisé, suivez ces directives de format JSON.
Attributs
Directives relatives au format JSON
eventType
Required: Le nom de l'événement.
Valeurs flottantes et chaînes
Format de valeur flottante : "label":value
Format de valeur de chaîne : "label":"value"
Types de données
L'API accepte uniquement les paires valeur-clé, pas les valeurs map/object ou éventail. Les types de données pris en charge pour cette API sont les chaînes et les nombres (entiers ou flottants). Pour plus d'informations, voir Exigences en matière de données.
Chiffres dans les chaînes
Pour des raisons de performances, nous ne convertissons pas les valeurs soumises à l'API. Par exemple, nous traitons 123 comme un nombre et "123" comme une chaîne.
La base de données ne stockera que des nombres jusqu'à 64 bits. Tous les nombres supérieurs à 64 bits seront tronqués.
Dates
Pour les attributs contenant des informations de date, utilisez un horaire Unix non formaté dans le formateur de données. Vous pouvez définir l'attribut date soit en secondes, soit en millisecondes, tous deux relatifs à l'époque Unix.
Temps
Sauf indication contraire, l'horodatage d'un événement soumis correspond à l'heure à laquelle il a été soumis à New Relic. Pour spécifier une heure différente pour l'événement, utilisez l' attributtimestamp.
Voici un exemple d'un ensemble de données JSON typique à envoyer avec l'API. Cet appel envoie deux événements de type Purchase sous forme d'éventail JSON. Vous pouvez ajouter plusieurs événements dans un seul appel HTTP en utilisant un éventail JSON.
[
{
"eventType":"Purchase",
"account":3,
"amount":259.54
},
{
"eventType":"Purchase",
"account":5,
"amount":12309,
"product":"Item"
}
]
Lors de la génération du JSON, assurez-vous que vos attributs sont correctement formatés.
Les limites de taille et de débit suivantes s'appliquent aux événements envoyés via l'API d'événements :
Taille totale de la charge utile : 1MB(10^6 bytes) maximum per POST. Nous vous recommandons fortement d'utiliser la compression.
La charge utile doit être codée comme UTF-8.
Nombre maximum d'attribut par événement : 255
Longueur maximale du nom de l'attribut : 255 caractères
Longueur maximale de la valeur de l'attribut : 4 096 caractères
Certains attributs ont des restrictions supplémentaires :
accountId:Il s'agit d'un nom d'attribut réservé. S'il est inclus, il sera supprimé lors de l'ingestion.
entity.guid, entity.name et entity.type: Ces attributs sont utilisés en interne pour identifier l'entité. Toutes les valeurs soumises avec ces clés dans la section d'attribut d'un point de données métrique peuvent provoquer un comportement indéfini tel qu'une entité manquante dans l'UI ou une télémétrie ne s'associant pas à l'entité attendue. Pour plus d'informations, veuillez vous référer à la synthèse d'entité.
appId: La valeur doit être un entier. S'il ne s'agit pas d'un entier, le nom et la valeur de l'attribut seront supprimés lors de l'ingestion.
eventType:Cet attribut peut être une combinaison de caractères alphanumériques, _ traits de soulignement et : deux points.
timestamp:Cet attribut doit être un horodatage d'époque Unix, défini en secondes ou en millisecondes.
Soumettre l'événement personnalisé
Les données soumises à l'API événement utilisent un format JSON compressé dans une simple requête HTTPS POST. Cet exemple utilise gzip, mais vous pouvez également utiliser deflate.
bash
$
gzip-c example_events.json |curl-X POST -H"Content-Type: application/json"\
Invoke-WebRequest-Headers $headers-Method Post -Body $gzipBody"https://insights-collector.newrelic.com/v1/accounts/$accountId/events"
Important
Utilisez toujours la compression avec chaque charge utile. Cela vous permet d'envoyer plus de données et d'économiser des ressources lors de l'analyse.
Avant de générer votre requête HTTP, assurez-vous qu'elle est correctement formatée, notamment :
Le Api-Key contient le correct.
Le Content-Type est application/json.
La requête utilise uniquement POST. L'API n'accepte pas les requêtes PUT et GET.
L'API prend en charge les connexions persistantes HTTP/1.1. Cela est utile pour gérer les performances côté client sous de lourdes charges d'événements.
Vérifier ou résoudre la réponse à la demande
L'API événement suit un processus en deux étapes pour traiter requests:
L'API événement reconnaît ou rejette de manière synchrone la demande en fonction de la validation des en-têtes et du montant de la charge.
L'API événement analyse de manière asynchrone la charge après qu'une réponse HTTP réussie a été fournie au client. Cela peut générer une erreur en raison de données manquantes ou mal formées. Celles-ci sont classées comme des erreurs de soumission ou des erreurs d’analyse.
Toutes les soumissions réussies reçoivent une réponse 200, quelles que soient les erreurs de données pouvant exister dans la charge utile. La réponse inclut un uuid, qui est un identifiant unique créé pour chaque demande. Le uuid apparaît également dans tout événement d’erreur créé pour la demande.
les frais avec erreurs de soumission sont traités et renvoyés à l'expéditeur via un code de réponse HTTP.
Pour résoudre les erreurs de soumission de charge utile, reportez-vous à ces codes de réponse HTTP.
Erreurs de soumission
Dépannage
400
Longueur de contenu manquante ou non valide : impossible de traiter une demande vide.
403
Clé manquante ou invalide : Clé de licence invalide. Inscrivez un valide. Vous devez utiliser une clé de type License . Les touches Browser, Mobile ou User ne fonctionneront pas.
408
La demande a expiré : le traitement de la demande a pris trop de temps.
413
Contenu trop volumineux : la demande est trop volumineuse pour être traitée. Reportez-vous aux limites et aux caractères restreints pour résoudre les problèmes.
415
Type de contenu non valide : doit être application/JSON. L'API événement accepte tout type de contenu à l'exception des parties multiples/liées et suppose qu'il peut être analysé en JSON.
429
Trop de requests en raison de la limitation du débit.
503
Service temporairement indisponible : Demande de réessai
Des erreurs d’analyse se produisent si :
Un événement est envoyé dans une charge utile, mais il manque des données ou dépasse les limites maximales. New Relic supprimera l'événement individuel de la charge utile, générera un événementNrIntegrationErroret traitera le reste.
La charge utile JSON inclut du JSON mal formé ou des données requises manquantes.
la charge d'analyser les erreurs reçoit une réponse 200 pour indiquer une soumission réussie. Pour aider à résoudre les erreurs d’analyse, un nouveau type d’événement NrIntegrationError est créé. Toutes les erreurs d'analyse sont dues à une requête NRQL . Pour les messages d'erreur liés à un événement abandonné, New Relic inclura le nombre d'événements abandonnés dans le cadre du message.
Pour résoudre requests avec des erreurs d'analyse, reportez-vous à ces messages d'erreur.
Erreurs d'analyse
Dépannage
X événement(s) rejeté(s) car l'attribut appId n'était pas un entier
Un attribut appId a une valeur non entière, telle qu'une valeur décimale ou une chaîne.
X événement(s) rejeté(s) car eventType ne peut pas contenir les caractères suivants : [., \]
Un attribut eventType comprenait un caractère non valide, tel qu'un point ou une barre oblique inverse.
X événement(s) rejeté(s) car l'attribut ne contient pas de nom d'attribut
Un nom d’attribut a été défini sur null ou une chaîne vide.
X événement(s) rejeté(s) car le nom de l'attribut dépassait la longueur maximale
Un nom d’attribut comporte plus de 255 caractères.
X événement(s) rejeté(s) car la valeur de l'attribut dépassait la longueur maximale
Une valeur d’attribut était plus longue que 4096 caractères.
X événement(s) rejeté(s) car l'événement a dépassé le nombre maximum d'attributs
Un événement possède plus de 255 attributs.
X événement(s) rejeté(s) car attribut obligatoire manquant eventType
L'attribut eventType est requis pour l'événement personnalisé.
Erreur lors de l'analyse de la charge utile JSON
Une erreur s'est produite lors de l'analyse de la demande JSON en raison de problèmes de formatage ou de données corrompues.
requête et alerte avec NrIntegrationError
L' événementNrIntegrationErrorvous permet d'interroger et de définir sur les données personnalisées envoyées à votre compte New Relic. Recommandation : pour obtenir des alertes en cas d’erreurs d’analyse, créez une condition d’alerte NRQL pour NrIntegrationError. Utilisez cet exemple de requête NRQL :
SELECT message FROM NrIntegrationError WHERE newRelicFeature ='Event API'AND category ='EventApiException'
Attribut NrIntegrationError
Dépannage
timestamp
L'horodatage de réception de la demande. L'attribut timestamp prend un horodatage Unix entier de 64 bits dans les dernières 24 heures. Vous pouvez définir l'horodatage soit en secondes, soit en millisecondes, tous deux relatifs à l'époque Unix.
N'utilisez pas de décimale pour l'horodatage. Si une décimale est utilisée, l'attribut sera par défaut l'horodatage lors de la création de l'événement personnalisé.
newRelicFeature
Le nom de la fonctionnalité rencontrant des erreurs. Pour toutes les erreurs d'analyse d'événement personnalisé, ce sera Event API.
apiKeyPrefix
Les six premiers caractères du utilisé pour la requête qui a généré une erreur.
requestId
Le uuid renvoyé par l'API pour la requête qui a généré une erreur.
category
La catégorie de l'erreur. Pour un événement personnalisé, c'est EventApiException.
message
Contenu du message d'erreur.
name
Le nom de l'erreur. Pour un événement personnalisé, c'est toujours EventValidationException.
eventTypeSample
L'un des types d'événements ayant généré l'erreur, lorsqu'il était disponible.
Trouvez vos données
Pour trouver les données envoyées via l'API événement (et depuis les intégrations qui utilisent cette API), vous pouvez l'interroger. Par exemple, pour requêter un événement personnalisé en utilisant NRQL, vous exécuterez :
SELECT*FROM YOUR_CUSTOM_EVENT
Pour en savoir plus sur la façon d'effectuer une requête, voir requête data.
Limite des requestsHTTP
L'API événement a une limite de débit de 100 000 requests HTTP (POST) par minute et par compte. (Notez qu'il ne s'agit pas d'une limite sur le nombre d'événements par minute ; uniquement sur le nombre de POST par minute.)
Cette limite permet de garantir que les pics de trafic importants sur les comptes de notre plateforme multi-locataire n'affectent pas négativement les performances du service pour vous.
Si votre utilisation de l'API dépasse 100 000 POST dans une fenêtre d'une minute, nous rejetterons requests d'API ultérieures avec un code de réponse 429 pour le reste de la fenêtre d'une minute. À la fin de la fenêtre d'une minute, le compteur sera réinitialisé et permettra la reprise du trafic.
Cette limite est destinée à être un seuil supérieur que vous ne devriez pas atteindre dans des scénarios normaux. Si vous avez un nombre élevé de réponses 429, envisagez d'utiliser moins l'API. Si vous prévoyez un niveau d'activité supérieur à la normale dans un avenir proche et que vous souhaitez vous y préparer, contactez le support technique.