Dans le cadre de la documentation associée à ce produit, nous nous efforçons d’utiliser un langage exempt de préjugés. Dans cet ensemble de documents, le langage exempt de discrimination renvoie à une langue qui exclut la discrimination en fonction de l’âge, des handicaps, du genre, de l’appartenance raciale de l’identité ethnique, de l’orientation sexuelle, de la situation socio-économique et de l’intersectionnalité. Des exceptions peuvent s’appliquer dans les documents si le langage est codé en dur dans les interfaces utilisateurs du produit logiciel, si le langage utilisé est basé sur la documentation RFP ou si le langage utilisé provient d’un produit tiers référencé. Découvrez comment Cisco utilise le langage inclusif.
Cisco a traduit ce document en traduction automatisée vérifiée par une personne dans le cadre d’un service mondial permettant à nos utilisateurs d’obtenir le contenu d’assistance dans leur propre langue. Il convient cependant de noter que même la meilleure traduction automatisée ne sera pas aussi précise que celle fournie par un traducteur professionnel.
Ce document décrit la méthodologie générale de dépannage d'une interface utilisateur graphique APIC lente.
Il est fréquent que les problèmes lents de l'interface graphique utilisateur du contrôleur APIC soient le résultat d'un taux élevé de requêtes API provenant d'un script, d'une intégration ou d'une application. Le fichier access.log d'un contrôleur APIC consigne chaque demande d'API traitée. Le fichier access.log d'un APIC peut être rapidement analysé avec le script Access Log Analyzer dans le projet aci-tac-scripts du groupe Github Datacenter.
NGINX est le DME responsable des terminaux API disponibles sur chaque APIC. Si NGINX est en panne, les demandes d'API ne peuvent pas être traitées. Si NGINX est encombré, l'API l'est également. Chaque APIC exécute son propre processus NGINX, il est donc possible qu'un seul APIC puisse avoir des problèmes NGINX si seulement cet APIC est ciblé par des interrogateurs agressifs.
L'interface utilisateur APIC exécute plusieurs requêtes API pour remplir chaque page. De même, toutes les commandes show de l'APIC (NXOS Style CLI) sont des wrappers pour les scripts python qui exécutent plusieurs requêtes API, gèrent la réponse, puis la servent à l'utilisateur.
|
Nom du fichier journal |
Emplacement |
Dans quel support technique se trouve-t-il ? |
Commentaires |
|
access.log |
/var/log/dme/log |
Carte APIC 3 sur 3 |
Indépendant de l'ACI, 1 ligne par requête API |
|
error.log |
/var/log/dme/log |
Carte APIC 3 sur 3 |
ACI agnostique, affiche les erreurs nginx (limitation incluse) |
|
nginx.bin.log |
/var/log/dme/log |
Carte APIC 3 sur 3 |
Spécifique à l'ACI, consigne les transactions DME |
|
nginx.bin.warnplus.log |
/var/log/dme/log |
Carte APIC 3 sur 3 |
L'ACI spécifique contient des journaux d'avertissement et de gravité |
Quelles sont les conséquences ?
Comment la lenteur est-elle ressentie ?
Quand la lenteur a-t-elle été remarquée ?
access.log est une fonctionnalité de NGINX et est, par conséquent, agnostique APIC. Chaque ligne représente 1 requête HTTP reçue par le contrôleur APIC. Consultez ce journal pour comprendre l'utilisation NGINX d'un APIC.
Format access.log par défaut sur la version 5.2+ de l'ACI :
log_format proxy_ip '$remote_addr ($http_x_real_ip) - $remote_user [$time_local]'
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
Cette ligne représente une entrée access.log lorsqu'une moquery -c fvTenant est exécutée :
127.0.0.1 (-) - - [07/Apr/2022:20:10:59 +0000]"GET /api/class/fvTenant.xml HTTP/1.1" 200 15863 "-" "Python-urllib"
Mappage de l'entrée access.log de l'exemple avec log_format :
|
Champ log_format |
Contenu de l'exemple |
Commentaires |
|
$remote_addr |
127.0.0.1 |
Adresse IP de l'hôte qui a envoyé cette demande |
|
$http_x_real_ip |
- |
IP du dernier demandeur si des proxys sont utilisés |
|
$remote_user |
- |
Généralement pas utilisé. Consultez le fichier nginx.bin.log pour savoir quel utilisateur s'est connecté pour effectuer des requêtes |
|
$time_local |
07/Avr/2022:20:10:59 +0000 |
Quand la demande a été traitée |
|
$request |
GET /api/class/fvTenant.xml HTTP/1.1 |
Méthode Http (GET, POST, DELETE) et URI |
|
$status |
200 |
|
|
$body_bytes_sent |
1586 |
taille de la charge utile de réponse |
|
$http_referer |
- |
- |
|
$http_user_agent |
Python-urllib |
Quel type de client a envoyé la demande ? |
Rafales de demandes à haut débit sur une longue période :
Réponses 4xx ou 5xx cohérentes :
Le fichier access.log d'un APIC peut être rapidement analysé avec le script Access Log Analyzer dans le projet aci-tac-scripts du groupe Github Datacenter.
L'utilisation du processeur NGINX et de la mémoire peut être vérifiée avec la commande top de l'APIC :
top - 13:19:47 up 29 days, 2:08, 11 users, load average: 12.24, 11.79, 12.72
Tasks: 785 total, 1 running, 383 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.5 us, 2.0 sy, 0.0 ni, 94.2 id, 0.1 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem : 13141363+total, 50360320 free, 31109680 used, 49943636 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 98279904 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21495 root 20 0 4393916 3.5g 217624 S 2.6 2.8 759:05.78 nginx.bin
Une utilisation élevée des ressources NGINX peut être directement corrélée à un taux élevé de demandes traitées.
Une panne NGINX n'est pas typique pour les problèmes de GUI Slow APIC. Toutefois, si des coeurs NGINX sont trouvés, les joindre à un TAC SR pour analyse. Reportez-vous au guide ACI Techsupport pour connaître les étapes de vérification des coeurs.
Si aucune requête rapide n'est trouvée mais qu'un utilisateur continue à présenter une lenteur de l'interface utilisateur, le problème peut être la latence entre le client (navigateur) et le serveur (APIC).
Dans ces scénarios, validez le chemin des données du navigateur vers le contrôleur APIC (distance géographique, VPN, etc.). Si possible, déployez et testez l'accès à partir d'un serveur de saut situé dans la même région géographique ou le même data center que les APIC à isoler. Vérifier si d'autres utilisateurs présentent une latence similaire.
Tous les navigateurs peuvent valider les requêtes et les réponses HTTP via leur boîte à outils Browser Development, généralement dans un onglet Network.
Cet outil peut être utilisé pour valider le temps nécessaire à chaque étape des requêtes provenant d'un navigateur, comme le montre l'image.
Exemple de navigateur en attente de réponse du contrôleur APIC pendant 1,1 minute
Page Groupe de stratégies :
ID de bogue Cisco CSCvx14621 - L'interface graphique du contrôleur APIC se charge lentement sur les stratégies IPG dans l'onglet Fabric.
Interface sous la page Inventaire :
ID de bogue Cisco CSCvx90048 - Le chargement initial de l'onglet opérationnel « Configuration de l'interface physique de couche 1 » est long/provoque un « gel ».
Certains navigateurs, tels que Firefox, permettent par défaut davantage de connexions Web par hôte.
Le VPN et la distance au contrôleur APIC augmentent la lenteur globale de l'interface utilisateur en fonction des demandes du navigateur client et du temps de réponse du contrôleur APIC. Une zone de saut géographiquement locale aux APIC réduit considérablement les temps de déplacement du navigateur vers l'APIC.
Si un serveur Web (NGINX sur APIC) gère un volume élevé de requêtes Long-Web, cela peut affecter les performances des autres requêtes reçues en parallèle.
Ceci est particulièrement vrai pour les systèmes qui ont des bases de données distribuées, comme les APIC. Une seule requête API peut nécessiter des requêtes et des recherches supplémentaires envoyées à d'autres noeuds du fabric, ce qui peut entraîner des temps de réponse plus longs. Une rafale de ces requêtes Long-Web dans un laps de temps réduit peut augmenter la quantité de ressources requises et entraîner des temps de réponse plus longs que prévu. En outre, les demandes reçues peuvent alors expirer (90 secondes), ce qui entraîne un comportement inattendu du système du point de vue de l'utilisateur.
Dans la version 4.2(1)+, un utilisateur peut activer le « Calcul des performances du système » qui suit et met en surbrillance les demandes d'API dont le traitement a pris du temps.
Le calcul peut être activé à partir de Système - Paramètres système - Performances système
Une fois le « calcul » activé, un utilisateur peut naviguer jusqu'à des APIC spécifiques sous Contrôleurs pour afficher les requêtes API les plus lentes au cours des 300 dernières secondes.
Système - Contrôleurs - Dossier Contrôleurs - APIC x - Temps de réponse du serveur
Disponible dans la version 4.2(1)+, un utilisateur peut activer la limitation de requête indépendamment des protocoles HTTP et HTTPS.
Remarque : à partir de la version 6.1(2) de l'ACI, le débit maximal pris en charge pour cette fonctionnalité a été réduit à 40 demandes par seconde (r/s) ou 2 400 demandes par minute (r/m) à partir de 10 000 r/m.
Fabric - Stratégies de fabric - Dossier Stratégies - Dossier Accès à la gestion - par défaut
Lorsque cette option est activée :
apic# less /var/log/dme/log/error.log
...
2023/04/17 20:19:14 [error] ... limiting requests, excess: 40.292 by zone "httpsClientTagZone", client: h.o.s.t, ... request: "GET /api/class/...", host: "a.p.i.c"
2023/04/17 20:19:14 [error] ... limiting requests, excess: 40.292 by zone "httpsClientTagZone", client: h.o.s.t, ... request: "GET /api/node/...", host: "a.p.i.c"
En règle générale, Request Throttle sert uniquement à protéger le serveur (APIC) contre les symptômes de type DDOS induits par les clients agressifs vis-à-vis des requêtes. Comprendre et isoler le client exigeant des solutions finales dans la logique app/script.
Ces recommandations sont conçues pour aider à réduire la charge et la contrainte opérationnelle sur le contrôleur APIC, en particulier dans les scénarios où aucune source unique n'est responsable d'un volume élevé d'appels API. En mettant en oeuvre ces meilleures pratiques, vous pouvez réduire le traitement, la journalisation et la génération d'événements inutiles dans votre fabric, ce qui améliore la stabilité et les performances du système. Ces suggestions sont particulièrement pertinentes dans les environnements où les comportements globaux plutôt que les incidents isolés contribuent à la pression exercée par le CIPA.
Assurez-vous que la journalisation ACL est désactivée pendant les opérations normales. Activez-la uniquement pendant les fenêtres de maintenance planifiée pour le dépannage ou le débogage. La journalisation continue peut générer des messages d'information excessifs, en particulier avec des pertes de trafic importantes sur plusieurs commutateurs, ce qui augmente la charge de travail APIC.
Pour plus de détails, reportez-vous au guide de configuration de la sécurité du contrôleur APIC Cisco (lien vers le guide 5.2.x) :
https://www.cisco.com/c/en/us/td/docs/dcn/aci/apic/5x/security-configuration/cisco-apic-security-configuration-guide-release-52x/security-policies-52x.html
Configurez le système de sorte que seuls les messages syslog de gravité ALERT soient convertis en eventRecords. Évitez de convertir le niveau INFORMATION (qui inclut ACL.logging) pour empêcher les événements bruyants de submerger le contrôleur APIC :
1. Accédez à Fabric → Politiques de fabric → Politiques → Surveillance → Politique commune → Politiques de messages Syslog → Par défaut.
2. Ajustez le filtre de l'installation pour définir le niveau de gravité Syslog sur Alerte.
Pour réduire le bruit, supprimez les codes d'événement (squelch) qui ne sont pas pertinents pour votre surveillance.
Pour supprimer le code d'événement E4204939, utilisez cette commande sur n'importe quelle interface de ligne de commande APIC :
bash
icurl -k -sX POST -d '<fabricInst><monCommonPol><eventSevAsnP code="E4204939" sev="squelched"/></monCommonPol></fabricInst>' 'https://localhost/api/node/mo/uni/.xml’
Pour vérifier :
bash
icurl -k -sX GET 'https://localhost/api/node/class/eventSevAsnP.xml' | xmllint --format -
Vous pouvez également vérifier via l'interface utilisateur :
Fabric > Stratégies de fabric > Stratégies > Surveillance > Stratégie commune > Stratégie d'affectation de gravité des événements
Pour les fabrics gérés par des versions ND antérieures à 3.2.2m ou 4.1.1g, effectuez une mise à niveau vers l'une de ces versions ou une version ultérieure pour optimiser les intervalles d'actualisation des abonnements. Les versions antérieures sont actualisées toutes les 45 secondes par mode de gestion, ce qui, à grande échelle, peut entraîner plus de 300 000 demandes APIC par jour. Les versions mises à jour augmentent le délai d'expiration de l'abonnement à 3 600 secondes (1 heure), réduisant ainsi le nombre d'actualisations à environ 5 000 par jour.
Les fabrics compatibles Intersight génèrent des requêtes topsystem périodiques à partir du connecteur CC (toutes les 15 secondes), ce qui augmente la charge APIC.
Dans les versions 6.1.2 et ultérieures, cette requête a été optimisée pour réduire la surcharge.
Définissez la stratégie de rétention pour eventRecord, faultRecord et healthRecord sur 1 000 pour empêcher l'accumulation excessive d'enregistrements. Ceci est particulièrement utile lorsque vous extrayez ces enregistrements régulièrement pour toute activité opérationnelle spécifique. Évaluez toujours l'impact de la réduction de la granularité de la surveillance par rapport à vos besoins opérationnels et de dépannage.
| Révision | Date de publication | Commentaires |
|---|---|---|
1.0 |
09-Dec-2025
|
Première publication |
Commentaires