Com o recurso de exportação de streaming disponível por meio do Data Plus, você pode enviar seus dados para o AWS Kinesis Firehose, Azure Event Hub ou GCP Pub/Sub criando regras personalizadas usando NRQL para especificar quais dados devem ser exportados. Este guia explica como criar e atualizar regras de streaming usando o NerdGraph e visualizar as regras existentes. Você pode usar o explorador do NerdGraph para fazer essas chamadas. Além disso, você tem a opção de compactar os dados antes de exportar com o recurso Export Compression.
Aqui estão alguns exemplos de como você pode usar o recurso de exportação de streaming:
Para preencher um data lake
Aprimore o treinamento de IA/ML
Garanta a retenção de longo prazo por motivos de conformidade, legais ou de segurança
Você pode ativar ou desativar as regras de exportação de streaming a qualquer momento. No entanto, esteja ciente de que a exportação de streaming processa apenas os dados ingeridos no momento. Se você desativar e reativar o recurso posteriormente, quaisquer dados ingeridos enquanto ele estava desativado não serão exportados. Para exportar dados passados, você deve usar o recurso de exportação de dados históricos.
Requisitos e limites
Limites de dados transmitidos: a quantidade de dados que você pode transmitir por mês é limitada pelo total de dados ingeridos por mês. Se a quantidade de dados de streaming exceder a quantidade de dados ingeridos, poderemos suspender seu acesso e uso da exportação de streaming.
Você deve ter um AWS Kinesis Firehose, Azure Event Hub ou GCP Pub/Sub configurado para receber dados do New Relic. Se ainda não fez isso, você pode seguir nossas etapas abaixo para AWS, Azure ou GCP Pub/Sub.
Requisitos NRQL:
Deve ser consulta plana, sem agregação. Por exemplo, formulários SELECT * ou SELECT column1, column2 são suportados.
Aplicável a qualquer coisa na cláusula WHERE , exceto subconsultas.
A consulta não pode ter uma cláusula FACET , COMPARE WITH ou LOOKUP.
Nomeie o stream. Você usará esse nome mais tarde ao registrar a regra.
Use Direct PUT or other sources e especifique um destino compatível com o formato de evento JSON do New Relic (por exemplo, S3, Redshift ou OpenSearch).
Criar política de acesso de gravação do IAM Firehose
Acesse o console do IAM e faça login com seu usuário.
Na navegação à esquerda, clique em Policies e depois clique em Create policy.
Selecione o serviço Firehose e selecione PutRecord e PutRecordBatch.
Para Resources, selecione o fluxo de entrega, adicione ARN e selecione a região do seu fluxo.
Insira o número da sua conta da AWS e, em seguida, insira o nome do fluxo de entrega desejado na caixa de nome.
Crie a política.
Crie uma função do IAM para conceder acesso de gravação ao New Relic
Para configurar a função do IAM:
Navegue até o IAM e clique em Roles.
Crie uma função para uma conta da AWS e selecione for another AWS account.
Insira o ID da conta de exportação do New Relic: 888632727556.
Selecione Require external ID e insira o ID da conta New Relic da qual você deseja exportar.
Clique em Permissions e selecione a política que você criou acima.
Adicione um nome de função, que será usado durante o registro da exportação, e forneça uma descrição.
Crie a função.
Quando terminar estas etapas, você poderá configurar suas regras de exportação usando o NerdGraph.
Esta API permite que você crie uma regra de exportação de streaming para enviar dados para o AWS Kinesis Firehose.
Resposta: você recebe uma resposta com o ID da regra e o status. O status será CREATION_IN_PROGRESS inicialmente, e pode levar até seis minutos para que a regra conclua a criação. Pontos a observar: antes que a regra termine de ser registrada, você não pode iniciar outra ação de mutação (como Enable, Disable ou Update) porque a regra está bloqueada para o processo de criação. Se você tentar outra ação de mutação antes que a regra conclua o processo de registro, receberá uma mensagem como: “A regra de exportação está sendo atualizada no momento por outra solicitação, aguarde e tente novamente mais tarde.”
Você pode usar Delete a qualquer momento.
A criação pode ser concluída e o status alterado a qualquer momento dentro dos cerca de seis minutos necessários para a criação da regra. O status mudará para ENABLED, DISABLED ou CREATION_FAILED.
Veja estes detalhes sobre os valores:
ENABLED significa que a regra foi criada com sucesso e os dados começaram a ser transmitidos.
CREATION_FAILED significa que a regra falhou na criação. Isso pode acontecer por vários motivos, mas geralmente ocorre devido à falha na política da AWS ou na validação do Azure SAS.
DISABLED significa que a regra foi criada, mas ainda não está habilitada devido a motivos como limite de fluxo de filtro atingido ou falha na criação da regra de fluxo de filtro. Se o status ainda permanecer como CREATION_IN_PROGRESS após seis minutos, isso significa que a criação da regra falhou devido a um erro de sistema em nosso serviço. Você pode excluir a regra e tentar criar uma nova novamente.
Esta API permite que você recupere uma lista abrangente de todas as regras de stream associadas ao seu ID da conta.
Solicitação de amostra
{
actor{
account(id:YOUR_NR_ACCOUNT_ID){
streamingExport{
streamingRules{
aws{
awsAccountId
region
deliveryStreamName
role
}
createdAt
description
id
message
name
nrql
status
updatedAt
payloadCompression
}
}
}
}
}
Esta API permite consultar informações sobre uma regra de fluxo específica fornecendo o ID da conta e o ID da regra.
Solicitação de amostra
{
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
}
}
}
}
}
Esta API permite que você modifique uma regra de exportação de streaming existente.
Parâmetro de entrada
Parâmetro
Tipo de dados
É obrigatório?
Descrição
id
EU IA
Sim
O ID da regra de streaming a ser atualizada.
ruleParameters.description
Corda
Não
Uma breve descrição da regra. Use isso para fornecer qualquer informação adicional ou contexto sobre a regra de exportação.
ruleParameters.name
Corda
Sim
O nome da regra de exportação.
ruleParameters.nrql
Corda
Sim
Um NRQL para selecionar os dados de telemetria para exportar.
Resposta: você recebe uma resposta com o ID e o status da regra. Pontos a observar: ao atualizar, você receberá uma mensagem no campo de mensagem: “A regra de exportação está sendo atualizada e o processo pode levar alguns minutos para ser concluído. Verifique novamente mais tarde.” Pode levar até seis minutos para ser totalmente atualizada.
Você pode verificar se a regra foi atualizada chamando streamingRule para recuperar a regra. Durante o período em que a regra está sendo atualizada, ela fica bloqueada e nenhuma outra ação de mutação pode atuar sobre a regra. Se você estiver tentando executar outra ação de mutação na mesma regra, receberá uma mensagem dizendo: “A regra de exportação está sendo atualizada no momento por outra solicitação, aguarde e tente novamente mais tarde.” Um usuário pode atualizar uma regra de qualquer status, exceto uma regra excluída.
Esta API permite que você ative uma regra de streaming existente, facilitando a exportação contínua de dados para processamento em tempo real e integração com outros serviços.
Parâmetro de entrada
Parâmetro
Tipo de dados
É obrigatório?
Descrição
id
EU IA
Sim
O ID da regra de streaming a ser habilitada.
Solicitação de amostra
mutation{
streamingExportEnableRule(id:RULE_ID){
id
status
message
}
}
Resposta: se você estiver tentando habilitar uma regra que está em outro estado, ela retornará uma mensagem de erro como: “A regra de exportação não pode ser habilitada ou desabilitada devido ao status não ser permitido.” Você não pode habilitar a regra se ela estiver bloqueada devido a outra mutação em andamento.
Importante
Você só pode ativar a regra quando ela tiver um status de DISABLED.
Esta API permite que você desative uma regra de streaming existente, interrompendo a exportação contínua de dados.
Parâmetro de entrada
Parâmetro
Tipo de dados
É obrigatório?
Descrição
id
EU IA
Sim
O ID da regra de streaming a ser desativada.
Solicitação de amostra
mutation{
streamingExportDisableRule(id:RULE_ID){
id
status
message
}
}
Resposta: ao tentar desativar uma regra que está em outro estado, é retornada uma mensagem de erro como: “The export rule can't be enabled or disabled due to status not being allowed.” Não é possível desativar a regra se ela estiver bloqueada devido à realização de outra mutação.
Importante
Você só pode desativar a regra quando ela tiver um status de ENABLED.
Esta API permite que você exclua uma regra de streaming e interrompa toda a exportação de dados relacionada a essa regra.
Parâmetro de entrada
Parâmetro
Tipo de dados
É obrigatório?
Descrição
id
EU IA
Sim
O ID da regra de streaming a ser excluído.
Solicitação de amostra
mutation{
streamingExportDeleteRule(id:RULE_ID){
id
}
}
Importante
A exclusão pode ser executada em uma regra de qualquer status, a menos que ela já esteja excluída. Depois que uma regra é excluída, ela não pode ser reativada. A regra ainda pode ser visualizada nas primeiras 24 horas após a exclusão chamando a API steamingRule com o ID da regra. Após 24 horas, a regra não poderá mais ser pesquisada por meio do NerdGraph.
Configurar um Azure Event Hub
Para configurar a exportação de dados de streaming para o Azure, primeiro você deve configurar um Event Hub. Siga estas etapas:
Alternativamente, você pode seguir o guia do Azure aqui.
Crie um namespace de Event Hubs
A partir da sua conta do Microsoft Azure, navegue até os Hubs de Eventos.
Siga as etapas para criar um namespace de Event Hubs. Recomendamos ativar o aumento automático para garantir que você receba todos os seus dados.
Certifique-se de que o acesso público esteja habilitado, pois usaremos uma Política de Acesso Compartilhado para autenticar com segurança em seu Event Hub.
Depois que seu namespace de Event Hubs for implantado, clique em Go to resource.
Crie um Event Hubs
Na coluna da esquerda, clique em Event Hubs.
Para criar um Event Hub, clique em +Event Hub.
Insira o Event Hub Name desejado. Salve-o, pois você precisará dele mais tarde para criar a regra de exportação de streaming.
Para Retention, selecione DeleteCleanup policy e o Retention time (hrs) desejado.
Importante
A exportação de streaming não é suportada atualmente para Hubs de eventos com política de retenção Compact .
Após a criação do Event Hub, clique em Event Hub.
Crie e anexe uma política de acesso compartilhado
Na coluna da esquerda, vá para Shared access policies.
Clique em +Add próximo ao topo da página.
Escolha um nome para sua política de acesso compartilhado.
Marque Send e clique em Create.
Clique na política criada e copie o Connection string–primary key. Salve isto, pois você precisará dele mais tarde para autenticar e enviar dados para o seu Event Hub.
Quando terminar estas etapas, você poderá configurar suas regras de exportação usando o NerdGraph.
Esta API permite criar uma regra de exportação de streaming para enviar dados para um Hub de Eventos do Azure.
Resposta: você recebe uma resposta com o ID da regra e o status. O status será CREATION_IN_PROGRESS inicialmente e pode levar até seis minutos para que a regra conclua a criação.
Esta API permite que você recupere uma lista abrangente de todas as regras de stream associadas ao seu ID da conta.
Solicitação de amostra
{
actor{
account(id:YOUR_NR_ACCOUNT_ID){
streamingExport{
streamingRules{
azure{
eventHubConnectionString
eventHubName
}
createdAt
description
id
message
name
nrql
status
updatedAt
payloadCompression
}
}
}
}
}
Esta API permite consultar informações sobre uma regra de fluxo específica fornecendo o ID da conta e o ID da regra.
Solicitação de amostra
{
actor{
account(id:YOUR_NR_ACCOUNT_ID){
streamingExport{
streamingRule(id:"RULE_ID"){
azure{
eventHubConnectionString
eventHubName
}
createdAt
description
id
message
name
nrql
status
updatedAt
payloadCompression
}
}
}
}
}
Esta API permite que você modifique uma regra de exportação de streaming existente.
Parâmetro de entrada
Parâmetro
Tipo de dados
É obrigatório?
Descrição
id
EU IA
Sim
O ID da regra de streaming a ser atualizada.
ruleParameters.description
Corda
Não
Uma breve descrição da regra. Use isso para fornecer qualquer informação adicional ou contexto sobre a regra de exportação.
ruleParameters.name
Corda
Sim
O nome da regra de exportação.
ruleParameters.nrql
Corda
Sim
Um NRQL para selecionar os dados de telemetria para exportar.
Resposta: Você recebe uma resposta com o ID e o status da regra.
Para ativar uma regra de streaming existente, facilitando a exportação contínua de dados para processamento em tempo real e integração com outros serviços, consulte aqui.
Para desabilitar uma regra de streaming existente, interrompendo a exportação contínua de dados, consulte aqui.
Para excluir uma regra de streaming e interromper toda a exportação de dados relacionada a essa regra, consulte aqui.
Configurar um GCP Pub/Sub
Para configurar a exportação de dados de streaming para o GCP, primeiro você deve configurar um Pub/Sub. Siga estas etapas:
Crie um tópico do Pub/Sub
Do seu console do GCP, navegue até a página do Pub/Sub.
Clique em Create topic.
Insira um ID de tópico e clique em Create.
Configurar permissões no Pub/Sub
Na coluna direita do tópico criado, clique em More actions.
Selecione View permissions.
Clique em Add Principal e, na caixa de novos principais, insira o e-mail da conta de serviço fornecido por nós:
Região dos EUA (padrão): us-prod-uds-streaming-export@h0c17c65df9291b526b433650e6a0a.iam.gserviceaccount.com
Região da UE: eu-prod-uds-streaming-export@h0c17c65df9291b526b433650e6a0a.iam.gserviceaccount.com
Região do JP: uds-jp-production@unifieddatastreams.iam.gserviceaccount.com
Na seção Assign roles, pesquise por Pub/Sub Publisher e clique em Save.
Quando terminar estas etapas, você poderá configurar suas regras de exportação usando o NerdGraph.
Esta API permite que você crie uma regra de exportação de streaming para enviar dados para o GCP Pub/Sub.
DISABLED: por padrão, as cargas não serão compactadas antes de serem exportadas.
GZIP: selecione isso para compactar as cargas antes de serem exportadas.
gcpParameters.gcpProjectId
Corda
Sim
Este parâmetro representa o identificador exclusivo do seu projeto do GCP. Por exemplo:
google-project-id
gcpParameters.pubsubTopicId
Corda
Sim
Este parâmetro especifica o tópico no GCP Pub/Sub, usado para enviar e receber mensagens em seus aplicativos de cloud. Por exemplo:
pub-sub-topic-id.
Solicitação de amostra
mutation{
streamingExportCreateRule(
accountId:YOUR_NR_ACCOUNT_ID
ruleParameters:{
description:"ADD_RULE_DESCRIPTION"
name:"PROVIDE_RULE_NAME"
nrql:"SELECT * FROM NodeStatus"
payloadCompression:DISABLED
}
gcpParameters:{
gcpProjectId:"project-id"
pubsubTopicId:"pub-sub-topic-id"
}
){
id
status
}
}
Resposta: você recebe uma resposta com o ID da regra e o status. O status será CREATION_IN_PROGRESS inicialmente e pode levar até seis minutos para que a regra conclua a criação.
Esta API permite que você recupere uma lista abrangente de todas as regras de stream associadas ao seu ID da conta.
Solicitação de amostra
{
actor{
account(id:YOUR_NR_ACCOUNT_ID){
streamingExport{
streamingRules{
gcp{
gcpProjectId
pubsubTopicId
}
createdAt
description
id
message
name
nrql
status
updatedAt
payloadCompression
}
}
}
}
}
Esta API permite consultar informações sobre uma regra de fluxo específica fornecendo o ID da conta e o ID da regra.
Solicitação de amostra
{
actor{
account(id:YOUR_NR_ACCOUNT_ID){
streamingExport{
streamingRule(id:"RULE_ID"){
gcp{
gcpProjectId
pubsubTopicId
}
createdAt
description
id
message
name
nrql
status
updatedAt
payloadCompression
}
}
}
}
}
Esta API permite que você modifique uma regra de exportação de streaming existente.
Parâmetro de entrada
Parâmetro
Tipo de dados
É obrigatório?
Descrição
id
EU IA
Sim
O ID da regra de streaming a ser atualizada.
ruleParameters.description
Corda
Não
Uma breve descrição da regra. Use isso para fornecer qualquer informação adicional ou contexto sobre a regra de exportação.
ruleParameters.name
Corda
Sim
O nome da regra de exportação.
ruleParameters.nrql
Corda
Sim
Um NRQL para selecionar os dados de telemetria para exportar.
DISABLED: por padrão, as cargas não serão compactadas antes de serem exportadas.
GZIP: selecione isso para compactar as cargas antes de serem exportadas.
gcpParameters.gcpProjectId
Corda
Sim
Este parâmetro representa o identificador exclusivo do seu projeto do Google Cloud Platform (GCP). Por exemplo:
google-project-id
gcpParameters.pubsubTopicId
Corda
Sim
Este parâmetro especifica o tópico no Google Cloud Pub/Sub, usado para enviar e receber mensagens em seus aplicativos de cloud. Por exemplo:
pub-sub-topic-id.
Solicitação de amostra
mutation{
streamingExportUpdateRule(
id:RULE_ID
ruleParameters:{
description:"ADD_RULE_DESCRIPTION"
name:"PROVIDE_RULE_NAME"
nrql:"YOUR_NRQL_QUERY"
payloadCompression:DISABLED
}
gcpParameters:{
gcpProjectId:"project-id"
pubsubTopicId:"pub-sub-topic-id"
}
){
id
status
}
}
Resposta: Você recebe uma resposta com o ID e o status da regra.
Para ativar uma regra de streaming existente, facilitando a exportação contínua de dados para processamento em tempo real e integração com outros serviços, consulte aqui.
Para desabilitar uma regra de streaming existente, interrompendo a exportação contínua de dados, consulte aqui.
Para excluir uma regra de streaming e interromper toda a exportação de dados relacionada a essa regra, consulte aqui.
Entenda a compressão de exportação
Você pode optar por compactar os dados antes de exportá-los. Este recurso está desativado por padrão. A compactação pode ajudar a evitar exceder seu limite de dados e reduzir os custos de dados de saída.
Você pode ativar a compactação usando o campo payloadCompression em ruleParameters. Este campo pode ter qualquer um dos seguintes valores:
DISABLED: a carga não será compactada antes de ser exportada. Se não for especificado, payloadCompression assumirá esse valor como padrão.
GZIP: Compacte a carga com o formato GZIP antes de exportar.
GZIP é o único formato de compactação disponível atualmente, embora possamos optar por disponibilizar mais formatos no futuro.
Quando a compactação está habilitada em uma regra de exportação existente da AWS, a próxima mensagem do Kinesis Firehose pode conter dados compactados e descompactados. Isso se deve ao buffer no Kinesis Firehose. Para evitar isso, você pode desativar temporariamente a regra de exportação antes de ativar a compactação ou criar um novo fluxo do Kinesis Firehose para que apenas os dados compactados possam fluir.
Se você encontrar esse problema e estiver exportando para S3 ou outro sistema de armazenamento de arquivos, poderá visualizar a parte compactada dos dados seguindo estas etapas:
Baixe manualmente o objeto.
Separe o objeto em dois arquivos separados, copiando os dados compactados em um novo arquivo.
Descompacte o novo arquivo de dados somente compactado.
Depois de ter os dados compactados, você pode carregá-los novamente para o S3 (ou qualquer outro serviço que esteja usando) e excluir o arquivo antigo.
Esteja ciente de que no S3 ou outro sistema de armazenamento de arquivos, os objetos podem consistir em vários carregamentos codificados em GZIP que são anexados consecutivamente. Portanto, sua biblioteca de descompactação deve ter a capacidade de lidar com essa carga GZIP concatenada.
Descompressão automática na AWS
Assim que seus dados chegarem à AWS, você pode querer opções para descompactá-los automaticamente. Se você estiver transmitindo esses dados para um bucket S3, há duas maneiras de habilitar a descompactação automática:
Os pontos de acesso funcionam como métodos separados pelos quais os objetos nos buckets S3 podem ser acessados e baixados. A AWS fornece um recurso chamado Object Lambda access points, que executa uma função do Lambda em cada objeto S3 acessado através do access point. Siga estas etapas para ativar esse ponto de acesso:
Navegue até esta página e clique no link para o repositório sem servidor.
O Supporting Access Point neste ponto de acesso Lambda precisará ser definido para o ponto de acesso que você configurou no bucket S3.
Em Transformation Configuration:
Selecione GetObject.
Especifique a função do Lambda DecompressGZFunction, ou outra função necessária se estiver usando um formato de compactação diferente.
A AWS descompactará automaticamente os objetos baixados do S3, se esses objetos tiverem o conjunto de metadados correto. Escrevemos uma função que aplica automaticamente esses metadados a cada novo objeto baixado para um objeto S3 definido. Veja como configurá-lo:
Navegue aqui, clone o repositório localmente e siga as etapas fornecidas no arquivo README para gerar um arquivo ZIP contendo a função do Lambda.
Selecione o ambiente de tempo de execução Java 11.
Clique em Change default execution role > Use an existing role. Insira aqui a função que você criou na etapa 2.
Role para baixo e clique em Create function.
Depois que a função for criada, clique em Upload from e selecione .zip or .jar file no dropdown.
Clique em Upload na caixa exibida e selecione o arquivo ZIP criado na etapa 1.
Quando o upload terminar, clique em Save para sair da caixa pop-up.
Edite Runtime settings adicionando o manipulador. Em nossa função fornecida, o manipulador é metadatasetter.App::handleRequest.
Tudo o que resta fazer agora é habilitar esta função do Lambda para ser acionada na criação do objeto S3. Clique em Add trigger para começar a configurar isso.
No dropdown, selecione S3 como sua fonte.
Insira o nome do bucket S3 ao qual você deseja aplicar os metadados no campo Bucket .
Remova o All object create events padrão dos tipos de eventos. Na dropdown de tipos de eventos, selecione PUT.
Marque a caixa Recursive invocation e clique em Add no canto inferior direito.
A função do Lambda agora começará a adicionar automaticamente os metadados de compactação a todos os objetos S3 recém-adicionados.
Descompressão automática no Azure
Se você estiver exportando dados para o Azure, será possível visualizar versões descompactadas dos objetos armazenados no hub de eventos usando um Stream Analytics Job. Para fazer isso, siga estas etapas:
Na etapa 13, é possível optar por usar o mesmo hub de evento como saída sem causar problemas, mas isso não é recomendado caso pretenda prosseguir para a etapa 17 e iniciar o trabalho, pois essa abordagem não foi testada.
No painel esquerdo do seu trabalho de streaming analytics, clique em Inputs e, em seguida, clique na entrada que você configurou.
Role para baixo até a parte inferior do painel que aparece à direita e configure a entrada com estas configurações:
formato de serialização de eventos: JSON
Codificação: UTF-8
Tipo de compactação de evento: GZip
Clique em Save na parte inferior do painel.
Clique em Query na lateral da tela. Usando a guia Input preview , agora você poderá consultar o hub de eventos nesta tela.
Descompressão automática no GCP
No GCP Cloud Storage, os objetos serão descompactados automaticamente quando baixados se os metadados estiverem definidos como Content-Encoding: gzip. Para mais detalhes, consulte a documentação do GCP.