Te ofrecemos esta traducción automática para facilitar la lectura.
En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.
Nuestra API de eventos es una opción para informar datos personalizados. Otra opción es informar el atributo personalizado. Para obtener una descripción general de por qué usaría la API de eventos frente a otras opciones, consulte evento personalizado y atributo.
Requisitos
Para conocer los límites de la API de eventos y el atributo restringido, consulte Límites.
Asegúrese de que la conectividad saliente en el puerto TCP 443 esté permitida en el rango CIDR que coincida con su región. El método de configuración preferido es utilizar el nombre DNS insights-collector.newrelic.com o insights-collector.eu01.nr-data.net.
Ejemplo de envío y consulta de un evento personalizado
A continuación se muestra un ejemplo de la API de eventos en acción:
El evento personalizado se puede insertar a través de las API del agente o directamente a través de la API del evento. El siguiente ejemplo muestra cómo enviar un tipo de evento personalizado CLIRun, que rastrea cuándo una herramienta de línea de comando escrita en Ruby tiene la salida del proceso debido a una excepción.
# 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
Luego, podrías ejecutar una consulta NRQL para obtener más detalles sobre ese evento personalizado, como:
SELECTcount(*)FROM CLIRun FACET errors SINCE 1 week ago
Cómo utilizar la API de eventos
La API de eventos es un extremo asíncrono. Esto le permite enviar un volumen muy grande de POSTS, de manera confiable, con una latencia de respuesta muy baja.
Sugerencia
Si su organización aloja datos en el centro de datos de la UE, asegúrese de utilizar el extremo de región de la UE adecuado.
Para enviar un evento personalizado a una cuenta de New Relic:
La API de eventos limita el tamaño, la velocidad y los caracteres permitidos en un evento personalizado. Además, al igual que otros datos disponibles en NRQL, los eventos personalizados no se pueden actualizar ni eliminar después de su creación. Si tiene problemas con su evento personalizado, siga los procedimientos de resolución de problemas o cree un nuevo evento personalizado.
Formatear el JSON
La API de eventos acepta formatos específicos para atributos incluidos en la carga útil. Sólo se permiten valores flotantes o de cadena.
Al definir un atributo para su evento personalizado, siga estas pautas de formato JSON.
Atributo
Directrices de formato JSON
eventType
Required: El nombre del evento.
Valores flotantes y de cadena
Formato de valor flotante: "label":value
Formato de valor de cadena: "label":"value"
Tipos de datos
La API solo acepta pares de valores principales, no valores de mapa/objeto ni de matriz. Los tipos de datos admitidos por esta API son cadenas y números (enteros o flotantes). Para obtener más información, consulte Requisitos de datos.
Dígitos en cadenas
Por motivos relacionados con el rendimiento, no emitimos valores enviados a la API. Por ejemplo, tratamos 123 como un número y "123" como una cadena.
La base de datos sólo almacenará números de hasta 64 bits. Cualquier número mayor a 64 bits será truncado.
Fechas
Para atributos que contienen información de fecha, use una timestamp Unix sin formato en el formateador de datos. Puede definir el atributo de fecha en segundos o en milisegundos, ambos relativos a la Unix epoch.
Tiempo
A menos que se especifique lo contrario, la timestamp de un evento enviado es la hora en que se envió a New Relic. Para especificar una hora diferente para el evento, utilice el atributotimestamp.
A continuación se muestra un ejemplo de un conjunto de datos JSON típico para enviar con la API. Esta llamada envía dos eventos de tipo Purchase como una matriz JSON. Puede agregar varios eventos en una sola llamada HTTP utilizando una matriz JSON.
Algunos atributos tienen restricciones adicionales:
accountId: Este es un nombre de atributo reservado. Si está incluido, se eliminará durante la ingesta.
entity.guid, entity.name y entity.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.
appId: el valor debe ser un número entero. Si no es un número entero, el nombre y el valor del atributo se eliminarán durante la ingesta.
eventType: este atributo puede ser una combinación de caracteres alfanuméricos, _ guiones bajos y : puntos.
timestamp: este atributo debe ser una timestamp de Unix epoch, definida en segundos o milisegundos.
Enviar el evento personalizado
Los datos enviados a la API de eventos utilizan un formato JSON comprimido en una solicitud POST HTTPS simple. Este ejemplo usa gzip, pero también puedes usar deflate.
bash
$
gzip-c example_events.json |curl-X POST -H"Content-Type: application/json"\
La solicitud utiliza POST únicamente. La API no acepta PUT y solicitud GET.
La API admite conexiones persistentes HTTP/1.1. Esto es útil para gestionar el rendimiento del lado del cliente bajo cargas pesadas de eventos.
Verificar o solucionar problemas de respuesta a la solicitud
La API de eventos sigue un proceso de dos pasos para procesar solicitudes:
La API de eventos reconoce o rechaza sincrónicamente la solicitud según la validación de los encabezados y el tamaño de la carga útil.
La API de eventos analiza de forma asincrónica la carga útil después de que se proporciona una respuesta HTTP exitosa al cliente. Esto puede generar un error debido a datos faltantes o mal formados. Estos se clasifican como errores de envío o errores de análisis.
Todos los envíos exitosos reciben una respuesta 200 , independientemente de los errores de datos que puedan existir dentro de la carga útil. La respuesta incluye un uuid, que es un ID único creado para cada solicitud. El uuid también aparece en cualquier evento de error creado para la solicitud.
Otros problemas potenciales:
Tiempo de espera de 10 segundos: la llamada API que exceda los 10 segundos expirará.
Carga grande: una carga que supere los 100 KB puede ver aumentado el tiempo de respuesta.
Recommendation: Además de verificar si hay un mensaje de éxito, cree una consulta NRQL de sus datos para verificar que estén disponibles.
La carga con errores de envío se maneja y se devuelve al remitente a través de un código de respuesta HTTP.
Para solucionar errores de envío de carga útil, consulte estos códigos de respuesta HTTP.
Errores de envío
Resolución de problemas
400
Longitud del contenido faltante o no válida: no se puede procesar la solicitud vacía.
403
Clave faltante o no válida: Clave de licencia no válida. Registre un válido. Debe utilizar una clave del tipo License . Las claves Browser, Mobile o User no funcionarán.
408
Se agotó el tiempo de espera de la solicitud: la solicitud tardó demasiado en procesarse.
413
Contenido demasiado grande: la solicitud es demasiado grande para procesarla. Consulte los límites y caracteres restringidos para solucionar problemas.
415
Tipo de contenido no válido: debe ser aplicación/JSON. La API de eventos acepta cualquier tipo de contenido excepto multiparte/relacionado y asume que se puede analizar en JSON.
429
Demasiadas solicitudes debido a la limitación de tarifas.
503
Servicio no disponible temporalmente: reintentar solicitud
Se producen errores de análisis si:
Se envía un evento dentro de una carga útil, pero faltan datos o excede los límites máximos. New Relic eliminará el evento individual de la carga útil, generará un eventoNrIntegrationErrory procesará el resto.
La carga útil JSON incluye JSON con formato incorrecto o faltan datos requeridos.
Carga con errores de análisis recibe una respuesta 200 para indicar un envío exitoso. Para ayudar a resolver errores de análisis, se crea un nuevo tipo de evento NrIntegrationError . Todos los errores de análisis se deben a la consulta NRQL. Para mensajes de error relacionados con eventos eliminados, New Relic incluirá la cantidad de eventos que se eliminaron como parte del mensaje.
Para solucionar problemas de solicitudes con errores de análisis, consulte estos mensajes de error.
Errores de análisis
Resolución de problemas
X evento(s) rechazado porque el atributo appId no era un número entero
Un atributo appId tiene un valor no entero, como un valor decimal o una cadena.
X evento(s) rechazado(s) porque eventType no puede contener los siguientes caracteres: [., \]
Un atributo eventType incluía un carácter no válido, como un punto o una barra invertida.
X evento(s) rechazado porque falta el nombre del atributo
Un nombre de atributo se estableció como nulo o como una cadena vacía.
X evento(s) rechazado(s) porque el nombre del atributo excedió la longitud máxima
Un nombre de atributo tiene más de 255 caracteres.
X evento(s) rechazado porque el valor del atributo excedió la longitud máxima
El valor de un atributo tenía más de 4096 caracteres.
X evento(s) rechazado porque el evento excedió el número máximo de atributos
Un evento tiene más de 255 atributos.
X evento(s) rechazado porque falta atributo requerido eventType
El atributo eventType es obligatorio para el evento personalizado.
Error al analizar la carga útil JSON
Se produjo un error al analizar la solicitud JSON debido a problemas de formato o datos dañados.
Consulta y alerta con NrIntegrationError
El eventoNrIntegrationErrorle permite consultar y configurar sobre los datos personalizados que se envían a su cuenta de New Relic. Recommendation: Para recibir alertas de errores de análisis, cree una condición de alerta NRQL para NrIntegrationError. Utilice esta consulta NRQL de ejemplo:
SELECT message FROM NrIntegrationError WHERE newRelicFeature ='Event API'AND category ='EventApiException'
NrIntegrationError atributo
Resolución de problemas
timestamp
La timestamp en la que se recibió la solicitud. El atributo timestamp toma una timestamp Unix entera de 64 bits dentro de las últimas 24 horas. Puede definir la marca de tiempo en segundos o en milisegundos, ambos relativos a la Unix epoch.
No utilice un decimal para la timestamp. Si se utiliza un decimal, el atributo utilizará de forma predeterminada la timestamp en la que se creó el evento personalizado.
newRelicFeature
El nombre de la característica que experimenta errores. Para todos los errores de análisis de eventos personalizados, este será Event API.
apiKeyPrefix
Los primeros seis caracteres del utilizados para la solicitud que generó un error.
requestId
El uuid devuelto por la API para la solicitud que generó un error.
category
La categoría del error. Para evento personalizado, este es EventApiException.
message
Contenido del mensaje de error.
name
El nombre del error. Para eventos personalizados, esto siempre es EventValidationException.
eventTypeSample
Uno de los tipos de evento que generó el error, cuando esté disponible.
Encuentra tus datos
Para encontrar datos enviados a través de la API del evento (y de integración que utilizan esta API), puedes consultarlo. Por ejemplo, para consultar un evento personalizado usando NRQL, ejecutaría:
SELECT*FROM YOUR_CUSTOM_EVENT
Para obtener más información sobre cómo realizar una consulta, consulte datos de consulta.
Límite de solicitudes HTTP
La API de eventos tiene un límite de velocidad de 100.000 solicitudes HTTP (POST) por minuto, por cuenta. (Tenga en cuenta que esto no es un límite en la cantidad de eventos por minuto; solo en la cantidad de POST por minuto).
Este límite ayuda a garantizar que los grandes picos de tráfico en las cuentas de nuestra plataforma multiinquilino no afecten negativamente el rendimiento del servicio para usted.
Si su uso de API excede los 100 000 POST en un período de 1 minuto, rechazaremos las solicitudes de API posteriores con un código de respuesta 429 durante el resto del período de 1 minuto. Al final del período de 1 minuto, el contador se restablecerá y permitirá que se reanude el tráfico.
Este límite pretende ser un umbral superior que no debería alcanzar en escenarios normales. Si tiene una gran cantidad de 429 respuestas, considere usar menos la API. Si espera un nivel de actividad superior a lo normal en un futuro próximo y desea prepararse para ello, comuníquese con el soporte técnico.