La documentazione per questo prodotto è stata redatta cercando di utilizzare un linguaggio senza pregiudizi. Ai fini di questa documentazione, per linguaggio senza di pregiudizi si intende un linguaggio che non implica discriminazioni basate su età, disabilità, genere, identità razziale, identità etnica, orientamento sessuale, status socioeconomico e intersezionalità. Le eventuali eccezioni possono dipendere dal linguaggio codificato nelle interfacce utente del software del prodotto, dal linguaggio utilizzato nella documentazione RFP o dal linguaggio utilizzato in prodotti di terze parti a cui si fa riferimento. Scopri di più sul modo in cui Cisco utilizza il linguaggio inclusivo.
Cisco ha tradotto questo documento utilizzando una combinazione di tecnologie automatiche e umane per offrire ai nostri utenti in tutto il mondo contenuti di supporto nella propria lingua. Si noti che anche la migliore traduzione automatica non sarà mai accurata come quella fornita da un traduttore professionista. Cisco Systems, Inc. non si assume alcuna responsabilità per l’accuratezza di queste traduzioni e consiglia di consultare sempre il documento originale in inglese (disponibile al link fornito).
Questo documento descrive la metodologia generale per risolvere i problemi relativi a un'interfaccia GUI APIC lenta.
Spesso si riscontra che i problemi lenti dell'interfaccia grafica APIC sono il risultato di un'alta percentuale di richieste API originate da uno script, un'integrazione o un'applicazione. Il file access.log di un file APIC registra ogni richiesta API elaborata. Il file access.log di un APIC può essere analizzato rapidamente con lo script Access Log Analyzer all'interno del progetto aci-tac-scripts del gruppo Datacenter di Github.
NGINX è il DME responsabile degli endpoint API disponibili su ciascun APIC. Se NGINX non è attivo, le richieste API non possono essere gestite. Se NGINX è congestionato, l'API è congestionata. Ogni APIC esegue il proprio processo NGINX, quindi è possibile che solo un singolo APIC possa avere problemi con NGINX se solo tale APIC è oggetto di query aggressive.
L'interfaccia utente APIC esegue più richieste API per popolare ogni pagina. Analogamente, tutti i comandi show APIC (NXOS Style CLI) sono wrapper per script Python che eseguono più richieste API, gestiscono la risposta, quindi la forniscono all'utente.
|
Nome file di log |
Posizione |
In quale supporto tecnico |
Commenti |
|
file access.log |
/var/log/dme/log |
APIC 3 di 3 |
ACI agnostic, fornisce 1 linea per richiesta API |
|
errore.log |
/var/log/dme/log |
APIC 3 di 3 |
ACI Agnostic, mostra errori Inginx (limitazione inclusa) |
|
nginx.bin.log |
/var/log/dme/log |
APIC 3 di 3 |
specifico di ACI, registra le transazioni DME |
|
nginx.bin.warnplus.log |
/var/log/dme/log |
APIC 3 di 3 |
Contiene registri con livello di avviso + gravità |
Quali sono le conseguenze?
Come si sperimenta la lentezza?
Quando è stata notata per la prima volta la lentezza?
access.log è una funzionalità di NGINX ed è pertanto indipendente da APIC. Ogni riga rappresenta una richiesta HTTP ricevuta da APIC. Fare riferimento a questo registro per informazioni sull'utilizzo di NGINX di un APIC.
Formato predefinito di access.log in ACI versione 5.2+:
log_format proxy_ip '$remote_addr ($http_x_real_ip) - $remote_user [$time_local]'
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
Questa riga rappresenta una voce access.log quando viene eseguita una moquery -c fvTenant:
127.0.0.1 (-) - - [07/Apr/2022:20:10:59 +0000]"GET /api/class/fvTenant.xml HTTP/1.1" 200 15863 "-" "Python-urllib"
Mappa della voce access.log di esempio a log_format:
|
campo log_format |
Contenuto da esempio |
Commenti |
|
$remote_addr |
127.0.0.1 |
IP dell'host che ha inviato la richiesta |
|
$http_x_real_ip |
- |
IP dell'ultimo richiedente se proxy in uso |
|
$utente_remoto |
- |
Generalmente non utilizzato. Selezionare nginx.bin.log per tenere traccia dell'utente che ha eseguito l'accesso per eseguire le richieste |
|
$ora_locale |
07/Apr/2022:20:10:59 +0000 |
Quando la richiesta è stata elaborata |
|
$request |
SCARICA /api/class/fvTenant.xml HTTP/1.1 |
Metodo Http (GET, POST, DELETE) e URI |
|
$status |
200 |
|
|
$body_bytes_sent |
1586 |
dimensioni payload risposta |
|
$http_referer |
- |
- |
|
$http_user_agent |
Python-urllib |
Tipo di client che ha inviato la richiesta |
Frequenza elevata di picchi di richieste in un lungo periodo di tempo:
Risposte 4xx o 5xx coerenti:
Il file access.log di un APIC può essere analizzato rapidamente con lo script Access Log Analyzer all'interno del progetto aci-tac-scripts del gruppo Datacenter di Github.
Per controllare l'utilizzo della CPU e della memoria NGINX, usare il comando top dell'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
L'elevato utilizzo delle risorse NGINX può essere direttamente correlato a un elevato numero di richieste elaborate.
Un arresto anomalo di NGINX non è tipico per i problemi relativi all'interfaccia grafica dell'APIC lento. Tuttavia, se vengono individuati core NGINX, collegarli a un TAC SR per l'analisi. Per la procedura di verifica dei core, consultare la guida ACI Techsupport.
Se non vengono trovate richieste rapide ma un utente continua a mostrare lentezza dell'interfaccia utente, il problema può essere la latenza da client (browser) a server (APIC).
In questi scenari, convalidare il percorso dati dal browser all'APIC (distanza geografica, VPN, ecc.). Se possibile, distribuire e verificare l'accesso da un server di collegamento situato nella stessa area geografica o nello stesso centro dati degli APIC da isolare. Convalida se altri utenti mostrano una latenza simile.
Tutti i browser sono in grado di convalidare le richieste e le risposte HTTP tramite il relativo toolkit di sviluppo dei browser, in genere all'interno di una scheda Rete.
Questo strumento può essere utilizzato per convalidare la quantità di tempo necessaria per ogni fase delle richieste originate dal browser, come mostrato nell'immagine.
Esempio di browser in attesa di una risposta da parte dell'APIC di 1,1 minuti
Pagina Gruppo di criteri:
L'ID bug Cisco CSCvx14621 - l'interfaccia grafica APIC viene caricata lentamente sui criteri IPG nella scheda Fabric.
Interfaccia nella pagina Inventory:
Cisco ID bug CSCvx90048 - Il carico iniziale della scheda operativa "Layer 1 Physical Interface Configuration" è lungo e induce al 'blocco'.
Alcuni browser, come Firefox, consentono per impostazione predefinita più connessioni Web per host.
La velocità VPN e la distanza da APIC aumentano la lentezza complessiva dell'interfaccia utente in base alle richieste del browser client e al tempo di spostamento della risposta APIC. Un jump box geograficamente locale rispetto agli APIC riduce in modo significativo i tempi di spostamento del browser rispetto agli APIC.
Se un server Web (NGINX su APIC) gestisce un volume elevato di richieste Web lunghe, ciò può influire sulle prestazioni di altre richieste ricevute in parallelo.
Ciò è particolarmente vero per i sistemi che dispongono di database distribuiti, ad esempio APIC. Una singola richiesta API può richiedere ulteriori richieste e ricerche inviate ad altri nodi nell'infrastruttura, con tempi di risposta più lunghi previsti. Una frammentazione di queste richieste Web lunghe in un intervallo di tempo ridotto può aumentare la quantità di risorse richieste e comportare tempi di risposta inaspettatamente più lunghi. Inoltre, le richieste ricevute possono scadere (90 secondi), determinando un comportamento imprevisto del sistema dal punto di vista dell'utente.
In 4.2(1)+, un utente può abilitare il "Calcolo delle prestazioni del sistema" che tiene traccia ed evidenzia le richieste API che hanno impiegato molto tempo a gestire.
È possibile abilitare il calcolo da Sistema - Impostazioni di sistema - Prestazioni del sistema
Una volta abilitato il "calcolo", l'utente può passare a specifici APIC in Controller per visualizzare le richieste API più lente negli ultimi 300 secondi.
Sistema - Controller - Cartella controller - APIC x - Tempo di risposta server
Disponibile nella versione 4.2(1)+, un utente può abilitare la limitazione delle richieste su HTTP e HTTPS in modo indipendente.
Nota: a partire dalla versione ACI 6.1(2), la velocità massima supportata per questa funzionalità è stata ridotta a 40 richieste al secondo (r/s) o 2400 richieste al minuto (r/m) da 10.000 r/m.
Fabric - Criteri fabric - Cartella criteri - Cartella accesso gestione - predefinito
Quando abilitato:
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"
Come regola generale, Request Throttle serve solo a proteggere il server (APIC) da sintomi simili a quelli di DDOS indotti da client che eseguono query. Comprendere e isolare il client di richiesta per le soluzioni finali nella logica dell'app/script.
Queste raccomandazioni sono progettate per contribuire a ridurre il carico e lo stress operativo sull'APIC, in particolare negli scenari in cui nessuna singola origine è responsabile di un elevato volume di chiamate API. Implementando queste procedure ottimali, è possibile ridurre al minimo l'elaborazione, la registrazione e la generazione di eventi non necessari nel fabric, migliorando la stabilità e le prestazioni del sistema. Questi suggerimenti sono particolarmente rilevanti in ambienti in cui i comportamenti aggregati piuttosto che gli incidenti isolati contribuiscono al ceppo APIC.
Verificare che la registrazione ACL sia disattivata durante le normali operazioni. Abilitarlo solo durante le finestre di manutenzione pianificata per la risoluzione dei problemi o il debug. La registrazione continua può generare un numero eccessivo di messaggi informativi, in particolare con il traffico di volumi elevati su più switch, che aumenta il carico di lavoro APIC.
Per ulteriori informazioni, consultare la guida alla configurazione della sicurezza di Cisco APIC (collegamento della guida 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
Configurare il sistema in modo che solo i messaggi syslog di gravità ALERT vengano convertiti in eventRecords. Evitare di convertire il livello INFORMATION (inclusa la registrazione ACL) per evitare che gli eventi rumorosi sovraccarichino l'APIC:
1. Passare a Fabric → Fabric Policies → Policies → Policies → Monitoring → Common Policy → Syslog Message Policies → Default.
2. Regolare il filtro della funzione per impostare la gravità del syslog su alert.
Eliminare (squelch) i codici di evento che non sono rilevanti per il monitoraggio per ridurre il rumore.
Per squelch del codice di evento E4204939, usare questo comando su qualsiasi CLI APIC:
bash
icurl -k -sX POST -d '<fabricInst><monCommonPol><eventSevAsnP code="E4204939" sev="squelched"/></monCommonPol></fabricInst>' 'https://localhost/api/node/mo/uni/.xml’
Per verificare:
bash
icurl -k -sX GET 'https://localhost/api/node/class/eventSevAsnP.xml' | xmllint --format -
In alternativa, controllare tramite interfaccia utente:
Fabric > Criteri fabric > Criteri > Monitoraggio > Criteri comuni > Criteri di assegnazione della gravità degli eventi
Per i fabric gestiti da versioni ND precedenti alla 3.2.2m o alla 4.1.1g, eseguire l'aggiornamento a una di queste versioni o successive per ottimizzare gli intervalli di aggiornamento delle sottoscrizioni. Le versioni precedenti vengono aggiornate ogni 45 secondi per unità MO, con una scalabilità che può generare oltre 300.000 richieste APIC al giorno. Le versioni aggiornate aumentano il timeout di sottoscrizione a 3600 secondi (1 ora), riducendo gli aggiornamenti a circa 5.000 al giorno.
I fabric abilitati a Intersight generano query periodiche sui topsistemi dal connettore DC (ogni 15 secondi), aggiungendo al carico APIC.
Nella release 6.1.2 e successive, questa query è stata ottimizzata per ridurre il sovraccarico.
Impostare il criterio di conservazione per eventRecord, faultRecord e healthRecord su 1.000 per evitare un accumulo eccessivo di record. Ciò è particolarmente utile quando si estraggono questi record regolarmente per una specifica attività operativa. Valutare sempre l'impatto della riduzione della granularità del monitoraggio rispetto ai requisiti operativi e di risoluzione dei problemi.
| Revisione | Data di pubblicazione | Commenti |
|---|---|---|
1.0 |
09-Dec-2025
|
Versione iniziale |
Feedback