Problema
Você verá a seguinte mensagem de erro nos logs do seu agente eBPF:
The number of used file descriptors (820) is above the threshold (819). This may cause issues with attaching uprobes. Consider increasing the process FD limitEste erro indica que o agente eBPF atingiu o número máximo de descritores de arquivo que pode usar, o que pode impedi-lo de monitorar corretamente seu aplicativo.
Solução
Você precisa aumentar o limite de descritores de arquivo para o serviço ou pod do agente eBPF.
Para hosts Linux:
Use o mecanismo de sobreposição systemd para definir um limite superior para o serviço do agente.
Aumente temporariamente o limite de descritores de arquivo:
bash$ulimit -n 4096Execute o seguinte comando para editar a alteração persistente em
/etc/security/limits.conf:bash$sudo nano /etc/security/limits.confAdicione as seguintes linhas:
* soft nofile 4096* hard nofile 8192Reinicie o agente eBPF:
bash$sudo systemctl restart newrelic-ebpf-agentVerifique o novo limite:
bash$# Check current limits$cat /proc/$(pgrep newrelic-ebpf-agent)/limits | grep "Max open files"
Para Kubernetes:
Edite o arquivo
values.yamlusado para a implantação do Helm:# values.yamlagent:resources:limits:memory: "2Gi"# Add security context if neededsecurityContext:capabilities:add:- SYS_ADMINAplique as alterações:
bash$helm upgrade nr-ebpf-agent newrelic/nr-ebpf-agent -n newrelic -f values.yamlVerifique se o pod foi reiniciado e se está no estado "Em execução":
bash$kubectl get pods -n newrelic -w
Soluções alternativas
Se aumentar os limites de recursos não for viável, você pode reduzir o uso de descritores de arquivo do agente limitando o escopo do que ele monitora.
Reduza o escopo filtrando namespaces ou serviços:
Para hosts Linux (
/etc/newrelic-ebpf-agent/newrelic-ebpf-agent.conf):bash$# Exclude specific processes or entities$DROP_DATA_FOR_ENTITY="process1,process2"Para Kubernetes (
values.yaml):# Exclude namespaces or servicesdropDataForNamespaces: ["kube-system", "monitoring"]dropDataServiceNameRegex: "kube-dns|system-service"
Desative o monitoramento de protocolos específicos para reduzir o número de sondagens:
Para hosts Linux:
bash$PROTOCOLS_MYSQL_ENABLED="false"$PROTOCOLS_MONGODB_ENABLED="false"Para Kubernetes:
protocols:mysql:enabled: falsemongodb:enabled: false
Verificação
Verifique se o erro não aparece mais nos logs do agente:
Para hosts Linux:
bash$sudo journalctl -u newrelic-ebpf-agent -fPara Kubernetes:
bash$kubectl logs -f <ebpf-agent-pod> -n newrelic
Confirme se o agente está funcionando normalmente, verificando a mensagem de inicialização nos logs:
[STEP-7] => Successfully started the eBPF Agent.Verifique se os dados estão fluindo para a interface New Relic filtrando a entidade com
instrumentation.name = nr_ebpf.
Notas adicionais
- O erro de limite de descritores de arquivo é mais comum em ambientes com muitos processos ou serviços em execução.
- Cada processo/serviço monitorado requer descritores de arquivo para a conexão da sonda eBPF.
- O limite padrão do sistema (geralmente 1024) pode ser insuficiente para implantações em larga escala.
- Aumentar o limite para 4096 geralmente é seguro e suficiente para a maioria dos casos de uso.