Cumulus Linux 交换机上的 NetQ Agent CPU 利用率

概述

NetQ Agent 是在交换机上运行的应用程序。它监控和收集交换机上的遥测数据,并将其流式传输到云端或本地部署的 NetQ 平台。与交换机上运行的其他应用程序一样,当 CPU 可用时,NetQ Agent 可能会导致 CPU 利用率过高。这不会干扰正常的交换机流量,但可以手动限制。

问题呈现

您可能会遇到在运行 Cumulus Linux 的交换机上 NetQ Agent 导致 CPU 利用率过高的情况。当通过 SNMP 或 Grafana 或其他监控工具监控 CPU 时,您可能会看到这种高利用率,其形式为基于您为 CPU 使用率设置的阈值设置的警报或事件。

管理 NetQ Agent 行为

监控 NetQ Agent 和其他服务的 CPU 使用率的一种方法是在 Cumulus Linux 交换机上运行以下命令

root@hostname:/var/log# ps %mem | head

PID    PPID   CMD                          %MEM   %CPU
889    1      /usr/sbin/switchd            6.5    18.8
1246   1      /usr/share/venvs/netq-apps/  2.9    0.0
10866  10773  /usr/share/venvs/netq-agent  2.2    11.9
10773  1      /usr/share/venvs/netq-agent  2.0    1.3
10957  10866  /usr/share/venvs/netq-agent  1.9    1.6
1243   1      /usr/bin/python -O /usr/sbi  1.1    0.0
1020   1      /usr/bin/python /usr/sbin/p  0.6    0.2
1245   1      /usr/bin/python /usr/bin/ne  0.5    0.9
1021   1      /usr/bin/python /usr/sbin/s  0.5    0.4

Cumulus Linux 具有内置的负载均衡算法,可调节 CPU 使用率,从而允许 NetQ Agent 仅在 CPU 可用时才使用 CPU。NetQ Agent 是一个低优先级 Linux 进程,以优先级级别 5 运行。当没有调度争用时,NetQ Agent 可以使用 CPU 可用的尽可能多的带宽。当存在争用时,它会屈服于更高优先级的进程,例如协议守护程序以及交换机 ASIC 驱动程序和内核任务。

您还可以选择在 NetQ 2.4.1 和 Cumulus Linux 3.6.x、3.7.x 或 4.1 及更高版本中设置 NetQ Agent 可以使用的 CPU 带宽量限制。在 Cumulus Linux 交换机上运行以下 NetQ CLI 命令以限制 NetQ Agent 的 CPU 利用率

netq config add agent cpu-limit <limit>

建议的起始限制为 60%。如果您发现此值过高或过低,可以进行调整。

例如,您可以检查当前设置的值,修改它,然后验证它是否已更改。

  1. 检查当前设置的限制。

    root@hostname:/var/log# netq config show agent cpu-limit
    CPU Quota
    -----------
    100%
    
  2. 将 NetQ Agent 的 CPU 使用率限制修改为最高 60%。

    root@hostname:/var/log# netq config add agent cpu-limit 60
    Successfully set agent CPU limit to 60
    Please restart agent(netq config restart agent)
        
    root@hostname:/var/log# netq config restart agent
    Restarting netq-agent... Success!
    
  3. 验证设置。

    root@hostname:/var/log# netq config show agent cpu-limit
    CPU Quota
    -----------
    60
    

    您还可以 JSON 格式查看设置

    root@hostname:/var/log# netq config show agent cpu-limit json
    {
    "cpu-limit":60
    }
    

结论

虽然 NetQ Agent 可能会导致交换机上的 CPU 使用率过高,但它不会干扰正常运行。NetQ 将 NetQ Agent 指定为低优先级服务,因此仅在 CPU 可用时才使用 CPU。如果您愿意,您可以通过使用 NetQ CLI netq config add agent cpu-limit 命令设置限制来控制 NetQ Agent 使用的可用 CPU 带宽量。

参考资料

管理 NetQ Agent