Ce guide fournit des solutions aux problèmes courants que vous pourriez rencontrer avec l'agent eBPF dans un environnement Kubernetes. Trouvez votre problème dans la liste ci-dessous pour des étapes de résolution spécifiques.
Problème
Vous rencontrez des problèmes avec l'agent eBPF dans votre environnement Kubernetes, tels que des limites de descripteurs de fichiers, des erreurs de privilèges ou des problèmes de performances.
Solution
Si vous rencontrez des erreurs de limite de descripteurs de fichiers, consultez notre guide de dépannage des limites de descripteurs de fichiers pour des étapes de résolution détaillées.
Problème
L'agent eBPF ne parvient pas à démarrer en raison de privilèges insuffisants.
Solution
Vérifiez que le DaemonSet de l'agent eBPF dispose des privilèges nécessaires. Le graphique Helm doit configurer automatiquement les autorisations requises.
Vérifiez le contexte de sécurité du pod dans votre déploiement :
bash$kubectl describe pod <ebpf-agent-pod> -n newrelicAssurez-vous que votre cluster prend en charge eBPF. Vérifiez la version du noyau sur les nœuds :
bash$kubectl get nodes -o wide$# Kernel version should be 5.4 or later
Problème
L'agent eBPF consomme des ressources excessives ou entraîne une dégradation des performances.
Solution:
Monitorer l'utilisation des ressources :
bash$kubectl top pods -n newrelicAjustez les limites de mémoire dans vos valeurs Helm :
agent:resources:limits:memory: "2Gi" # Increase if neededrequests:memory: "512Mi"Configurez le filtrage des données pour réduire la charge :
dropDataForNamespaces: ["kube-system", "monitoring"]dropDataServiceNameRegex: "kube-dns|otel-collector"Limitez le monitoring des protocoles si tous les protocoles ne sont pas nécessaires :
protocols:http:enabled: truemysql:enabled: false # Disable if not needed
Problème
Les pods de l'agent eBPF ne démarrent pas ou ne parviennent pas à envoyer de données.
Solution
Vérifiez l'état du pod :
bash$kubectl get pods -n newrelic$kubectl describe pod <ebpf-agent-pod> -n newrelicConsultez les logs du pod :
bash$kubectl logs <ebpf-agent-pod> -n newrelicVérifiez la connectivité réseau :
bash$# Test from within the cluster$kubectl run test-connectivity --image=busybox --rm -it --restart=Never -- \>nslookup otlp.nr-data.net
Important
Assurez-vous que les ports 4317 et 443 ne sont pas bloqués à plusieurs niveaux :
- NiveauCluster : Pour un déploiement Kubernetes (par exemple, un cluster AKS), vérifiez que les groupes de sécurité réseau du cluster autorisent le trafic sortant sur ces ports.
- Au niveau de l'infrastructure: vérifiez que les logiciels de sécurité (par exemple, Microsoft Defender, pare-feu d'entreprise) ne bloquent pas ces ports au niveau infrastructure
Le blocage des ports peut se produire simultanément aux deux niveaux, provoquant des problèmes de connectivité même si un seul niveau est correctement configuré.
Vérifiez le compte de service et RBAC :
bash$kubectl get serviceaccount -n newrelic$kubectl get clusterrole,clusterrolebinding -l app.kubernetes.io/name=nr-ebpf-agent
Problème
Les noms d'entités ne s'affichent pas correctement ou les données ne sont pas attribuées aux bons services.
Solution
L'agent eBPF utilise les objets Kubernetes
Servicepour nommer les entités. Assurez-vous que vos applications ont un service correspondant défini.apiVersion: v1kind: Servicemetadata:name: my-service # This becomes the entity namespec:selector:app: my-appS'il vous manque des données, assurez-vous que l'espace de noms n'est pas exclu dans votre
values.yaml.# In values.yamldropDataForNamespaces: [] # Remove namespaces you want to monitorDans Kubernetes, les noms d'entités sont dérivés du nom du service Kubernetes, par exemple,
mysql-database-service. Sur les hôtes ou dans Docker, les noms sont une combinaison du nom du processus, de son répertoire ou de l'ID du conteneur et du port d'écoute, par exemple,ruby:/home/ubuntu/app:[5678].Étapes de vérification
Vérifiez le log de démarrage réussi :
bash$kubectl logs <ebpf-agent-pod> -n newrelic | grep "STEP-7"Devrait afficher :
[STEP-7] => Successfully started the eBPF Agent.Vérifiez le flux de données dans New Relic :
- Dans l'interface utilisateur de New Relic, recherchez les entités avec
instrumentation.name = nr_ebpf. - Confirmez que les noms d'entités correspondent aux noms de vos services Kubernetes.
- Dans l'interface utilisateur de New Relic, recherchez les entités avec
Testez la connectivité du point de terminaison OTLP :
bash$kubectl exec -it <ebpf-agent-pod> -n newrelic -- \>curl -v https://otlp.nr-data.net:443