Test Toc document check

 
Updated 4 febbraio 2026
PDF
Is this helpful? Feedback

    Introduzione

    Questo documento descrive la metodologia generale per risolvere i problemi relativi a un'interfaccia GUI APIC lenta.

    Avvio rapido

    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.

    Premesse

    APIC come server Web - NGINX

    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.

    Registri rilevanti

    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à

    Metodologia

    Isolamento trigger iniziale

    Quali sono le conseguenze?

    • quali APIC sono interessati; uno, molti o tutti gli APIC?
    • Dove si vede la lentezza; tramite interfaccia utente, comandi CLI o entrambi?
    • Quali pagine o comandi specifici dell'interfaccia utente sono lenti?

    Come si sperimenta la lentezza?

    • Questa condizione viene rilevata in più browser per un singolo utente?
    • Più utenti segnalano la lentezza o solo un singolo utente o un sottoinsieme di utenti?
    • Gli utenti interessati condividono una posizione geografica o un percorso di rete simile dal browser all'APIC?

    Quando è stata notata per la prima volta la lentezza?

    • È stata aggiunta di recente un'integrazione o uno script ACI?
    • L'estensione del browser è stata abilitata di recente?
    • Si è verificata una modifica recente nella configurazione ACI?

    Verifica stato e utilizzo NGINX

    Formato voce Access.log

    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

    Codice di stato risposta HTTP

    $body_bytes_sent

    1586

    dimensioni payload risposta

    $http_referer

    -

    -

    $http_user_agent

    Python-urllib

    Tipo di client che ha inviato la richiesta

    Comportamenti di Access.log

    Frequenza elevata di picchi di richieste in un lungo periodo di tempo:

    • I burst continui di oltre 40 richieste al secondo possono causare rallentamenti dell'interfaccia utente
    • Identificare gli host responsabili delle query
    • Ridurre o disabilitare l'origine delle query per verificare se questo migliora i tempi di risposta di APIC.

    Risposte 4xx o 5xx coerenti:

    • Identificare il messaggio di errore da nginx.bin.log

    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.

    Verifica utilizzo risorse NGINX

    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.

    Verifica core

    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.

    Verifica latenza da client a server

    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.

    Scheda Rete degli strumenti di sviluppo del browser

    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.

    Example of the Browser Waiting 1.1 minutes for the APIC to RespondEsempio di browser in attesa di una risposta da parte dell'APIC di 1,1 minuti

    Miglioramenti per pagine specifiche dell'interfaccia utente

    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'.

    Suggerimenti generali per Client > Latenza server

    Alcuni browser, come Firefox, consentono per impostazione predefinita più connessioni Web per host.

    • Verificare se l'impostazione è configurabile nella versione del browser in uso
    • Questo aspetto è più importante per le pagine con più query, ad esempio la pagina Gruppo di criteri

    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.

    Verifica richieste Web lunghe

    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.

    Tempo di risposta del sistema - Abilita calcolo per il tempo di risposta del server

    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.

    Calculation can be enabled from System - System Settings - System PerformanceÈ 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.

    System - Controllers - Controllers Folder - APIC x - Server Response TimeSistema - Controller - Cartella controller - APIC x - Tempo di risposta server

    Considerazioni sull'utilizzo delle API APIC

    Puntatori generali per garantire che uno script non danneggi Nginx

    • Ogni APIC esegue il proprio NGINX DME.
      • Solo l'NGINX di APIC 1 elabora le richieste all'APIC 1. L'NGINX di APIC 2 e 3 non elabora tali richieste.
    • In generale, 40+ richieste API al secondo in un lungo periodo di tempo debilita NGINX.
      • Se individuato, ridurre l'aggressività delle richieste.
      • Se l'host Richieste non può essere modificato, prendere in considerazione i limiti di velocità NGINX sull'APIC.

    Inefficienze degli script di indirizzo

    Limitazione richieste NGINX

    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 - Fabric Policies - Policies Folder - Management Access Folder - defaultFabric - Criteri fabric - Cartella criteri - Cartella accesso gestione - predefinito

    Quando abilitato:

    • NGINX viene riavviato per applicare le modifiche al file di configurazione
      • Una nuova zona, httpsClientTagZone, viene scritta nella configurazione di Inginx
    • La velocità può essere impostata in Richieste al minuto (r/m) o Richieste al secondo (r/s).
    • La limitazione delle richieste si basa sull'implementazione del limite di velocità inclusa in NGINX
      • Le richieste API sull'interfaccia /api/URI utilizzano la velocità definita dall'utente + burst= (velocità x 2) + nodelay
        • Esiste una limitazione non configurabile (zona aaaApiHttps) per /api/aaaLogin e /api/aaaRefresh che limita la velocità a 2r/s + burst=4 + nodelay
      • La velocità delle richieste viene registrata in base all'indirizzo IP del client
      • Le richieste API originate dall'indirizzo IP automatico APIC (UI + CLI) ignorano la limitazione
      • Qualsiasi indirizzo IP del client che supera la velocità definita dall'utente + soglia di burst riceve una risposta 503 dall'APIC
      • Questi 503 possono essere correlati nei log degli accessi
      • error.log include voci che indicano quando è stata attivata la limitazione (zona httpsClientTagZone) e per quali host client
    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.

    Consigli

    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.

    Disabilita registrazione ACL


    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

    Limita conversione syslog a eventi critici


    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.

    Codici degli eventi non essenziali Squelch


    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

    Ottimizza aggiornamenti sottoscrizioni DNS


    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.

    Monitoraggio delle query correlate a Intersight


    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.

    Regola criteri di conservazione per i record


    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.