Si nuestras soluciones de reenvío de logs no satisfacen sus necesidades, puede utilizar nuestra API log para enviar datos log directamente a New Relic a través de un extremo HTTP.
Extremo HTTP
Utilice el extremo que corresponda a su cuenta New Relic:
Extremo de Estados Unidos (EE.UU.):
https://log-api.newrelic.com/log/v1
Extremo de la Unión Europea (UE):
https://log-api.eu.newrelic.com/log/v1
Extremo FedRAMP:
https://gov-log-api.newrelic.com/log/v1
Configuración HTTP
Para enviar datos log a su cuenta New Relic a través de la API log :
Consigue tu .
Revise los límites y caracteres restringidos para su carga útil JSON.
Genere el mensaje JSON utilizando los encabezados y campos de cuerpo requeridos.
Asegúrese de que su
Api-Key
oLicense-Key
esté incluido en sus encabezados o parámetro de consulta. Consulte los ejemplos de log JSON.Envíe su mensaje JSON al extremo HTTP apropiado para su cuenta New Relic en una solicitud
POST
.- A NOSOTROS:
https://log-api.newrelic.com/log/v1
- UE:
https://log-api.eu.newrelic.com/log/v1
- FedRAMP:
https://gov-log-api.newrelic.com/log/v1
- A NOSOTROS:
Genere algo de tráfico y espere unos minutos, luego verifique los datos de su cuenta .
Si no aparecen datos después de habilitar nuestras capacidades , siga nuestros procedimientos de resolución de problemas.
Encabezados HTTP
Al crear sus encabezados HTTP, utilice estas pautas:
Encabezamiento | Valores admitidos |
---|---|
Requerido |
|
Se acepta el formato JSON comprimido con Gzip. Si envía JSON comprimido, incluya los encabezados Content-Type: application/json
y Content-Encoding: gzip
.
Autenticación
Su sirve para autenticar su solicitud en la API log y determina la cuenta de New Relic donde se escribirán los mensajes de log enviados. Debe pasarse como un encabezado HTTP o un parámetro de cadena de consulta.
Opción 1: autenticar mediante el encabezado HTTP
Pase su clave de licencia agregando un encabezado HTTP personalizado como se describe a continuación:
Encabezamiento | Valores admitidos |
---|---|
| Una New Relic . También puede enviar esto a través del parámetro de consulta. |
Opción 2: autenticar mediante el parámetro de cadena de consulta (autenticación sin encabezado)
La clave de licencia también se puede pasar como parámetro de cadena de consulta en la URL. Esto resulta útil al enviar logs desde fuentes basadas en la nube que no permiten encabezados de solicitud HTTP personalizados.
Ejemplo: https://LOG_API_ENDPOINT/log/v1?Api-Key=YOUR_API_KEY_HERE
Parámetro de consulta | Valor |
---|---|
| Tu . También puedes enviar esto a través del encabezado HTTP. |
Cuerpo JSON
Puedes enviar tu mensaje JSON utilizando un conjunto de atributos simplificado o detallado:
Tipos de atributos soportados
El atributo puede ser de cualquiera de los siguientes tipos:
Escriba la solicitud JSON | Tipo almacenado en la base de datos de New Relic |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Matriz | (sin soporte) |
Límites y personajes restringidos
Advertencia
Evite llamar a nuestra API desde el código de una aplicación orientada al cliente. Esto puede causar problemas de rendimiento o bloquear su aplicación si el tiempo de respuesta es lento. Si necesita hacerlo de esta manera, llame a nuestra API de forma asincrónica para evitar estos problemas de rendimiento.
Restricciones sobre el log enviado a la API log :
Tamaño total de la carga útil:
1MB(10^6 bytes) maximum per POST
. Recomendamos encarecidamente utilizar compresión.
La carga útil debe estar codificada como
UTF-8
.
Número de atributos por evento: 255 máximo.
Longitud del nombre del atributo: 255 caracteres.
Longitud del valor del atributo: los primeros 4094 caracteres se almacenan en NRDB como un campo de evento
Log
con el mismo nombre, comomessage
. Si el valor de la cadena supera los 4094 caracteres, almacenamos la cadena larga como un blob.
Algunos atributos específicos tienen restricciones adicionales:
accountId
: Este es un nombre de atributo reservado. Si está incluido, se eliminará durante la ingesta.appId
: Debe ser un entero. Cuando se utiliza un tipo de datos no entero, los datos se ingerirán pero no se podrán consultar.entity.guid
,entity.name
yentity.type
: estos atributos se utilizan internamente para identificar la entidad. Cualquier valor enviado con estas claves en la sección de atributos de un punto de datos métrico puede causar un comportamiento indefinido, como la falta de entidad en la UI o la telemetría que no se asocia con la entidad esperada. Para obtener más información, consulte síntesis de entidad.eventType
: Este es un nombre de atributo reservado. Si está incluido, se eliminará durante la ingesta.timestamp
: Debe ser una timestamp de época Unix (ya sea en segundos o en milisegundos) o una timestamp con formato ISO8601.
Importante
La carga con marca de tiempo anterior a 48 horas puede eliminarse.
Límites de velocidad en el log enviado a la API log :
- Tasa máxima de solicitudes HTTP enviadas a la API log : 300.000 solicitudes por minuto
- Tasa máxima de bytes JSON log sin comprimir enviados a la API log : 10 GB por minuto
Compromiso de límite de tarifa
Exceder los límites de velocidad afecta el comportamiento de la API log . Siga estas instrucciones si esto sucede.
Formato de carga útil log
Aceptamos cualquier carga útil JSON válida. La carga útil debe codificarse como UTF-8.
Atributo de mensaje JSON
Análisis de atributos de mensajes JSON
Nuestras capacidades de administración de logs analizarán cualquier atributo message
como JSON. El atributo JSON resultante en el mensaje analizado se agregará al evento. Si el atributo message
no es JSON, se deja como está.
A continuación se muestra un atributo message
de ejemplo:
{ "timestamp": 1562767499238, "message": "{\"service-name\": \"login-service\", \"user\": {\"id\": 123, \"name\": \"alice\"}}"}
Esto será tratado como:
{ "timestamp": 1562767499238, "service-name": "login-service", "user": { "id": 123, "name": "alice" }}
Log ejemplos JSON
El atributo puede ser tipos JSON escalares como cadena y número. También pueden ser objetos compuestos (o anidados). El atributo compuesto tendrá su atributo asociado almacenado con nombres aplanados.
Por ejemplo, aquí hay un atributo user
compuesto en los atributos de una entrada de log :
"attributes": { "action": "login", "user": { "id": 123, "name": "alice" }}
Esto dará como resultado que el siguiente atributo se almacene con el log de evento:
Atributo | Valor |
---|---|
|
|
|
|
|
|
Ejemplo de mensaje POST log
Ejemplo de mensaje 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$ }$ }]$}]
Este mensaje POST
daría como resultado que el siguiente mensaje de log se almacene en New Relic:
Atributo | Valor |
---|---|
|
|
|
|
|
|
A continuación se muestra un ejemplo de atributo de bloque de log almacenado:
Atributo | Valor |
---|---|
|
|
|
|
|
|
Ejemplo de solicitud JSON POST
A continuación se muestra un ejemplo de una solicitud 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"$}
¿Que sigue?
Explore los datos de logging en su plataforma.
- Obtenga una visibilidad más profunda de los datos de rendimiento de su aplicación y de su plataforma reenviando su log con nuestras capacidades de logs en el contexto .
- Configurar alerta.
- Consulta tus datos y crea un panel.