Test Toc document check

 
Updated 2026 年 2 月 4 日
PDF
Is this helpful? 反馈

    简介

    本文档介绍排除APIC GUI体验缓慢故障的一般方法。

    快速入门

    经常发现,APIC GUI问题缓慢是由于来自脚本、集成或应用的API请求速率较高造成的。APIC的access.log记录每个已处理的API请求。使用Github Datacenter组aci-tac-scripts项目中的访问日志分析器脚本,可以快速分析APIC的access.log。

    背景信息

    APIC作为Web服务器 — NGINX

    NGINX是负责每个APIC上可用的API终端的DME。如果NGINX关闭,则无法处理API请求。如果NGINX拥塞,则API拥塞。每个APIC运行自己的NGINX进程,因此如果任何主动式查询器仅针对某个APIC,则可能只有一个APIC会出现NGINX问题。

    APIC UI执行多个API请求以填充每个页面。同样,所有APIC show命令(NXOS Style CLI)都是执行多个API请求、处理响应然后提供给用户的python脚本的包装程序。

    相关日志

    日志文件名

    位置

    它位于哪个技术支持部门

    备注

    access.log

    /var/log/dme/log

    APIC 3of3

    与ACI无关,每个API请求提供1行

    error.log

    /var/log/dme/log

    APIC 3of3

    ACI不可知性,显示nginx错误(包括限制)

    nginx.bin.log

    /var/log/dme/log

    APIC 3of3

    ACI特定,记录DME事务

    nginx.bin.warnplus.log

    /var/log/dme/log

    APIC 3of3

    ACI特定包含警告+严重性的日志

    方法

    隔离初始触发器

    哪些方面受到影响?

    • 哪些APIC受到影响;一个、多个或所有APIC?
    • 哪里可以看到迟缓;是通过UI、CLI命令还是同时使用两者?
    • 哪些特定的UI页面或命令速度较慢?

    如何体验低速?

    • 单个用户是否可在多个浏览器中看到这种情况?
    • 多个用户是否报告速度缓慢?还是仅报告单个/子集用户?
    • 受影响用户是否共享从浏览器到APIC的类似地理位置或网络路径?

    缓慢的第一次注意到是在什么时候?

    • 最近是否添加了ACI集成或脚本?
    • 最近是否启用了浏览器扩展?
    • 最近是否更改了ACI配置?

    检查NGINX使用情况和运行状况

    Access.log条目格式

    access.log是NGINX的一项功能,因此与APIC无关。每行代表APIC收到的1个HTTP请求。参考此日志以了解APIC的NGINX使用情况。

    ACI版本5.2+上的默认access.log格式:

    log_format proxy_ip '$remote_addr ($http_x_real_ip) - $remote_user [$time_local]'
    '"$request" $status $body_bytes_sent '
    '"$http_referer" "$http_user_agent"';

    此行表示执行moquery -c fvTenant时的access.log条目:

    127.0.0.1 (-) - - [07/Apr/2022:20:10:59 +0000]"GET /api/class/fvTenant.xml HTTP/1.1" 200 15863 "-" "Python-urllib"

    示例access.log条目映射到log_format:

    log_format字段

    示例内容

    备注

    $remote_addr

    127.0.0.1

    发送此请求的主机的IP

    $http_x_real_ip

    -

    使用代理时最后一个请求者的IP

    $remote_user

    -

    一般不使用。选中nginx.bin.log以跟踪登录执行请求的用户

    $time_local

    2022年4月07日:20:10:59 +0000

    处理请求时

    $request

    获取/api/class/fvTenant.xml HTTP/1.1

    Http方法(GET、POST、DELETE)和URI

    $status

    200

    HTTP响应状态代码

    $body_bytes_sent

    1586

    响应负载大小

    $http_reference

    -

    -

    $http_user_agent

    Python-urllib

    发送请求的客户端类型

    Access.log行为

    在较长时间内高速突发请求:

    • 每秒40多个请求的持续突发会导致用户界面缓慢
    • 确定负责查询的主机
    • 减少或禁用查询源,以查看这是否能缩短APIC响应时间。

    一致的4xx或5xx响应:

    • 如果找到,请识别来自nginx.bin.log的错误消息

    使用Github Datacenter组aci-tac-scripts项目中的访问日志分析器脚本,可以快速分析APIC的access.log。

    检查NGINX资源使用情况

    可以使用APIC中的top命令检查NGINX CPU和内存使用情况:

    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






    高NGINX资源使用率可以直接与高处理率请求相关联。

    检查内核

    NGINX崩溃不常用于慢速APIC GUI问题。但是,如果找到NGINX核心,请将其附加到TAC SR进行分析。有关检查核心的步骤,请参阅ACI技术支持指南

    检查客户端到服务器的延迟

    如果找不到快速请求,但用户继续表现出UI缓慢,则问题可能是客户端(浏览器)到服务器(APIC)延迟。

    在这些情况下,验证从浏览器到APIC的数据路径(地理距离、VPN等)。 如果可能,请部署并测试从与APIC位于同一地理区域或数据中心的跳转服务器进行的访问,以隔离。验证其他用户是否显示类似的延迟量。

    浏览器开发工具网络选项卡

    所有浏览器都能够通过其Browser Development(浏览器开发)工具包(通常位于Network(网络)选项卡中)验证HTTP请求和响应。

    此工具可用于验证来自浏览器的请求的每个阶段所需的时间,如图所示。

    Example of the Browser Waiting 1.1 minutes for the APIC to Respond浏览器等待1.1分钟APIC响应的示例

    特定UI页面的增强功能

    “策略组”页:

    思科漏洞ID CSCvx14621 - APIC GUI在“交换矩阵”(Fabric)选项卡中的IPG策略上缓慢加载。

    “资产”页面下的界面:

    Cisco Bug ID CSCvx90048 — “Layer 1 Physical Interface Configuration”(第1层物理接口配置)的“Operational”(操作)选项卡的初始负载较长/导致“Freeze”(冻结)。

    客户端>服务器延迟的一般建议

    默认情况下,某些浏览器(如Firefox)允许每台主机拥有更多网络连接。

    • 检查此设置是否可以在使用的浏览器版本上配置
    • 这对于多查询页面(例如“策略组”(Policy Group)页面)更为重要

    VPN和与APIC的距离会增加整体UI延迟,因为客户端浏览器请求和APIC响应传输时间会更长。APIC在地理上本地的跳转框显着减少了浏览器到APIC的传输时间。

    检查长期Web请求

    如果Web服务器(APIC上的NGINX)处理大量长Web请求,这可能会影响并行收到的其他请求的性能。

    对于具有分布式数据库的系统(如APIC)尤其如此。单个API请求可能需要向交换矩阵中的其他节点发送额外的请求和查找,这会导致预期的响应时间更长。这些长Web请求在较短的时间帧内突发,可能会增加所需的资源量,导致意外的较长响应时间。此外,收到的请求会超时(90秒),导致从用户角度而言出现意外的系统行为。

    系统响应时间 — 启用服务器响应时间的计算

    在4.2(1)+中,用户可以启用“系统性能计算”,跟踪并突出显示需要长时间处理的API请求。

    Calculation can be enabled from System - System Settings - System Performance可从“系统 — 系统设置 — 系统性能”中启用计算

    启用“计算”后,用户可导航到“控制器”下的特定APIC,查看最后300秒内最慢的API请求。

    System - Controllers - Controllers Folder - APIC x - Server Response Time系统 — 控制器 — 控制器文件夹 — APIC x — 服务器响应时间

    APIC API使用注意事项

    确保脚本不会损害Nginx的一般指针

    • 每个APIC运行自己的NGINX DME。
      • 只有APIC 1的NGINX处理发往APIC 1的请求。APIC 2和3的NGINX不处理这些请求。
    • 通常,在很长一段时间内每秒钟有40个以上的API请求会使NGINX衰弱。
      • 如果找到,则减少请求的攻击性。
      • 如果无法修改请求主机,请考虑对APIC执行NGINX速率限制

    解决脚本效率低下问题

    NGINX请求限制

    在4.2(1)+版本中,用户可以独立启用针对HTTP和HTTPS的请求限制。

    意:从ACI 6.1(2)版开始,此功能支持的最大速率从10,000次/秒降至40个请求/秒(r/s)或2400个请求/分钟(r/m)。

    Fabric - Fabric Policies - Policies Folder - Management Access Folder - default交换矩阵 — 交换矩阵策略 — 策略文件夹 — 管理访问文件夹 — 默认

    启用时:

    • 重新启动NGINX以应用配置文件更改
      • 新区域httpsClientTagZone将写入nginx配置
    • 限制速率可以设置为每分钟请求数(r/m)或每秒请求数(r/s)。
    • 请求限制依赖于NGINX中包含的速率限制实施
      • 针对/api/URI的API请求使用用户定义的限制速率+ burst=(限制速率x 2)+ nodelay
        • /api/aaaLogin/api/aaaRefresh有一个不可配置的限制(区域aaaApiHttps),速率限制为2r/s + burst=4 + nodelay
      • 基于每个客户端IP地址跟踪请求限制
      • 来自APIC self-ip(UI + CLI)的API请求绕过限制
      • 任何超过用户定义的限制速率+突发阈值的客户端IP地址都会收到来自APIC的503响应
      • 这些503可在访问日志中关联
      • error.log包含指示何时激活限制(区域httpsClientTagZone)以及针对哪些客户端主机的条目
    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"

    一般来说,Request Throttle仅用于保护服务器(APIC)免受查询激进型客户端引起的类似DDOS的症状。在应用/脚本逻辑中了解并隔离请求激进型客户端,以获得最终解决方案。

    建议

    这些建议旨在帮助减少APIC的负载和运营压力,尤其是在没有单一来源负责大量API调用的情况下。通过实施这些最佳实践,您可以最大限度地减少交换矩阵中不必要的处理、日志记录和事件生成,从而提高系统稳定性和性能。这些建议在聚合行为而非孤立事件导致APIC紧张的环境中尤其适用。

    禁用ACL日志记录


    确保ACL日志记录已在正常操作期间关闭。仅在计划维护时段启用该功能,以便进行故障排除或调试。连续日志记录可能会生成过多信息性消息,尤其是当多台交换机发生大量流量丢弃时,会增加APIC工作负载。


    有关详细信息,请参阅思科APIC安全配置指南(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

    将系统日志转换限制为严重事件


    配置系统,以便仅将严重性为ALERT的系统日志消息转换为eventRecords。避免转换信息级别(包括ACL.logging),以防止噪声事件淹没APIC:

    1.导航到Fabric → Fabric Policies → Policies → Monitoring → Common Policy → Syslog Message Policies → Default。
    2.调整设备过滤器以将系统日志严重性设置为警报。

    静噪Non-Essential事件代码


    抑制(抑制)与监控无关的事件代码需要降低噪音。
    要静音事件代码E4204939,请在任何APIC CLI上使用此命令:

    bash
    icurl -k -sX POST -d '<fabricInst><monCommonPol><eventSevAsnP code="E4204939" sev="squelched"/></monCommonPol></fabricInst>' 'https://localhost/api/node/mo/uni/.xml’

    要验证:

    bash
    icurl -k -sX GET 'https://localhost/api/node/class/eventSevAsnP.xml' | xmllint --format -

    或者,通过UI检查:
    Fabric > Fabric Policies > Policies > Monitoring > Common Policy > Event Severity Assignment Policy

    优化ND订用刷新


    对于由3.2.2m或4.1.1g之前的ND版本管理的交换矩阵,请升级到其中一个版本或更高版本以优化订用刷新间隔。早期版本每MO每45秒刷新一次,这样在规模上,每天可产生300,000多个APIC请求。更新的版本将订用超时增加到3600秒(1小时),将刷新减少到每天大约5,000次。

    监视与监视相关的查询


    支持Intersight的交换矩阵从DC连接器生成定期的topsystem查询(每15秒),从而增加APIC负载。
    在版本6.1.2及更高版本中,此查询已优化以降低开销。

    调整记录的保留策略


    将eventRecord、faultRecord和healthRecord的保留策略设置为1,000,以防止记录过度累积。当您为任何特定操作活动定期提取这些记录时,此功能尤其有用。请务必根据您的操作和故障排除要求评估降低监控精细度的影响。