A New Relic oferece suporte à ingestão de OTLP nativo há vários anos. No processo de trabalhar com casos de suporte que surgem de tempos em tempos, aprendemos sobre problemas comuns que os usuários enfrentam. Para alguns, o problema é fácil de identificar e corrigir. Outros são tortuosamente complicados, visto que a Internet não é confiável e há muitos componentes (software, rede, hardware, etc.) envolvidos sob o controle de várias partes, como clientes, New Relic e infraestrutura de rede pública fora do controle de qualquer um. . Com tanta complexidade, configuração e pontos de falha, pode ser difícil determinar qual é o problema e qual a melhor forma de resolver.
Trabalhar em um caso de suporte pode ser demorado e às vezes frustrante para os clientes (e para a New Relic!). Portanto, elaboramos este guia de resolução de problemas para ajudar a estabelecer um entendimento compartilhado e fornecer ferramentas para autodiagnosticar e corrigir problemas quando possível.
Primeiro, revise os requisitos e recomendações de configuração do OTLP da New Relic. Ele contém conselhos e contexto essenciais que qualquer pessoa que queira usar OTLP com New Relic deve estar ciente.
A seguir, veja as seções abaixo:
- Resolução geral de problemas: resolução de problemas para questões gerais de OTLP
- Catálogo de problemas: problemas comuns dos clientes e etapas de mitigação
Resolução geral de problemas
Quando você encontrar um problema com o New Relic OTLP endpoint, primeiro siga estas etapas básicas de resolução de problemas. Se você abrir um ticket de suporte, estas são as primeiras coisas que pedimos:
- Habilite o log de diagnóstico. Certifique-se de que seu cliente OTLP tenha o registro ativado para que você possa ver detalhes sobre quaisquer erros que possam estar ocorrendo. O mecanismo para ativar o log varia de acordo com a implementação. Por favor consulte os documentos relevantes.
- Teste se o endpoint OTLP da New Relic está acessível. Um simples comando shell
curl http://otlp.nr-data.net
da máquina em questão pode ajudar a determinar se algum problema de configuração de rede local (ou seja, restrição de firewall) está impedindo a conectividade com o New Relic. - Verifique se há
NrIntegrationError
evento. A ingestão OTLP do New Relic executa uma validação mínima de forma síncrona antes de retornar um código de status de sucesso. Se você não vir indicações de erros de exportação no log do aplicativo, mas não vir dados no New Relic, tente consultarNrIntegrationError
. Pode haver problemas com seus dados que foram detectados durante a validação do assíncrono. - Determine se o problema está localizado. Freqüentemente, os erros estão localizados em um aplicativo ou ambiente específico. Nestes casos, é útil avaliar as diferenças entre as áreas problemáticas e que funcionam adequadamente.
- Procure sinais de chave de API inválida. O endoint OTLP da New Relic requer a configuração de um cabeçalho
api-key
. Chave de API inválida ou ausente é um problema comum que se apresenta com códigos de status HTTP 403 ou 401 ou códigos de status gRPC não autenticados ou PermissionDenied. Se você vir isso, verifique se sua chave de API é válida e está configurada corretamente. - Verifique se a exportação foi bem-sucedida após tentar novamente. Recomendamos que a nova tentativa esteja habilitada e esperamos que as tentativas de exportação inicialmente falhem ocasionalmente com erros transitórios, mas sejam bem-sucedidas após a nova tentativa. No entanto, temos um SLA. Se você suspeitar que erros transitórios são frequentes o suficiente para exceder nosso SLA, abra um caso de suporte.
- Verifique se há sinais de que erros transitórios não estão sendo repetidos. Apesar de nossos melhores esforços, pode haver casos em que o endpoint OTLP da New Relic retorne códigos de status não recuperáveis para erros transitórios. Se você acredita ter encontrado esse cenário, abra um caso de suporte.
Catálogo de problemas
A tabela abaixo cataloga os problemas que vimos os clientes encontrarem com o endpoint OTLP da New Relic. Muitos são fáceis de resolver com a configuração adequada. A coluna Fingerprint mostra um log típico quando um aplicativo encontra uma classe específica de problema. Consulte as colunas Known resolution e Notes para ver as etapas de mitigação.
Versão do protocolo OTLP | Tipo | Linguagem / Ecossistema | Fingerprint | Resolução conhecida | Notas |
---|---|---|---|---|---|
HTTP | 401 - Unauthorized | Java | io.opentelemetry.exporter.internal.http.HttpExporter - Failed to export spans. Server responded with HTTP status code 401. | Incluir chave de API | Cabeçalho api-key ausente |
HTTP | 401 - Unauthorized | Coletor | Exporting failed. The error is not retryable. Dropping data. {"kind": "exporter", "data_type": "traces", "name": "otlphttp", "error": "Permanent error: error exporting items, request to https://otlp.nr-data.net/v1/traces responded with HTTP Status Code 401, Message=, Details=[]", "dropped_items": 4} | Incluir chave de API | Cabeçalho api-key ausente |
HTTP | 401 - Unauthorized | Go | failed to upload metrics: failed to send metrics to https://otlp.nr-data.net/v1/metrics: 401 Unauthorized | Incluir chave de API | Cabeçalho api-key ausente |
HTTP | 403 - Forbidden | Java | io.opentelemetry.exporter.internal.http.HttpExporter - Failed to export spans. Server responded with HTTP status code 403. | Verifique a chave da API | Cabeçalho api-key inválido |
HTTP | 403 - Forbidden | Java | Exporting failed. The error is not retryable. Dropping data. {"kind": "exporter", "data_type": "traces", "name": "otlphttp", "error": "Permanent error: error exporting items, request to https://otlp.nr-data.net/v1/traces responded with HTTP Status Code 403, Message=, Details=[]", "dropped_items": 14} | Verifique a chave da API | Cabeçalho api-key inválido |
HTTP | 403 - Forbidden | Go | traces export: failed to send to https://otlp.nr-data.net/v1/traces: 403 Forbidden | Verifique a chave da API | Cabeçalho api-key inválido |
HTTP | 403 - Forbidden | .NET | Exporter failed send data to collector to {0} endpoint. Data will not be sent. Exception: {1}{https://otlp.nr-data.net:4317/v1/traces}{System.Net.Http.HttpRequestException: Response status code does not indicate success: 403 (Forbidden). | Verifique a chave da API | Cabeçalho api-key inválido |
HTTP | Tempo esgotado | Java | io.opentelemetry.exporter.internal.http.HttpExporter - Failed to export spans. The request could not be executed. Full error message: timeout | Ajustar lote/tempo limite | Ocorre após o tempo limite da exportação. Verifique as configurações de tempo limite e o status da rede do cliente. Se você descartou a rede e a configuração do lado do cliente, abra o caso de suporte. |
HTTP | Tempo esgotado | Coletor | max elapsed time expired failed to make an HTTP request: Post \"https://otlp.nr-data.net/v1/traces\": context deadline exceeded (Client.Timeout exceeded while awaiting headers) | Ajustar lote/tempo limite | Geralmente ocorre depois que as novas tentativas falham e a exportação expira. Pode estar relacionado à rede do cliente, à configuração de nova tentativa/tempo limite do cliente ou à rede/servidores New Relic. Se você descartou a rede e a configuração do lado do cliente, abra o caso de suporte. |
HTTP | Tempo esgotado | Go | failed to upload metrics: context deadline exceeded: retry-able request failure | Ajustar lote/tempo limite | Ocorre após o tempo limite da exportação. Verifique as configurações de tempo limite e o status da rede do cliente. Se você descartou a rede e a configuração do lado do cliente, abra o caso de suporte. |
HTTP | Taxa limite | Coletor | Exporting failed. Will retry the request after interval. {"kind": "exporter", "data_type": "metrics", "name": "otlphttp", "error": "Throttle (29s), error: error exporting items, request to https://otlp.nr-data.net:443/v1/metrics responded with HTTP Status Code 429", "interval": "29s"} | Ajustar lote | Limite de taxa excedido. Ajuste a configuração do lote para reduzir a taxa de solicitação. |
gRPC | Código 2 - Desconhecido Tempo esgotado | Java | io.opentelemetry.exporter.internal.grpc.GrpcExporter - Failed to export spans. Server responded with gRPC status code 2. Error message: timeout | Ajustar lote/tempo limite | Ocorre após o tempo limite da exportação. Verifique as configurações de tempo limite e o status da rede do cliente. Se você descartou a rede e a configuração do lado do cliente, abra o caso de suporte. |
gRPC | Código 2 - Desconhecido HTTP 500 | Coletor | rpc error: code = Unknown desc = unexpected HTTP status code received from server: 500 (Internal Server Error); malformed header: missing HTTP content-type | O fornecedor de rede New Relic produziu código de status não recuperável para erros transitórios. Se isso acontecer repetidamente, abra o caso de suporte. | |
gRPC | Código 2 - Desconhecido HTTP 530 | Coletor | rpc error: code = Unknown desc = unexpected HTTP status code received from server: 530 (); transport: received unexpected content-type \"text/html; charset=UTF-8\" | O fornecedor de rede New Relic produziu código de status não recuperável para erros transitórios. Se isso acontecer repetidamente, abra o caso de suporte. | |
gRPC | Código 4 – Prazo excedido | Coletor | rpc error: code = DeadlineExceeded desc = context deadline exceeded | Ajustar lote/tempo limite | Geralmente ocorre depois que as novas tentativas falham e a exportação expira. Pode estar relacionado à rede do cliente, à configuração de nova tentativa/tempo limite do cliente ou à rede/servidores New Relic. Se você descartou a rede e a configuração do lado do cliente, abra o caso de suporte. |
gRPC | Código 7 - Não autenticado | Java | io.opentelemetry.exporter.internal.grpc.GrpcExporter - Failed to export spans. Server responded with gRPC status code 7. | Incluir chave de API | Cabeçalho api-key ausente |
gRPC | Código 7 - Não autenticado | .NET | Exporter failed send data to collector to {0} endpoint. Data will not be sent. Exception: {1}{https://otlp.nr-data.net:4317/}{Grpc.Core.RpcException: Status(StatusCode="Unauthenticated", Detail="") | Incluir chave de API | Cabeçalho api-key ausente |
gRPC | Código 8 - Recursos esgotados | Coletor | rpc error: code = ResourceExhausted desc = Too many requests", "dropped_items": 1024 | Ajustar lote | Limite de taxa excedido. Ajuste a configuração do lote para reduzir a taxa de solicitação. |
gRPC | Código 13 - Interno | Java | io.opentelemetry.exporter.internal.grpc.GrpcExporter - Failed to export spans. Server responded with gRPC status code 13. | Não há informações suficientes para diagnosticar. Pode ser que o fornecedor de rede da New Relic tenha produzido um código de status não recuperável para um erro transitório. Se isso acontecer repetidamente, abra um caso de suporte. | |
gRPC | Código 13 - Interno HTTP400 | Coletor | rpc error: code = Internal desc = unexpected HTTP status code received from server: 400 (Bad Request) | O fornecedor de rede New Relic produziu um código de status não recuperável para um erro transitório. Se isso acontecer repetidamente, abra um caso de suporte. | |
gRPC | Código 14 - Indisponível Redefinição de conexão | Coletor | rpc error: code = Unavailable desc = error reading from server: read tcp 100.127.0.171:47470->162.247.241.110:4317: read: connection reset by peer | Ajustar novamente | Deve resolver com nova tentativa. Certifique-se de que o coletor tenha recursos suficientes para lidar com a contrapressão de novas tentativas. |
gRPC | Código 14 - Indisponível HTTP 502 | Coletor | rpc error: code = Unavailable desc = unexpected HTTP status code received from server: 502 (Bad Gateway); transport: received unexpected content-type "text/html" | Ajustar novamente | Deve resolver com nova tentativa. Certifique-se de que o coletor tenha recursos suficientes para lidar com a contrapressão de novas tentativas. |
gRPC | Código 14 - Indisponível HTTP 503 | Coletor | rpc error: code = Unavailable desc = unexpected HTTP status code received from server: 503 (Service Unavailable) | Ajustar novamente | Deve resolver com nova tentativa. Certifique-se de que o coletor tenha recursos suficientes para lidar com a contrapressão de novas tentativas. |
gRPC | Código 16 - Permissão negada | Java | io.opentelemetry.exporter.internal.grpc.GrpcExporter - Failed to export spans. Server responded with gRPC status code 16. | Verifique a chave da API | Cabeçalho api-key inválido |
gRPC | Código 16 - Permissão negada | .NET | Exporter failed send data to collector to {0} endpoint. Data will not be sent. Exception: {1}{https://otlp.nr-data.net:4317/}{Grpc.Core.RpcException: Status(StatusCode="PermissionDenied", Detail="") | Verifique a chave da API | Cabeçalho api-key inválido |