Problème
Vous voyez le message d'erreur suivant dans les logs de votre agent 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 limitCette erreur indique que l'agent eBPF a atteint le nombre maximal de descripteurs de fichiers qu'il est autorisé à utiliser, ce qui peut l'empêcher de monitoring correctement vos applications.
Solution
Vous devez augmenter la limite de descripteurs de fichiers pour le service ou le pod de l'agent eBPF.
Pour les hôtes Linux :
Utilisez le mécanisme de remplacement systemd pour définir une limite plus élevée pour le service d'agent.
Augmenter temporairement la limite des descripteurs de fichiers :
bash$ulimit -n 4096Exécutez la commande suivante pour modifier la modification persistante à
/etc/security/limits.conf:bash$sudo nano /etc/security/limits.confAjoutez les lignes suivantes :
* soft nofile 4096* hard nofile 8192Redémarrez l'agent eBPF :
bash$sudo systemctl restart newrelic-ebpf-agentVérifiez la nouvelle limite :
bash$# Check current limits$cat /proc/$(pgrep newrelic-ebpf-agent)/limits | grep "Max open files"
Pour Kubernetes :
Modifiez votre fichier
values.yamlutilisé pour le déploiement Helm :# values.yamlagent:resources:limits:memory: "2Gi"# Add security context if neededsecurityContext:capabilities:add:- SYS_ADMINAppliquer les modifications :
bash$helm upgrade nr-ebpf-agent newrelic/nr-ebpf-agent -n newrelic -f values.yamlVérifiez que le pod a redémarré et qu'il est en état « En cours d'exécution » :
bash$kubectl get pods -n newrelic -w
Solutions alternatives
S'il n'est pas possible d'augmenter les limites de ressources, vous pouvez réduire l'utilisation des descripteurs de fichiers de l'agent en limitant la portée de ce qu'il monitore.
Réduisez la portée monitoring en filtrant l’espace de nommage ou les services :
Pour les hôtes Linux (
/etc/newrelic-ebpf-agent/newrelic-ebpf-agent.conf) :bash$# Exclude specific processes or entities$DROP_DATA_FOR_ENTITY="process1,process2"Pour Kubernetes (
values.yaml) :# Exclude namespaces or servicesdropDataForNamespaces: ["kube-system", "monitoring"]dropDataServiceNameRegex: "kube-dns|system-service"
Désactivez monitoring de certains protocoles pour réduire le nombre de sondes :
Pour les hôtes Linux :
bash$PROTOCOLS_MYSQL_ENABLED="false"$PROTOCOLS_MONGODB_ENABLED="false"Pour Kubernetes :
protocols:mysql:enabled: falsemongodb:enabled: false
Vérification
Vérifiez que l'erreur n'apparaît plus dans les logs de l'agent :
Pour les hôtes Linux :
bash$sudo journalctl -u newrelic-ebpf-agent -fPour Kubernetes :
bash$kubectl logs -f <ebpf-agent-pod> -n newrelic
Vérifiez que l'agent fonctionne normalement en recherchant le message de démarrage dans les logs :
[STEP-7] => Successfully started the eBPF Agent.Vérifiez que les données sont bien transmises à l'interface utilisateur de New Relic en filtrant l'entité avec
instrumentation.name = nr_ebpf.
Notes complémentaires
- L'erreur de limite de descripteurs de fichiers est plus fréquente dans les environnements comportant de nombreux processus ou services en cours d'exécution.
- Chaque processus/service de monitoring nécessite des descripteurs de fichiers pour la connexion de la sonde eBPF.
- La limite par défaut du système (souvent 1024) peut s'avérer insuffisante pour une déploiement à grande échelle.
- Augmenter la limite à 4096 est généralement sûr et suffisant pour la plupart des cas d'utilisation.