管理 NetQ 代理

运行以下命令以查看代理的状态、禁用代理、管理日志记录以及配置代理收集的事件。

查看 NetQ 代理状态

NetQ 代理状态命令的语法是

netq [<hostname>] show agents
    [fresh | dead | rotten | opta]
    [around <text-time>]
    [json]

您可以查看给定交换机、主机或 NetQ 设备或虚拟机的状态。您还可以按状态进行筛选,并查看过去某个时间点的状态。

要查看所有 NetQ 代理的当前状态,请运行

cumulus@switch~:$ netq show agents

要查看未通信的 NetQ 代理,请运行

cumulus@switch~:$ netq show agents rotten
No matching agents records found

要在 NetQ 设备或 VM 上查看 NetQ 代理状态,请运行

cumulus@switch~:$ netq show agents opta
Matching agents records:
Hostname          Status           NTP Sync Version                              Sys Uptime                Agent Uptime              Reinitialize Time          Last Changed
----------------- ---------------- -------- ------------------------------------ ------------------------- ------------------------- -------------------------- -------------------------
netq-appliance    Fresh            yes      4.12.0-ub20.04u49~1728015156.144ca36 Tue Oct  8 12:06:08 2024  Tue Nov 12 17:03:14 2024  Tue Nov 12 17:04:09 2024   Tue Dec  3 15:43:47 2024

查看 NetQ 代理配置

您可以查看 NetQ 代理的当前配置,以确定它收集哪些数据以及将数据发送到哪里。此命令的语法是

sudo netq config show agent 
    [cpu-limit|frr-monitor|loglevel|ssl|stats|wjh|wjh-threshold] 
    [json]

以下示例显示了本地部署中的 NetQ 代理,它使用默认端口和 VRF 与 127.0.0.1 上的设备或 VM 通信。

cumulus@switch:~$ sudo netq config show agent
netq-agent                value      default
------------------------  ---------  ---------
exhibitport
exhibiturl
server                    127.0.0.1  127.0.0.1
cpu-limit                 100        100
agenturl
wjh                       Enabled    Enabled
enable-opta-discovery     False      False
agentport                 8981       8981
port                      31980      31980
vrf                       default    default
is-gnmi-enabled           False      False
netq_stream_port          7680       7680
netq_stream_address       127.0.0.1  127.0.0.1
is-ssl-enabled            False      False
ssl-cert
generate-unique-hostname  False      False
agent-hostname            cumulus    cumulus
()

要查看 NetQ 代理特定方面的配置,请使用各种选项。

此示例显示配置了 CPU 限制为 60% 的 NetQ 代理。

cumulus@switch:~$ sudo netq config show agent cpu-limit
CPU Quota
-----------
60%
()

修改节点上 NetQ 代理的配置

代理配置命令允许您

  • 添加、禁用和删除 NetQ 代理
  • 启动和停止 NetQ 代理
  • 配置 NetQ 代理以收集选定的数据(CPU 使用率限制、FRR、WJH)
  • 配置 NetQ 代理以将数据发送到服务器集群
  • 排除 NetQ 代理故障

命令一次应用于一个代理,您需要在 NetQ 代理所在的交换机或主机上运行它们。

添加或删除 NetQ 代理

要添加或删除 NetQ 代理,您必须从 NetQ 配置文件 `/etc/netq/netq.yml` 中添加或删除 IP 地址(以及端口和 VRF,如果指定)。这会添加或删除有关代理向其发送收集的数据的服务器的信息。

要使用 NetQ CLI 在交换机或主机上添加或删除 NetQ 代理,请运行

sudo netq config add agent server <text-opta-ip> [port <text-opta-port>] [vrf <text-vrf-name>] [inband-interface <interface-name>]

如果您想在服务器上使用特定端口,请使用 `port` 选项。如果您想通过特定的虚拟路由接口发送数据,请使用 `vrf` 选项。

此示例显示了如何添加 NetQ 代理,并告知它使用默认端口(本地部署为端口 31980,云部署为端口 443)和默认 VRF (mgmt) 将其收集的数据发送到 IPv4 地址为 10.0.0.23 的 NetQ 服务器。未指定端口和 VRF,因此 NetQ 假定为默认设置。

cumulus@switch~:$ sudo netq config add agent server 10.0.0.23
cumulus@switch~:$ sudo netq config restart agent

此示例显示了如何添加 NetQ 代理,并告知它使用默认端口(本地部署为端口 31980,云部署为端口 443)和 `default` VRF 将其收集的数据发送到 IPv4 地址为 10.0.0.23 的 NetQ 服务器,该 VRF 用于通过接口 `swp1` 上的带内连接管理的交换机

cumulus@switch~:$ sudo netq config add agent server 10.0.0.23 vrf default inband-interface swp1
cumulus@switch~:$ sudo netq config restart agent

要在交换机或主机上删除 NetQ 代理,请运行

sudo netq config del agent server

禁用和重新启用 NetQ 代理

您可以临时禁用节点上的 NetQ 代理。禁用 NetQ 代理会保留 NetQ 数据库中已收集的数据,但会阻止 NetQ 代理收集新数据,直到您重新启用它。

要禁用 NetQ 代理,请运行

cumulus@switch:~$ sudo netq config stop agent

要重新启用 NetQ 代理,请运行

cumulus@switch:~$ sudo netq config restart agent

配置 NetQ 代理以限制交换机 CPU 使用率

您可以限制 NetQ 代理仅使用交换机上 CPU 资源的特定百分比。此设置需要运行 Cumulus Linux 3.7、4.1 或更高版本的交换机。

有关此功能的更多详细信息,请参阅此知识库文章

此示例限制 NetQ 代理在 Cumulus Linux 交换机上消耗超过 40% 的 CPU 资源。

cumulus@switch:~$ sudo netq config add agent cpu-limit 40
cumulus@switch:~$ sudo netq config restart agent

要删除限制,请运行

cumulus@switch:~$ sudo netq config del agent cpu-limit
cumulus@switch:~$ sudo netq config restart agent

配置 NetQ 代理以从选定服务收集数据

您可以启用和禁用有关 FRRouting (FRR) 和刚刚发生的事情 (WJH) 的数据收集。

要配置代理启动或停止收集 FRR 数据,请运行

cumulus@chassis~:$ sudo netq config add agent frr-monitor
cumulus@switch:~$ sudo netq config restart agent

cumulus@chassis~:$ sudo netq config del agent frr-monitor
cumulus@switch:~$ sudo netq config restart agent

要配置代理启动或停止收集 WJH 数据,请运行

cumulus@chassis~:$ sudo netq config add agent wjh
cumulus@switch:~$ sudo netq config restart agent

cumulus@chassis~:$ sudo netq config del agent wjh
cumulus@switch:~$ sudo netq config restart agent

配置 NetQ 代理以将数据发送到服务器集群

如果您有高可用性服务器集群配置,则应配置 HA 服务器以在服务器之间分配 NetQ 代理收集的数据。

要配置代理将数据发送到集群中的服务器,请运行

sudo netq config add agent cluster-servers <text-opta-ip-list> [port <text-opta-port>] [vrf <text-vrf-name>]

您必须用逗号(而不是空格)分隔 IP 地址列表。您可以选择性地指定端口或 VRF。

此示例配置交换机上的 NetQ 代理以使用 rocket VRF 将数据发送到位于 10.0.0.21、10.0.0.22 和 10.0.0.23 的三台服务器。

cumulus@switch:~$ sudo netq config add agent cluster-servers 10.0.0.21,10.0.0.22,10.0.0.23 vrf rocket

要停止 NetQ 代理向服务器集群发送数据,请运行

cumulus@switch:~$ sudo netq config del agent cluster-servers

配置日志记录以排除 NetQ 代理故障

用于 NetQ 代理的日志记录级别确定了在交换机或主机上记录有关 NetQ 代理的哪些类型的事件。

首先,您需要决定要配置的日志记录级别。您可以将日志记录级别配置为对每个 NetQ 代理都相同,或者有选择地增加或减少有问题的节点上的 NetQ 代理的日志记录级别。

日志记录级别描述
调试发送所有调试、信息、警告和错误消息的通知。
信息发送信息、警告和错误消息的通知(默认)。
警告发送警告和错误消息的通知。
错误发送错误消息的通知。

您可以直接查看 NetQ 代理日志。消息具有以下结构

<时间戳> <节点> <服务>[PID]: <级别>: <消息>

元素描述
时间戳事件发生的日期和时间,UTC 格式
节点事件发生的网络节点的主机名
服务 [PID]生成事件的服务和进程标识符
级别为给定事件分配的日志记录级别:debug、error、info 或 warning
消息事件的文本描述,包括事件发生的节点

例如

logging message anatomy, including timestamp, node, service, level, and message

要配置日志记录级别,请按照以下步骤操作。此示例将日志记录级别设置为 debug

  1. 设置日志记录级别

    cumulus@switch:~$ sudo netq config add agent loglevel debug
    
  2. 重启 NetQ 代理

    cumulus@switch:~$ sudo netq config restart agent
    
  3. (可选)通过查看 `netq-agent.log` 消息来验证与 NetQ 设备或 VM 的连接。

禁用代理日志记录

如果您将日志记录级别设置为 debug 以进行故障排除,NVIDIA 建议您在完成故障排除后将日志记录级别更改为不太详细的模式或禁用代理日志记录。

要将日志记录级别从 debug 更改为另一个级别,请运行

cumulus@switch:~$ sudo netq config add agent loglevel [info|warning|error]
cumulus@switch:~$ sudo netq config restart agent

要禁用所有日志记录

cumulus@switch:~$ sudo netq config del agent loglevel
cumulus@switch:~$ sudo netq config restart agent

更改 NetQ 代理轮询数据和频率

NetQ 代理包含一组预配置的模块化命令,这些命令定期运行并将事件和资源数据发送到 NetQ 设备或 VM。您可以使用 NetQ CLI 微调代理可以轮询哪些事件以及轮询频率。

例如,如果您的网络未运行 EVPN,则可以禁用轮询 EVPN 事件的命令。或者,您可以将 LLDP 的轮询间隔从默认的 60 秒减少到 120 秒。通过不轮询选定的数据或降低轮询频率,您可以减少 NetQ 代理对交换机 CPU 的使用率。

根据交换机平台,NetQ 代理可能不会执行某些受支持的协议命令。例如,如果交换机没有 VXLAN 功能,则代理会跳过所有与 VXLAN 相关的命令。

支持的命令

要查看受支持的模块化命令列表,请运行

cumulus@switch:~$ sudo netq config show agent commands
Service Key               Period  Active       Command                                                        Timeout
-----------------------  --------  --------  --------------------------------------------------------------  ---------
bgp-neighbors                  60  yes       ['/usr/bin/vtysh', '-c', 'show ip bgp vrf all neighbors json']         30
evpn-vni                       60  yes       ['/usr/bin/vtysh', '-c', 'show bgp l2vpn evpn vni json']               30
lldp-json                     120  yes       /usr/sbin/lldpctl -f json                                              30
clagctl-json                   60  yes       /usr/bin/clagctl -j                                                    30
mstpctl-bridge-json            60  yes       /sbin/mstpctl showall json                                             30
ports                        3600  yes       Netq Predefined Command                                                30
proc-net-dev                   30  yes       Netq Predefined Command                                                30
dom                          1800  yes       Netq Predefined Command                                                30
roce                           60  yes       Netq Predefined Command                                                30
roce-config                   300  yes       Netq Predefined Command                                                30
nvue-roce-config              300  yes       Netq Predefined Command                                                30
ntp                            30  yes       Netq Predefined Command                                                45
agent_stats                   300  yes       Netq Predefined Command                                                30
agent_util_stats              300  yes       Netq Predefined Command                                                30
tcam-resource-json            300  yes       /usr/cumulus/bin/cl-resource-query -j                                  30
nvue-mon-json                 300  yes       Netq Predefined Command                                                30
cl-support-json              3600  yes       Netq Predefined Command                                                30
resource-util-json            300  yes       findmnt / -n -o FS-OPTIONS                                             30
smonctl-json                  120  yes       /usr/sbin/smonctl -j                                                   30
sensors-json                 1800  yes       sensors -u                                                             30
ssd-util-json               86400  yes       /usr/sbin/smartctl -a /dev/sda                                         30
ssd-util-nvme-json          86400  yes       /usr/sbin/smartctl -a /dev/nvme0                                       30
ecmp-hash-info                300  yes       cat /etc/cumulus/datapath/traffic.conf                                 30
ecmp-info                      60  yes       Netq Predefined Command                                                30
ptp-config-info                60  yes       cat /etc/ptp4l.conf                                                    30
ptp-clock-info                 60  yes       Netq Predefined Command                                                30
ptp-clock-status               60  yes       Netq Predefined Command                                                30
ptp-statistics                 60  yes       Netq Predefined Command                                                30
ptp-correction                 30  yes       Netq Predefined Command                                                30
log-exporter                   60  yes       Netq Predefined Command                                                30
adaptive-routing-config       300  yes       Netq Predefined Command                                                30
ber-info                       30  yes       Netq Predefined Command                                                30

修改轮询频率

您可以更改模块化命令的轮询频率(以秒为单位)。例如,要将 `ntp` 命令的轮询频率从默认的 30 秒更改为 60 秒,请运行

cumulus@switch:~$ sudo netq config add agent command service-key ntp poll-period 30
Successfully added/modified Command service misc command None

cumulus@switch:~$ sudo netq config show agent commands
Service Key               Period  Active       Command                                                        Timeout
-----------------------  --------  --------  --------------------------------------------------------------  ---------
bgp-neighbors                  60  yes       ['/usr/bin/vtysh', '-c', 'show ip bgp vrf all neighbors json']         30
evpn-vni                       60  yes       ['/usr/bin/vtysh', '-c', 'show bgp l2vpn evpn vni json']               30
lldp-json                     120  yes       /usr/sbin/lldpctl -f json                                              30
clagctl-json                   60  yes       /usr/bin/clagctl -j                                                    30
mstpctl-bridge-json            60  yes       /sbin/mstpctl showall json                                             30
ports                        3600  yes       Netq Predefined Command                                                30
proc-net-dev                   30  yes       Netq Predefined Command                                                30
dom                          1800  yes       Netq Predefined Command                                                30
roce                           60  yes       Netq Predefined Command                                                30
roce-config                   300  yes       Netq Predefined Command                                                30
nvue-roce-config              300  yes       Netq Predefined Command                                                30
ntp                            60  yes       Netq Predefined Command                                                45
agent_stats                   300  yes       Netq Predefined Command                                                30
agent_util_stats              300  yes       Netq Predefined Command                                                30
tcam-resource-json            300  yes       /usr/cumulus/bin/cl-resource-query -j                                  30
nvue-mon-json                 300  yes       Netq Predefined Command                                                30
cl-support-json              3600  yes       Netq Predefined Command                                                30
resource-util-json            300  yes       findmnt / -n -o FS-OPTIONS                                             30
smonctl-json                  120  yes       /usr/sbin/smonctl -j                                                   30
sensors-json                 1800  yes       sensors -u                                                             30
ssd-util-json               86400  yes       /usr/sbin/smartctl -a /dev/sda                                         30
ssd-util-nvme-json          86400  yes       /usr/sbin/smartctl -a /dev/nvme0                                       30
ecmp-hash-info                300  yes       cat /etc/cumulus/datapath/traffic.conf                                 30
ecmp-info                      60  yes       Netq Predefined Command                                                30
ptp-config-info                60  yes       cat /etc/ptp4l.conf                                                    30
ptp-clock-info                 60  yes       Netq Predefined Command                                                30
ptp-clock-status               60  yes       Netq Predefined Command                                                30
ptp-statistics                 60  yes       Netq Predefined Command                                                30
ptp-correction                 30  yes       Netq Predefined Command                                                30
log-exporter                   60  yes       Netq Predefined Command                                                30
adaptive-routing-config       300  yes       Netq Predefined Command                                                30
ber-info                       30  yes       Netq Predefined Command                                                30

禁用命令

您可以禁用不必要的命令。这有助于减少 NetQ 代理在交换机上消耗的计算资源。例如,如果您的网络未运行 EVPN,则可以禁用 EVPN 命令

cumulus@switch:~$ sudo netq config add agent command service-key evpn-vni enable False
Command Service evpn-vni is disabled

重置为默认值

要恢复为原始命令设置,请运行

cumulus@switch:~$ sudo netq config agent factory-reset commands
Netq Command factory reset successful