Si nos solutions de transfert de log ne répondent pas à vos besoins, vous pouvez utiliser notre API de logs pour envoyer les données log directement à New Relic via un point de terminaison HTTP.
Point de terminaison HTTP
Utilisez le point de terminaison applicable à votre compte New Relic :
Point de terminaison des États-Unis :
https://log-api.newrelic.com/log/v1
Point de terminaison de l’Union européenne (UE) :
https://log-api.eu.newrelic.com/log/v1
Point de terminaison FedRAMP :
https://gov-log-api.newrelic.com/log/v1
Configuration HTTP
Pour envoyer des données log à votre compte New Relic via l'API de Log :
Obtenez votre .
Vérifiez les limites et les caractères restreints pour votre charge utile JSON.
Générez le message JSON en utilisant les en-têtes et les champs de corps requis.
Assurez-vous que votre
Api-Key
ouLicense-Key
est inclus dans vos en-têtes ou paramètres de requête. Reportez-vous aux exemples de logs JSON.Envoyez votre message JSON au point de terminaison HTTP approprié pour votre compte New Relic dans une requête
POST
.- NOUS:
https://log-api.newrelic.com/log/v1
- UE:
https://log-api.eu.newrelic.com/log/v1
- Programme FedRAMP :
https://gov-log-api.newrelic.com/log/v1
- NOUS:
Générez du trafic et attendez quelques minutes, puis vérifiez les données de votre compte .
Si aucune donnée n'apparaît après avoir activé nos fonctionnalités , suivez nos procédures de dépannage.
En-têtes HTTP
Lors de la création de vos en-têtes HTTP, utilisez ces directives :
En-tête | Valeurs prises en charge |
---|---|
Requis |
|
Le formatage JSON gzippé est accepté. Si vous envoyez du JSON compressé, veuillez inclure les en-têtes Content-Type: application/json
et Content-Encoding: gzip
.
Authentification
Votre sert à authentifier votre demande auprès de l'API de Log et détermine le compte New Relic où vos messages de log soumis seront écrits. Il doit être transmis soit sous forme d'en-tête HTTP, soit sous forme de paramètre de chaîne de requête.
Option 1 : authentification à l'aide de l'en-tête HTTP
Transmettez votre clé de licence en ajoutant un en-tête HTTP personnalisé comme décrit ci-dessous :
En-tête | Valeurs prises en charge |
---|---|
| New Relic . Vous pouvez également l'envoyer via le paramètre de requête. |
Option 2 : authentification à l'aide d'un paramètre de chaîne de requête (authentification « sans en-tête »)
La clé de licence peut également être transmise en tant que paramètre de chaîne de requête dans l'URL. Cela est utile lors de l'envoi de logs à partir de sources basées sur le cloud qui n'autorisent pas les en-têtes de requête HTTP personnalisés.
Exemple: https://LOG_API_ENDPOINT/log/v1?Api-Key=YOUR_API_KEY_HERE
Paramètre de requête | Valeur |
---|---|
| Votre . Vous pouvez également l'envoyer via l'en-tête HTTP. |
Corps JSON
Vous pouvez envoyer votre message JSON en utilisant un ensemble d'attributs simplifié ou détaillé :
Types d'attributs pris en charge
L'attribut peut être de l'un des types suivants :
Tapez la requête JSON | Type stocké dans la base de données New Relic |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Array | Les éventails (arrays) sont convertis en chaînes puis stockés. Les logs OpenTelemetry prennent en charge les éventails homogènes. Pour plus d'informations, voir éventails dans OpenTelemetry. |
Limites et caractères restreints
Prudence
Évitez d’appeler notre API à partir du code d’une application destinée aux clients. Cela peut entraîner des problèmes de performances ou bloquer votre application si le temps de réponse est lent. Si vous devez procéder de cette manière, appelez notre API de manière asynchrone pour éviter ces problèmes de performances.
Restrictions sur le log envoyé à l'API de Log :
- 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 d'attribut par événement : 255 maximum.
- Longueur du nom de l'attribut : 255 caractères.
- Longueur de la valeur de l'attribut : les 4 094 premiers caractères sont stockés dans NRDB sous la forme d'un champ d'événement
Log
portant le même nom, tel quemessage
. Si la valeur de la chaîne dépasse 4 094 caractères, nous stockons la longue chaîne sous forme de blob.
Certains attributs spécifiques 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.appId
: Doit être un entier. Lorsque vous utilisez un type de données non entier, les données seront ingérées mais ne pourront plus être interrogées.entity.guid
,entity.name
etentity.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é.eventType
:Il s'agit d'un nom d'attribut réservé. S'il est inclus, il sera supprimé lors de l'ingestion.timestamp
:Doit être un horodatage d'époque Unix (en secondes ou en millisecondes) ou un horodatage au format ISO8601.
Important
les frais dont l'horodatage est supérieur à 48 heures peuvent être abandonnés.
Limites de débit sur le log envoyé à l'API de Log :
- Taux maximal de requests HTTP envoyées à l'API de Log : 300 000 requests par minute
- Taux maximal d'octets de log JSON non compressés envoyés à l'API de Log : 10 Go par minute
Violation de la limite de débit
Le dépassement des limites de débit affecte le comportement de l'API de Log. Suivez ces instructions si cela se produit.
format de charge du log
Nous acceptons toute charge utile JSON valide. La charge utile doit être codée comme UTF-8.
Attribut de message JSON
Analyse des attributs des messages JSON
Nos capacités de gestion des loganalyseront tout attribut message
en JSON. L'attribut JSON résultant dans le message analysé sera ajouté à l'événement. Si l'attribut message
n'est pas JSON, il est laissé tel quel.
Voici un exemple d'attribut message
:
{ "timestamp": 1562767499238, "message": "{\"service-name\": \"login-service\", \"user\": {\"id\": 123, \"name\": \"alice\"}}"}
Cela sera traité comme :
{ "timestamp": 1562767499238, "service-name": "login-service", "user": { "id": 123, "name": "alice" }}
Exemples de logs JSON
l'attribut peut être des types JSON scalaires comme une chaîne et un nombre. Ils peuvent également être des objets composés (ou imbriqués). L'attribut composé aura son attribut associé stocké avec des noms aplatis.
Par exemple, voici un attribut composé user
dans l'attribut d'une entrée log :
"attributes": { "action": "login", "user": { "id": 123, "name": "alice" }}
Cela entraînera le stockage de l'attribut suivant avec l'événement de log:
Attribut | Valeur |
---|---|
|
|
|
|
|
|
Exemple de message POST de log
Exemple de message de log POST
:
$POST /log/v1 HTTP/1.1$Host: log-api.newrelic.com$Content-Type: application/json$Api-Key: <YOUR_LICENSE_KEY>$Accept: */*$Content-Length: 319$[{$ "common": {$ "attributes": {$ "logtype": "accesslogs",$ "service": "login-service",$ "hostname": "login.example.com"$ }$ },$ "logs": [{$ "timestamp": <TIMESTAMP_IN_UNIX_EPOCH_OR_IS08601_FORMAT>,$ "message": "User 'xyz' logged in"$ },{$ "timestamp": <TIMESTAMP_IN_UNIX_EPOCH_OR_IS08601_FORMAT>,$ "message": "User 'xyz' logged out",$ "attributes": {$ "auditId": 123$ }$ }]$}]
Ce message POST
entraînerait le stockage du message de log suivant dans New Relic :
Attribut | Valeur |
---|---|
|
|
|
|
|
|
Voici un exemple d'attribut de bloc de log stocké :
Attribut | Valeur |
---|---|
|
|
|
|
|
|
Exemple de requête JSON POST
Voici un exemple de requête JSON POST :
$POST /log/v1 HTTP/1.1$Host: log-api.newrelic.com$Content-Type: application/json$Api-Key: <YOUR_LICENSE_KEY>$Accept: */*$Content-Length: 133${$ "timestamp": <TIMESTAMP_IN_UNIX_EPOCH_OR_IS08601_FORMAT>,$ "message": "User 'xyz' logged in",$ "logtype": "accesslogs",$ "service": "login-service",$ "hostname": "login.example.com"$}
Quelle est la prochaine étape ?
Explorez les données de logging sur votre plateforme.
- Obtenez une visibilité plus approfondie sur les données de performances de votre application et de votre plateforme en transmettant votre log avec nos capacités de logs en contexte .
- Configurer des alertes.
- interrogez vos données et créez un dashboard.