监控最佳实践
以下监控流程是审查 Cumulus Linux 环境潜在问题的最佳实践。
本文档介绍
- 您可以从 Cumulus Linux 轮询并在趋势分析中使用的指标
- 您可以监控以触发警报的关键日志消息
使用指标进行趋势分析
指标是可量化的度量,用于跟踪和评估特定基础设施组件的状态。指标示例包括接口上的字节数、CPU 利用率和路由总数。
当您将指标用于趋势分析时,指标更有价值。
使用触发的日志记录生成警报
Cumulus Linux 通常将触发的问题发送到 syslog
,但可以根据功能将问题发送到另一个日志文件。rsyslog
处理所有日志记录,包括本地和远程日志记录。当系统从稳定状态转换时,日志是用于生成警报的最佳方法。
将日志发送到集中式收集器,然后创建基于关键日志的警报是最佳解决方案。
日志格式
Cumulus Linux 中的大多数日志文件都使用标准呈现格式。例如
2017-03-08T06:26:43.569681+00:00 leaf01 sysmonitor: Critically high CPU use: 99%
- 2017-03-08T06:26:43.569681+00:00 是时间戳。
- leaf01 是主机名。
- sysmonitor 是消息的来源进程。
- CPU 使用率严重偏高:99% 是消息。
为了简洁明了,本节中的示例省略了时间戳和主机名。
硬件
NVUE 提供了用于监控各种交换机硬件元素的命令。
命令 | 描述 |
---|---|
nv show platform environment fan | 显示有关交换机上风扇的信息,例如最小、最大和当前速度、风扇状态以及风扇方向。 |
nv show platform environment led | 显示有关交换机上 LED 的信息,例如 LED 名称和颜色。 |
nv show platform environment psu | 显示有关交换机上 PSU 的信息,例如 PSU 名称和状态。 |
nv show platform environment temperature | 显示有关交换机上传感器(例如临界温度、最高温度、最低温度和当前温度)以及传感器的当前状态的信息。 |
nv show platform environment voltage | 显示交换机上的电压传感器列表。 |
nv show platform inventory | 显示交换机清单,其中包括风扇和 PSU 硬件版本、型号、序列号、状态和类型。有关特定风扇或 PSU 的信息,请运行 nv show platform inventory <inventory-name> 命令。 |
以下示例显示了 nv show platform environment fan
命令输出。所有风扇的气流方向必须相同。如果 Cumulus Linux 检测到风扇气流方向不一致,则会在 var/log/syslog
文件中记录一条消息。
cumulus@switch:~$ nv show platform environment fan
Name Fan State Current Speed (RPM) Max Speed Min Speed Fan Direction
-------- --------- ------------------- --------- --------- -------------
FAN1/1 ok 6000 29000 2500 F2B
FAN1/2 ok 6000 29000 2500 F2B
FAN2/1 ok 6000 29000 2500 F2B
FAN2/2 ok 6000 29000 2500 F2B
FAN3/1 ok 6000 29000 2500 F2B
FAN3/2 ok 6000 29000 2500 F2B
PSU1/FAN ok 6000 29000 2500 F2B
PSU2/FAN ok 6000 29000 2500 F2B
如果所有风扇的气流方向不一致(前到后或后到前),则交换机、机架甚至整个数据中心的散热效果都会欠佳。
smond
进程为各种交换机硬件元件提供监控。最小值或最大值取决于您应用于基本命令的标志。下表列出了硬件元件以及适用的命令和标志。
硬件元件 | 监控命令 | 间隔轮询 |
---|---|---|
温度 | smonctl -j smonctl -j -s TEMP[X] | 10 秒 |
风扇 | smonctl -j smonctl -j -s FAN[X] | 10 秒 |
PSU | smonctl -j smonctl -j -s PSU[X] | 10 秒 |
PSU 风扇 | smonctl -j smonctl -j -s PSU[X]Fan[X] | 10 秒 |
PSU 温度 | smonctl -j smonctl -j -s PSU[X]Temp[X] | 10 秒 |
电压 | smonctl -j smonctl -j -s Volt[X] | 10 秒 |
前面板 LED | ledmgrd -d ledmgrd -j | 5 秒 |
并非所有交换机型号都包含用于监控功耗和电压的传感器。有关详细信息,请参阅此注释。
硬件日志 | 日志位置 | 日志条目 |
---|---|---|
高温 | /var/log/syslog | /usr/sbin/smond : : Temp1(Board Sensor near CPU): state changed from UNKNOWN to OK |
风扇速度问题 | /var/log/syslog | /usr/sbin/smond : : Fan1(Fan Tray 1, Fan 1): state changed from UNKNOWN to OK |
风扇方向问题 | /var/log/syslog | /usr/sbin/smond : : Fan direction mismatch: 12 fans B2F; 1 fans F2B! |
PSU 故障 | /var/log/syslog | /usr/sbin/smond : : PSU1Fan1(PSU1 Fan): state changed from UNKNOWN to OK |
系统数据
Cumulus Linux 包括多种监控系统数据的方法。此外,您还可以在高风险情况下接收警报。
CPU 空闲时间
当 CPU 在五分钟内报告五次高 CPU 警报时,交换机将记录警报。
switchd
激增或路由协议启动期间可能会出现短暂的高 CPU 峰值。请勿为这些短暂的峰值设置警报。
系统元件 | 监控命令 | 间隔轮询 |
---|---|---|
CPU 利用率 | NVUE:nv show system cpu Linux: sudo cat /proc/stat top -b -n 1 | 30 秒 |
CPU 日志 | 日志位置 | 日志条目 |
---|---|---|
高 CPU | /var/log/syslog | sysmonitor: Critically high CPU use: 99% |
Cumulus Linux 使用 sysmonitor
监控 CPU、内存和磁盘空间。阈值的配置位于 /etc/cumulus/sysmonitor.conf
中。有关更多信息,请参阅 man sysmonitor
。
CPU 指标 | 阈值 |
---|---|
使用 | 警报:90% 严重:95% |
进程负载 | 警告:95% 严重:125% |
Spectrum 1 CPU 在中等到高网络规模下可能会过载。如果您的 Spectrum 1 交换机无法处理发往 CPU 的流量,或者持续在高 CPU 状态下运行,请降低部署 Spectrum 1 交换机的网络规模,或者用提供更强计算资源的新一代交换机替换该交换机。
磁盘使用情况
要监控磁盘利用率,例如文件系统的总存储容量、当前正在使用的空间量、可用空间量、文件系统总容量的当前使用百分比以及文件系统附加到系统的目录或挂载点,请运行 NVUE nv show system disk usage
命令或 Linux sudo df
命令。
cumulus@switch:~$ nv show system disk usage
Mount Point Filesystem Size Used Avail Use%
----------- ---------- ---- ---- ----- ----
/ /dev/vda5 5.4G 2.5G 2.7G 49%
/dev udev 847M 0 847M 0%
/dev/shm tmpfs 856M 31M 825M 4%
/run tmpfs 172M 1.4M 170M 1%
/run/lock tmpfs 5.0M 0 5.0M 0%
/tmp tmpfs 856M 8.0K 856M 1%
要以 json 格式显示磁盘使用情况,请运行 nv show system disk usage -o json
命令。
cumulus@switch:~$ nv show system disk usage -o json
{
"/": {
"available": "2.7G",
"file-system": "/dev/vda5",
"size": "5.4G",
"used": "2.5G",
"used-percent": "49%"
},
"/dev": {
"available": "847M",
"file-system": "udev",
"size": "847M",
"used": "0",
"used-percent": "0%"
},
"/dev/shm": {
"available": "825M",
"file-system": "tmpfs",
"size": "856M",
"used": "31M",
"used-percent": "4%"
},
"/run": {
"available": "170M",
"file-system": "tmpfs",
"size": "172M",
"used": "1.4M",
"used-percent": "1%"
},
"/run/lock": {
"available": "5.0M",
"file-system": "tmpfs",
"size": "5.0M",
"used": "0",
"used-percent": "0%"
},
"/tmp": {
"available": "856M",
"file-system": "tmpfs",
"size": "856M",
"used": "8.0K",
"used-percent": "1%"
}
}
要以 json yaml 格式显示磁盘使用情况,请运行 nv show system disk usage -o yaml
命令
cumulus@switch:~$ nv show system disk usage -o yaml
/:
available: 2.7G
file-system: /dev/vda5
size: 5.4G
used: 2.5G
used-percent: 49%
/dev:
available: 847M
file-system: udev
size: 847M
used: '0'
used-percent: 0%
/dev/shm:
available: 825M
file-system: tmpfs
size: 856M
used: 31M
used-percent: 4%
/run:
available: 170M
file-system: tmpfs
size: 172M
used: 1.4M
used-percent: 1%
/run/lock:
available: 5.0M
file-system: tmpfs
size: 5.0M
used: '0'
used-percent: 0%
/tmp:
available: 856M
file-system: tmpfs
size: 856M
used: 8.0K
used-percent: 1%
使用 Linux 命令监控磁盘利用率时,可以使用 sudo df -x tmpfs
排除 tmpfs
文件系统。
cumulus@switch:~$ sudo df -x tmpfs
Filesystem 1K-blocks Used Available Use% Mounted on
udev 867272 0 867272 0% /dev
/dev/vda5 5646348 2417272 2921624 46% /
/dev/vdb 354 354 0 100% /mnt/air
进程重启
在 Cumulus Linux 中,systemd
监控和重启进程。
要查看 systemd
监控的进程,请运行 systemctl status
命令。
cumulus@switch:~$ systemctl status
● leaf01
State: running
Units: 521 loaded (incl. loaded aliases)
Jobs: 0 queued
Failed: 0 units
Since: Wed 2024-11-13 19:16:28 UTC; 4 weeks 0 days ago
systemd: 252.30-1~deb12u2
CGroup: /
├─1001 bpfilter_umh
├─init.scope
│ └─1 /sbin/init
└─system.slice
├─acpid.service
│ └─850 /usr/sbin/acpid
├─auditd.service
│ └─373 /sbin/auditd
├─cl-system-services.service
│ └─1182 /usr/sbin/cl_system_services -l INFO
├─clagd.service
│ └─2550 /usr/bin/python3 -u /usr/sbin/clagd --daemon linklocal pe>
├─cron.service
│ └─869 /usr/sbin/cron -f -L 38
├─csmgrd.service
第 1 层协议和接口
链路和端口状态接口转换记录到 /var/log/syslog
和 /var/log/switchd.log
。
接口元件 | 监控命令 |
---|---|
链路状态 | NVUE:nv show interface <interface> Linux: sudo cat /sys/class/net/<interface>/operstate |
链路速度 | NVUE:nv show interface <inteface> Linux: sudo cat /sys/class/net/<interface>/speed |
端口状态 | NVUE:nv show interface Linux: ip link show |
Bond 状态 | NVUE:nv show interface <bond> Linux: sudo cat /proc/net/bonding/<bond> |
您可以从查询硬件或 Linux 内核获取接口计数器。Linux 内核聚合来自硬件的输出。
接口计数器元件 | 监控命令 | 间隔轮询 |
---|---|---|
接口计数器 | NVUE:nv show interface <interface> counters Linux: cat /sys/class/net/<interface>/statistics/<statistic-name> cl-netstat -j ethtool -S <interface> | 10 秒 |
第 1 层日志 | 日志位置 | 日志条目 |
---|---|---|
链路故障/链路抖动 | /var/log/switchd.log | switchd[5692]: nic.c:213 nic_set_carrier: swp17: setting kernel carrier: down |
单向链路 | /var/log/switchd.log | ptmd[7146]: ptm_bfd.c:2471 Created new session 0x1 with peer 10.255.255.11 port swp1 |
Bond 协商正常 | /var/log/syslog | kernel: [85412.763193] bonding: bond0 is being created… |
Bond 协商失败 | /var/log/syslog | kernel: [85412.763193] bonding: bond0 is being created… |
MLAG 对等链路协商正常 | /var/log/syslog | lldpd[998]: error while receiving frame on swp50: Network is down |
/var/log/clagd.log | clagd[14003]: Cleanup is executing. | |
MLAG 对等链路协商失败 | /var/log/syslog | lldpd[998]: error while receiving frame on swp50: Network is down |
/var/log/clagd.log | clagd[26916]: Cleanup is executing. | |
MLAG 端口协商正常 | /var/log/syslog | kernel: [77419.112195] bonding: server01 is being created… |
/var/log/clagd.log | clagd[14003]: server01 is now dual connected. | |
MLAG 端口协商失败 | /var/log/syslog | kernel: [79290.290999] bonding: server01 is being created… |
/var/log/clagd.log | clagd[14291]: Conflict (server01): matching clag-id (1) not configured on peer… | |
MLAG 端口协商抖动 | /var/log/syslog | mstpd: one_clag_cmd: setting (0) mac 00:00:00:00:00:00 <server01, None> |
/var/log/clagd.log | clagd[14291]: server01 is no longer dual connected |
PTM 使用 LLDP 信息与描述网络的 topology.dot
文件进行比较。它具有内置的警报功能。在交换机上使用 PTM 而不是定期轮询 LLDP 信息。您可以从 Cumulus Linux GitHub 存储库安装 PTM。
考虑通过 PTM 跟踪对等信息。有关更多信息,请参阅规范拓扑管理器文档。
邻居元件 | 监控命令 | 间隔轮询 |
---|---|---|
LLDP 邻居 | sudo lldpctl -f json | 300 秒 |
规范拓扑管理器 | ptmctl -j | 已触发 |
第 2 层协议
生成树是一种防止第 2 层基础设施中出现环路的协议。在稳定状态下,生成树协议会收敛。监控 STP 中的拓扑更改通知 (TCN),以识别何时到达新的 BPDU。
接口计数器元件 | 监控命令 | 间隔轮询 |
---|---|---|
STP TCN 转换 | NVUE:nv show bridge domain <bridge> stp Linux: mstpctl showbridge json mstpctl showport | 60 秒 |
MLAG 对等状态 | NVUE:nv show mlag Linux: clagctl status sudo clagd -j sudo cat /var/log/clagd.log | 60 秒 |
MLAG 对等 MAC | NVUE:nv show mlag Linux: clagctl dumppeermacs clagctl dumpourmacs | 300 秒 |
第 2 层日志 | 日志位置 | 日志条目 |
---|---|---|
生成树正常 | /var/log/syslog | kernel: [1653877.190724] device swp1 entered promiscuous mode |
生成树阻止 | /var/log/syslog | mstpd: MSTP_OUT_set_state: bridge:swp2:0 entering blocking state(Designated) |
第 3 层协议
当 FRR 首次启动时,每个激活的守护程序都有不同的日志文件。如果您编辑日志文件(例如,通过 vtysh 或 frr.conf
),则集成配置会将所有日志发送到同一文件。
要将 FRR 日志发送到 syslog,请在 vtysh 中应用配置 log syslog
。
BGP
监控 BGP 时,请检查 BGP 对等方是否正在运行。警报对等方的当前运行状态没有太大价值;监控转换更有价值,您可以通过监控 syslog
来完成。
监控路由表提供基础设施规模的趋势。当您与基于主机的解决方案(例如主机上的路由)集成时,这非常有用,此时路由会随可用应用程序的数量进行跟踪。
BGP 元件 | 监控命令 | 间隔轮询 |
---|---|---|
BGP 对等方故障 | sudo vtysh -c "show ip bgp summary json" | 60 秒 |
BGP 路由表 | sudo vtysh -c "show ip bgp json" | 600 秒 |
BGP 日志 | 日志位置 | 日志条目 |
---|---|---|
BGP 对等方关闭 | /var/log/syslog | bgpd[3000]: %NOTIFICATION: sent to neighbor swp1 4/0 (Hold Timer Expired) 0 bytes |
OSPF
监控 OSPF 时,请检查 OSPF 对等方是否正在运行。警报对等方的当前运行状态没有太大价值;监控转换更有价值,您可以通过监控 syslog
来完成。
监控路由表提供基础设施规模的趋势。当您与基于主机的解决方案(例如主机上的路由)集成时,这非常有用,此时路由会随可用应用程序的数量进行跟踪。
OSPF 元件 | 监控命令 | 间隔轮询 |
---|---|---|
OSPF 协议对等方故障 | sudo vtysh -c "show ip ospf neighbor all json" cl-ospf summary show json | 60 秒 |
OSPF 链路状态数据库 | sudo vtysh - c "show ip ospf database" | 600 秒 |
路由和主机条目
路由元件 | 监控命令 | 间隔轮询 |
---|---|---|
主机条目 | cl-resource-query cl-resource-query -k | 600 秒 |
路由条目 | cl-resource-query cl-resource-query -k | 600 秒 |
路由日志
第 3 层日志 | 日志位置 | 日志条目 |
---|---|---|
路由协议进程崩溃 | /var/log/syslog | frrouting[1824]: Starting FRRouting daemons (prio:10):. zebra. bgpd. |
日志记录
下表描述了各种日志文件。
日志记录元件 | 监控命令 | 日志位置 |
---|---|---|
syslog | 捕获所有日志文件。识别内存泄漏和 CPU 峰值。 | /var/log/syslog |
switchd 功能 | 硬件抽象层 (HAL)。 | /var/log/switchd.log |
路由守护程序 | FRR zebra 守护程序详细信息。 | /var/log/daemon.log |
路由协议 | 日志文件在 FRR 中是可配置的。当 FRR 首次启动时,它使用非集成配置,因此每个路由协议都有自己的日志文件。启动后,FRR 切换为使用集成配置,以便所有日志都转到一个位置。 要编辑日志文件的位置,请使用 log file rsyslog 将日志发送到 /var/log/syslog 中。注意:要将 syslog 调试消息写入日志文件,您必须运行 log syslog debug 命令,以将 FRR 配置为 syslog 严重性 7(调试);否则,当您发出调试命令(例如 debug bgp neighbor-events )时,不会将任何输出记录到 /var/log/frr/frr.log 。但是,当您使用 log file /var/log/frr/debug.log 命令手动定义日志目标时,FRR 会自动默认为严重性 7(调试)日志记录,并且输出会记录到 /var/log/frr/frr.log 。 | /var/log/frr/zebra.log |
设备管理
设备访问日志
访问日志 | 日志位置 | 日志条目 |
---|---|---|
用户身份验证和远程登录 | /var/log/syslog | sshd[31830]: Accepted publickey for cumulus from 192.168.0.254 port 45582 ssh2: RSA 38:e6:3b:cc:04:ac:41:5e:c9:e3:93:9d:cc:9e:48:25 |
设备超级用户命令日志
超级用户命令日志 | 日志位置 | 日志条目 |
---|---|---|
使用 sudo 执行命令 | /var/log/syslog | sudo: cumulus: TTY=unknown ; PWD=/home/cumulus ; USER=root ; COMMAND=/tmp/script_9938.sh -v |