Con nuestra característica de exportación de streaming, disponible con Data Plus, puede enviar sus datos a AWS Kinesis Firehose o Azure Event Hub a medida que New Relic los ingiere. Explicaremos cómo crear y actualizar una regla de transmisión usando NerdGraph y cómo ver las reglas existentes. Puede utilizar el explorador NerdGraph para realizar estas llamadas.
¿Qué es la exportación por streaming?
A medida que su organización New Relic ingiere los datos, nuestra característica de exportación de streaming envía esos datos a un AWS Kinesis Firehose o Azure Event Hub. Puede configurar reglas personalizadas, que se definen mediante NRQL, para controlar qué tipos de datos de New Relic exportará. También puede optar por comprimir estos datos antes de exportarlos, utilizando nuestra nueva característica Exportar compresión .
Algunos ejemplos de cosas para las que puede utilizar la exportación de streaming:
- Para llenar un lago de datos
- Mejorar la formación en IA/ML
- Retención a largo plazo por motivos de cumplimiento, legales o de seguridad
Puede deshabilitar o habilitar las reglas de exportación de transmisión cuando lo desee. Pero tenga en cuenta que la exportación de streaming solo envía datos ingeridos actualmente, lo que significa que si la desactiva y la vuelve a habilitar, los datos ingeridos cuando estaba desactivada no se enviarán con esta característica. Para exportar datos pasados, puede utilizar la exportación de datos históricos.
Requisitos y límites
Límites de datos transmitidos: la cantidad de datos que puede transmitir por mes está limitada por el total de datos ingeridos por mes. Si su cantidad de transmisión de datos excede la cantidad de datos ingeridos, podemos suspender su acceso y uso de la exportación de transmisión.
Requisitos relacionados con los permisos:
- Pro o edición Enterprise con opción Data Plus
- Tipo de usuario: usuario principal o usuario de plataforma completa
- El permiso de streaming de datos
Debe tener un AWS Kinesis Firehose o Azure evento Hub configurado para recibir datos de New Relic. Si aún no lo ha hecho, puede seguir nuestros pasos a continuación para AWS o Azure.
Requisitos NRQL:
- Debe ser consulta plana, sin agregación. Por ejemplo, se admiten los formularios
SELECT *
oSELECT column1, column2
. - Aplicable a cualquier contenido de la cláusula
WHERE
, excepto a las subconsultas. - La consulta no puede tener una cláusula
FACET
,COMPARE WITH
oLOOKUP
. - No se admiten consultas anidadas.
- Admite tipos de datos almacenados en NRDB, y no datos de intervalo de tiempo de métrica.
Configurar una AWS Kinesis Firehose
Para configurar la exportación de transmisión de datos a AWS, primero debe configurar Amazon Kinesis Firehose. Lo guiaremos a través de ese procedimiento en los siguientes tres pasos.
Paso 1. Cree un Firehose para exportar en streaming
Cree un Firehose dedicado para transmitir sus datos de New Relic a:
Vaya a Amazon Kineses Data Firehose.
Cree un flujo de entrega.
Asigne un nombre a la secuencia (usará este nombre más adelante en el registro de la regla).
Utilice
Direct PUT or other sources
y especifique un destino compatible con el formato de evento JSON de New Relic (por ejemplo, S3, Redshift u OpenSearch).
Paso 2. Crear una política de acceso de escritura de IAM Firehose
Vaya al IAM y seleccione
Policies
.
Cree una política.
Seleccione el servicio Firehose y luego seleccione
PutRecord
yPutRecordBatch
.Para
Resources
, seleccione la transmisión de entrega, agregue ARN y seleccione la región de su transmisión.Ingrese su número de cuenta de AWS y luego ingrese el nombre del flujo de entrega que desee en el cuadro de nombre.
Cree la política.
Paso 3. Cree una función de IAM para otorgar acceso de escritura a New Relic
Para configurar la función de IAM:
Navegue hasta IAM y haga clic en
Roles
.
Cree un rol para una cuenta de AWS y luego seleccione
for another AWS account
.
Ingrese el ID de la cuenta de exportación de New Relic:
888632727556
.Seleccione
Require external ID
e ingrese el ID de la cuenta New Relic desde la que desea exportar.
Haga clic en
Permissions
y luego seleccione la política que creó anteriormente.
Agregue un nombre de función (esto se usará en el registro de exportación) y una descripción.
Crea el rol.
Una vez hecho esto, puede trabajar en la configuración de sus reglas de exportación usando NerdGraph. Para más información sobre eso, sigue leyendo.
Configurar un centro de eventos de Azure
Para configurar la exportación de transmisión de datos a Azure, primero debe configurar un centro de eventos. Lo guiaremos a través de ese procedimiento en los siguientes tres pasos.
Alternativamente, puede seguir la guía de Azure aquí.
Paso 1. Crear un namespacede eventos Hubs
Navegue hasta Event Hubs dentro de su cuenta de Microsoft Azure.
Siga los pasos para crear un namespace de eventos Hubs. Recomendamos habilitar la inflación automática para garantizar que reciba todos sus datos.
Asegúrese de que el acceso público esté habilitado; usaremos una Política de acceso compartido para autenticarse de forma segura con su evento Hub.
Una vez que namespace de tu evento Hubs esté implementado, haz clic en
Go to resource
.
Paso 2. Crea un centro de eventos
En la columna de la izquierda, haga clic en
Event Hubs
.
Luego haga clic en
+Event Hub
para crear un centro de eventos.
Ingrese el nombre del centro de eventos deseado. Guárdelo, ya que lo necesitará más adelante para crear la regla de exportación de streaming.
Una vez creado el centro de eventos, haga clic en el centro de eventos.
Paso 3. Cree y adjunte una política de acceso compartido
En la columna de la izquierda, vaya a
Shared access policies
.
Haga clic en
+Add
cerca de la parte superior de la página.
Elija un nombre para su política de acceso compartido.
Marque
Send
y haga clic en
Create
.
Haga clic en la política creada y copie el
Connection string–primary key
. Guarde esto, ya que lo usaremos para autenticar y enviar datos a su centro de eventos.
Una vez hecho esto, puede trabajar en la configuración de sus reglas de exportación usando NerdGraph. Para más información sobre eso, sigue leyendo.
Campos importantes
La mayoría de las llamadas NerdGraph de exportación de streaming de datos que cubriremos utilizan algunos campos relacionados con su cuenta:
Para AWS Kinesis Firehose:
awsAccountId
: El ID de la cuenta de AWS. Por ejemplo:10000000000
deliveryStreamName
: El nombre de la transmisión de Kinesis. Por ejemplo:firehose-test-stream
.region
: La región de AWS. Por ejemplo:us-east-1
.role
: La función de AWS IAM para Kinesis Firehose. Este siempre seráfirehose-role
.
Para centros de eventos de Azure:
eventHubConnectionString
: Cadena de conexión de Azure Event Hub. Se parece a:Endpoint=sb://<NamespaceName>.servicebus.windows.net/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<EventHubName>
eventHubName
: El nombre del centro de eventos. Por ejemplo:my-event-hub
.
Cómo crear una regla de exportación de streaming
Primero, decida qué datos desea exportar. Luego, con una llamada a NerdGraph, crearás las reglas de transmisión que deseas usando NRQL. Daremos algunos ejemplos.
Crear una secuencia
Cuando crea una nueva regla de transmisión, necesitará todos los siguientes campos. A continuación se muestra un ejemplo de creación de una regla de transmisión que se exporta a AWS Kinesis Firehose:
mutation { streamingExportCreateRule( accountId: YOUR_NR_ACCOUNT_ID ruleParameters: { description: "ADD_RULE_DESCRIPTION" name: "PROVIDE_RULE_NAME" nrql: "SELECT * FROM NodeStatus" payloadCompression: DISABLED } awsParameters: { awsAccountId: "YOUR_AWS_ACCOUNT_ID" deliveryStreamName: "FIREHOSE_STREAM_NAME" region: "SPECIFY_AWS_REGION" role: "firehose-role" } ) { id status }}
A continuación se muestra un ejemplo de creación de una regla de transmisión que se exporta a un centro de eventos de Azure:
mutation { streamingExportCreateRule( accountId: YOUR_NR_ACCOUNT_ID ruleParameters: { description: "ADD_RULE_DESCRIPTION" name: "PROVIDE_RULE_NAME" nrql: "SELECT * FROM NodeStatus" payloadCompression: DISABLED } azureParameters: { eventHubConnectionString: "YOUR_EVENT_HUB_SAS_CONNECTION_STRING" eventHubName: "YOUR_EVENT_HUB_NAME" } ) { id status }}
Obtendrá un resultado inmediatamente con un ID de regla y un estado. El estado se mostrará como CREATION_IN_PROGRESS
. Puede utilizar la identificación de la regla para verificar si la regla se creó correctamente.
La regla puede tardar hasta seis minutos en completar su creación debido a que la validación de la política lleva algún tiempo.
Antes de que la regla termine de registrarse, no puede iniciar otra acción de mutación (como Enable
, Disable
o Update
) porque la regla está bloqueada para el proceso de creación. Si intenta otra acción de mutación antes de que la regla complete el proceso de registro, recibirá un mensaje como: "La regla de exportación se está actualizando actualmente mediante otra solicitud. Espere y vuelva a intentarlo más tarde".
Puedes utilizar Delete
en cualquier momento.
La creación puede finalizar y cambiar el estado en cualquier momento dentro de los aproximadamente seis minutos necesarios para la creación de la regla. El estado cambiará a ENABLED
, DISABLED
o CREATION_FAILED
.
Vea estos detalles sobre los valores:
ENABLED
significa que la regla se creó correctamente y los datos comenzaron a transmitirse.CREATION_FAILED
significa que la regla falló en la creación. Esto puede suceder por varios motivos, pero a menudo se debe a un error en la política de AWS o en la validación de SAS de Azure.DISABLED
significa que la regla se creó pero aún no está habilitada debido a motivos como que se alcanzó el límite de flujo de filtro o que falló la creación de la regla de flujo de filtro. Si el estado sigue siendoCREATION_IN_PROGRESS
después de seis minutos, eso significa que la creación de la regla falló debido a un error del sistema en nuestro servicio. Puede eliminar la regla e intentar crear una nueva nuevamente.
Una vez que se crea una regla de transmisión, puede verla.
Actualizar una transmisión
Cuando actualice una nueva regla de transmisión, necesitará todos los siguientes campos. A continuación se muestra un ejemplo de cómo actualizar una regla de transmisión:
Manguera contra incendios AWS Kinesis:
mutation { streamingExportUpdateRule( id: RULE_ID ruleParameters: { description: "ADD_RULE_DESCRIPTION" name: "PROVIDE_RULE_NAME" nrql: "YOUR_NRQL_QUERY" payloadCompression: DISABLED } awsParameters: { awsAccountId: "YOUR_AWS_ACCOUNT_ID" deliveryStreamName: "FIREHOSE_STREAM_NAME" region: "SPECIFY_AWS_REGION" role: "firehose-role" } ) { id status }}
Centro de eventos de Azure:
mutation { streamingExportUpdateRule( id: RULE_ID ruleParameters: { description: "ADD_RULE_DESCRIPTION" name: "PROVIDE_RULE_NAME" nrql: "YOUR_NRQL_QUERY" payloadCompression: DISABLED } azureParameters: { eventHubConnectionString: "YOUR_EVENT_HUB_SAS_CONNECTION_STRING" eventHubName: "YOUR_EVENT_HUB_NAME" } ) { id status }}
Al actualizar, recibirá un mensaje en el campo de mensaje: “La regla de exportación se está actualizando y el proceso puede tardar unos minutos en completarse. Por favor, vuelve a comprobarlo más tarde”. La actualización completa puede tardar hasta seis minutos.
Puede comprobar si la regla está actualizada llamando a streamingRule
para recuperar la regla. Durante el período en que la regla se actualiza, la regla está bloqueada y ninguna otra acción de mutación puede actuar sobre la regla. Si está intentando realizar otra acción de mutación en la misma regla, recibirá un mensaje que dice: "La regla de exportación se está actualizando actualmente mediante otra solicitud. Espere y vuelva a intentarlo más tarde". Un usuario puede actualizar una regla de cualquier estado excepto una regla eliminada.
Deshabilitar una transmisión
Para deshabilitar una regla, solo necesita proporcionar el ID de la regla. Aquí hay un ejemplo de cómo deshabilitar una transmisión:
mutation { streamingExportDisableRule(id: RULE_ID) { id status message }}
Solo puede deshabilitar la regla cuando la regla tiene un estado de ENABLED
. Si intenta deshabilitar una regla que se encuentra en otro estado, se devuelve el mensaje de error "La regla de exportación no se puede habilitar o deshabilitar debido a que el estado no está permitido". No puede desactivar la regla si está bloqueada debido a que se está realizando otra mutación.
Habilitar una transmisión
Si desea habilitar una regla, solo necesita proporcionar el ID de la regla. A continuación se muestra un ejemplo de cómo habilitar una transmisión:
mutation { streamingExportEnableRule(id: RULE_ID) { id status message }}
Solo puedes habilitar la regla cuando tiene un estado de DISABLED
. Si intenta habilitar una regla que se encuentra en otro estado, se devuelve un mensaje de error como "La regla de exportación no se puede habilitar o deshabilitar debido a que el estado no está permitido". No puede habilitar la regla si está bloqueada debido a que se está realizando otra mutación.
Eliminar una secuencia
Deberá proporcionar un ID de regla para eliminar una transmisión. He aquí un ejemplo:
mutation { streamingExportDeleteRule(id: RULE_ID) { id ... }}
La eliminación se puede realizar en una regla de cualquier estado a menos que ya esté eliminada. Una vez que se elimina una regla, no se puede reactivar nuevamente. La regla aún se puede ver dentro de las primeras 24 horas después de la eliminación llamando a la API steamingRule
con el ID de la regla. Después de 24 horas, la regla ya no se podrá buscar a través de NerdGraph.
Ver transmisiones
Puede consultar información sobre una regla de transmisión específica consultando el ID de la cuenta y el ID de la regla. He aquí un ejemplo:
Manguera contra incendios AWS Kinesis:
{ actor { account(id: YOUR_NR_ACCOUNT_ID) { streamingExport { streamingRule(id: "RULE_ID") { aws { awsAccountId deliveryStreamName region role } createdAt description id message name nrql status updatedAt payloadCompression } } } }}
Centro de eventos de Azure:
{ actor { account(id: YOUR_NR_ACCOUNT_ID) { streamingExport { streamingRule(id: "RULE_ID") { azure { eventHubConnectionString eventHubName } createdAt description id message name nrql status updatedAt payloadCompression } } } }}
También puede consultar todas las transmisiones existentes. He aquí un ejemplo:
{ actor { account(id: YOUR_NR_ACCOUNT_ID) { streamingExport { streamingRules { aws { awsAccountId region deliveryStreamName role } azure { eventHubConnectionString eventHubName } createdAt description id message name nrql status updatedAt payloadCompression } } } }}
Exportar compresión
Opcionalmente, podemos comprimir carga antes de exportarla, aunque esto está deshabilitado por defecto. Esto puede ayudar a evitar alcanzar el límite de datos ingeridos y ahorrar dinero en costos de ingreso.
Puede habilitar la compresión utilizando el campo payloadCompression
debajo de ruleParameters
. Este campo puede tener cualquiera de los siguientes valores:
DISABLED
: la carga no se comprimirá antes de exportarse. Si no se especifica,payloadCompression
adoptará de forma predeterminada este valor.GZIP
: Comprimir carga con el formato GZIP antes de exportar
GZIP es el único formato de compresión disponible actualmente, aunque es posible que optemos por ofrecer más formatos en el futuro.
Cuando la compresión está habilitada en una regla de exportación de AWS existente, el siguiente mensaje de Kinesis Firehose puede contener datos comprimidos y sin comprimir. Esto se debe al almacenamiento en búfer dentro de Kinesis Firehose. Para evitar esto, puede deshabilitar temporalmente la regla de exportación antes de habilitar la compresión o crear una nueva secuencia de Kinesis Firehose para que fluyan solo los datos comprimidos.
Si encuentra este problema y está exportando a S3 u otro sistema de almacenamiento de archivos, puede ver la parte comprimida de los datos siguiendo estos pasos:
- Descargue manualmente el objeto.
- Separe el objeto en dos archivos separados copiando los datos comprimidos en un archivo nuevo.
- Descomprima el nuevo archivo de datos solo comprimido.
Una vez que tenga los datos comprimidos, puede volver a cargarlos en S3 (o cualquier otro servicio que esté utilizando) y eliminar el archivo antiguo.
Tenga en cuenta que en S3 u otro sistema de almacenamiento de archivos, los objetos pueden constar de varias cargas codificadas en GZIP que se añaden consecutivamente. Por lo tanto, su biblioteca de descompresión debería tener la capacidad de manejar dicha carga GZIP concatenada.
Descompresión automática en AWS
Una vez que sus datos hayan llegado a AWS, es posible que desee opciones para descomprimirlos automáticamente. Si está transmitiendo esos datos a un depósito S3, hay dos formas de habilitar la descompresión automática:
Descompresión automática en Azure
Si exporta datos a Azure, es posible ver versiones descomprimidas de los objetos almacenados en su centro de eventos mediante un trabajo de Stream Analytics. Para hacerlo, siga estos pasos:
- Siga esta guía hasta el paso 16.
- En el paso 13, puede optar por utilizar el mismo centro de eventos como salida sin romper nada, aunque no recomendamos esto si tiene la intención de continuar con el paso 17 y comenzar el trabajo, ya que no se ha probado.
En el panel izquierdo de su trabajo de análisis de transmisión, haga clic en
Inputs
y luego haga clic en la entrada que configuró.
Desplácese hacia abajo hasta la parte inferior del panel que aparece a la derecha y configure la entrada con estas configuraciones:
- formato de serialización de eventos: JSON
- Codificación: UTF-8
- tipo de compresión de eventos: GZip
Haga clic en
Save
en la parte inferior del panel.
Haga clic en
Query
en el costado de la pantalla. Usando la pestaña
Input preview
, ahora debería poder consultar el centro de eventos desde esta pantalla.