Nossa API de eventos é uma opção para relatar dados personalizados. Outra opção é reportar atributo personalizado. Para uma visão geral de por que você usaria a API de evento em vez de outras opções, consulte evento personalizado e atributo.
Requisitos
Para limites de API de eventos e atributo restrito, consulte Limites.
Certifique-se de que a conectividade de saída na porta TCP 443 seja permitida para o intervalo CIDR que corresponde à sua região. O método de configuração preferencial é usar o nome DNS insights-collector.newrelic.com ou insights-collector.eu01.nr-data.net.
Exemplo de envio e consulta de um evento personalizado
Aqui está um exemplo da API de evento em ação:
O evento personalizado pode ser inserido através da API do agente ou diretamente pela API do evento. O exemplo a seguir mostra como enviar um tipo de evento personalizado CLIRun, que rastreia quando uma ferramenta de linha de comando escrita em Ruby tem seu processo encerrado devido a uma exceção.
# 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
Então você poderia executar uma consulta NRQL para obter mais detalhes sobre esse evento personalizado, como:
SELECTcount(*)FROM CLIRun FACET errors SINCE 1 week ago
Como usar a API de eventos
A API do evento é um endpoint assíncrono. Isso permite enviar um volume muito grande de POSTS, de forma confiável, com latência de resposta muito baixa.
A API do evento limita o tamanho, taxa e caracteres permitidos no evento personalizado. Além disso, assim como outros dados disponíveis no NRQL, os eventos personalizados não podem ser atualizados ou excluídos após serem criados. Se você tiver problemas com seu evento personalizado, siga os procedimentos de resolução de problemas ou crie um novo evento personalizado.
Formate o JSON
A API do evento aceita formatos específicos para atributos incluídos no payload. Somente valores float ou string são permitidos.
Ao definir o atributo para seu evento personalizado, siga estas diretrizes de formato JSON.
Atributo
Diretrizes de formato JSON
eventType
Required: O nome do evento.
Valores float e string
Formato de valor float : "label":value
Formato do valor da string: "label":"value"
Tipos de dados
A API aceita apenas pares de valores principais, não valores de mapa/objeto ou matriz. Os tipos de dados suportados por esta API são strings e números (inteiros ou flutuantes). Para obter mais informações, consulte Requisitos de dados.
Dígitos em strings
Por motivos relacionados ao desempenho, não lançamos valores enviados à API. Por exemplo, tratamos 123 como um número e "123" como uma string.
O banco de dados armazenará apenas números de até 64 bits. Quaisquer números maiores que 64 bits serão truncados.
Datas
Para atributos que contenham informações de data, use um timestamp Unix não formatado no formatador de dados. Você pode definir o atributo de data em segundos ou milissegundos, ambos relativos à Unix epoch.
Tempo
A menos que especificado de outra forma, o timestamp de um evento enviado é a hora em que foi enviado à New Relic. Para especificar um horário diferente para o evento, use o atributotimestamp.
Aqui está um exemplo de um conjunto de dados JSON típico para envio com a API. Esta chamada envia dois eventos do tipo Purchase como uma matriz JSON. Você pode adicionar vários eventos em uma única chamada HTTP usando uma matriz JSON.
accountId: este é um nome de atributo reservado. Se estiver incluído, será descartado durante a ingestão.
entity.guid, entity.name e entity.type: Esses atributo são usados internamente para identificar entidade. Quaisquer valores enviados com essas chaves na seção atributo de um ponto de dados métricos podem causar comportamento indefinido, como falta de entidade na UI ou telemetria não associada à entidade esperada. Para mais informações consulte a síntese da entidade.
appId: o valor deve ser um número inteiro. Se não for um número inteiro, o nome e o valor do atributo serão eliminados durante a ingestão.
eventType: esse atributo pode ser uma combinação de caracteres alfanuméricos, _ sublinhados e : dois-pontos.
timestamp: esse atributo deve ser um timestamp hora da Unix epoch, definido em segundos ou milissegundos.
Envie o evento personalizado
Os dados enviados à API do evento usam um formato JSON compactado em uma solicitação HTTPS POST simples. Este exemplo usa gzip, mas você também pode usar deflate.
bash
$
gzip-c example_events.json |curl-X POST -H"Content-Type: application/json"\
Invoke-WebRequest-Headers $headers-Method Post -Body $gzipBody"https://insights-collector.newrelic.com/v1/accounts/$accountId/events"
Importante
Sempre use compactação com cada carga útil. Isso permite enviar mais dados e economiza recursos durante a análise.
Antes de gerar sua solicitação HTTP, certifique-se de que ela esteja formatada corretamente, incluindo:
O Api-Key contém o correto.
O Content-Type é application/json.
A solicitação usa apenas POST. A API não aceita PUT e solicitação GET.
A API oferece suporte a conexões persistentes HTTP/1.1. Isso é útil para gerenciar o desempenho do lado do cliente sob cargas pesadas de eventos.
Verifique ou solucione problemas de resposta à solicitação
A API do evento segue um processo de duas etapas para processar solicitações:
A API do evento reconhece ou rejeita de forma síncrona a solicitação com base na validação dos cabeçalhos e no tamanho da carga útil.
A API do evento analisa de forma assíncrona a carga depois que uma resposta HTTP bem-sucedida é fornecida ao cliente. Isso pode gerar um erro devido a dados ausentes ou malformados. Eles são classificados como erros de envio ou erros de análise.
Todos os envios bem-sucedidos recebem uma resposta 200 , independentemente de quaisquer erros de dados que possam existir na carga útil. A resposta inclui um uuid, que é um ID único criado para cada solicitação. O uuid também aparece em qualquer evento de erro criado para a solicitação.
Outros problemas potenciais:
Tempo limite de 10 segundos: a chamada de API que exceder 10 segundos irá expirar.
Carga grande: carga superior a 100 KB pode aumentar o tempo de resposta.
Recomendação:Além de verificar uma mensagem de sucesso, crie uma consulta NRQL dos seus dados para verificar se estão disponíveis.
Carga com erros de envio são tratados e retornados ao remetente através de um código de resposta HTTP.
Para solucionar erros de envio de carga útil, consulte estes códigos de resposta HTTP.
Erros de envio
Resolução de problemas
400
Comprimento do conteúdo ausente ou inválido: não é possível processar a solicitação vazia.
403
Chave ausente ou inválida: Chave de licença inválida. Registre um válido. Você deve usar uma chave do tipo License . As teclas Browser, Mobile ou User não funcionarão.
408
A solicitação expirou: a solicitação demorou muito para ser processada.
413
Conteúdo muito grande: a solicitação é muito grande para ser processada. Consulte os limites e caracteres restritos para solucionar problemas.
415
Tipo de conteúdo inválido: deve ser aplicativo/JSON. A API do evento aceita qualquer tipo de conteúdo, exceto multiparte/relacionado, e assume que pode ser analisado para JSON.
429
Muitas solicitações devido à limitação de taxa.
503
Serviço temporariamente indisponível: solicitação de nova tentativa
Erros de análise ocorrem se:
Um evento é enviado dentro de uma carga útil, mas faltam dados ou excede os limites máximos. O New Relic eliminará o evento individual da carga útil, gerará um eventoNrIntegrationErrore processará o restante.
A carga JSON inclui JSON malformado ou dados necessários ausentes.
Carga com erros de análise recebe uma resposta 200 para indicar um envio bem-sucedido. Para ajudar a resolver erros de análise, um novo tipo de evento NrIntegrationError é criado. Todos os erros de análise são devidos à consulta NRQL. Para mensagens de erro relacionadas a eventos descartados, o New Relic incluirá o número de eventos que foram descartados como parte da mensagem.
Para solucionar problemas de solicitações com erros de análise, consulte estas mensagens de erro.
Erros de análise
Resolução de problemas
X evento(s) rejeitado(s) porque o atributo appId não era um número inteiro
Um atributo appId tem um valor não inteiro, como um valor decimal ou uma string.
Evento(s) X rejeitado(s) porque eventType não pode conter os seguintes caracteres: [., \]
Um atributo eventType incluía um caractere inválido, como ponto final ou barra invertida.
X evento(s) rejeitado(s) porque falta o nome do atributo no atributo
Um nome de atributo foi definido como nulo ou uma sequência vazia.
X evento(s) rejeitado(s) porque o nome do atributo excedeu o comprimento máximo
Um nome de atributo tem mais de 255 caracteres.
X evento(s) rejeitado(s) porque o valor do atributo excedeu o comprimento máximo
Um valor de atributo tinha mais de 4.096 caracteres.
X evento(s) rejeitado(s) porque o evento excedeu o número máximo de atributos
Um evento tem mais de 255 atributos.
X eventos rejeitados porque faltam atributos obrigatórios eventType
O atributo eventType é obrigatório para o evento personalizado.
Erro ao analisar a carga JSON
Ocorreu um erro ao analisar o JSON da solicitação devido a problemas de formatação ou dados corrompidos.
Consulta e alerta com NrIntegrationError
O eventoNrIntegrationErrorpermite consultar e definir o envio de dados personalizados para sua conta New Relic. Recomendação: para obter alertas para erros de análise, crie uma condição do alerta NRQL para NrIntegrationError. Use este exemplo de consulta NRQL:
SELECT message FROM NrIntegrationError WHERE newRelicFeature ='Event API'AND category ='EventApiException'
NrIntegrationError atributo
Resolução de problemas
timestamp
O timestamp em que a solicitação foi recebida. O atributo timestamp usa um timestamp de data/hora Unix inteiro de 64 bits das últimas 24 horas. Você pode definir o carimbo de data/hora em segundos ou milissegundos, ambos relativos à Unix epoch.
Não use um decimal para o timestamp. Se um decimal for usado, o atributo assumirá como padrão o timestamp quando o evento personalizado foi criado.
newRelicFeature
O nome do recurso que apresenta erros. Para todos os erros de análise de evento personalizado, será Event API.
apiKeyPrefix
Os primeiros seis caracteres de usados para a solicitação que gerou um erro.
requestId
O uuid retornado pela API para a solicitação que gerou um erro.
category
A categoria do erro. Para evento personalizado, é EventApiException.
message
Conteúdo da mensagem de erro.
name
O nome do erro. Para evento personalizado, é sempre EventValidationException.
eventTypeSample
Um dos tipos de evento que gerou o erro, quando disponível.
Encontre seus dados
Para encontrar dados enviados via API de eventos (e de integrações que utilizam esta API), você pode consultá-los. Por exemplo, para consultar um evento personalizado usando NRQL, você executaria:
SELECT*FROM YOUR_CUSTOM_EVENT
Para mais informações sobre como consultar, consulte dados de consulta.
Limite de solicitações HTTP
A API de eventos tem um limite de taxa de 100.000 solicitações HTTP (POSTs) por minuto, por conta. (Observe que este não é um limite para o número de eventos por minuto; apenas para o número de POSTs por minuto.)
Esse limite ajuda a garantir que grandes picos de tráfego em contas em nossa plataforma multilocatário não afetem negativamente o desempenho do serviço para você.
Se o uso da sua API exceder 100 mil POSTs em uma janela de 1 minuto, rejeitaremos solicitações de API subsequentes com um código de resposta 429 para o restante da janela de 1 minuto. Ao final da janela de 1 minuto, o contador será zerado e permitirá que o tráfego seja retomado.
Este limite pretende ser um limite superior que você não deve atingir em cenários normais. Se você tiver um número alto de 429 respostas, considere usar menos a API. Se você espera um nível de atividade acima do normal em um futuro próximo e deseja se preparar para isso, entre em contato com o suporte técnico.