Table of Contents
概述
本文將介紹如何在 Arista 交換機上使用 Docker 容器運行 node_exporter 和 snmp_exporter,以實現透過 Prometheus 監控交換機狀態的功能。
系統架構
此監控方案包含以下主要組件:
- node_exporter: 收集主機層級的指標數據
- snmp_exporter: 通過 SNMP 協議收集網路設備數據
- Prometheus: 作為時序數據庫儲存和查詢監控數據
容器管理設定
基礎容器設定
container-manager
container-profile default
networking mode host
Node Exporter 設定
container node-exporter
image prom/node-exporter
no shutdown
profile default
command --collector.disable-defaults --collector.cpu --collector.hwmon --collector.meminfo --collector.vmstat --collector.stat
persist storage
mount src file:/ dst /host
這個設定:
- 使用官方的 node_exporter 映像
- 啟用特定的收集器用於監控 CPU、硬體、記憶體等指標
- 掛載主機檔案系統以收集系統數據
SNMP Exporter 設定
container snmp-exporter
image prom/snmp-exporter:latest
no shutdown
profile default
SNMP exporter 被設計為集中式的監控代理,可以同時監控數千台設備。
網路存取控制配置
在 Arista 的標準 control plane ACL 基礎上,我們需要額外開放 node_exporter 和 snmp_exporter 所需的端口。完整的 ACL 設定如下:
ip access-list default-with-exporter
counters per-entry
10 permit icmp any any
20 permit ip any any tracked
30 permit udp any any eq bfd ttl eq 255
40 permit udp any any eq bfd-echo ttl eq 254
50 permit udp any any eq multihop-bfd micro-bfd sbfd
60 permit udp any eq sbfd any eq sbfd-initiator
70 permit ospf any any
80 permit tcp any any eq ssh telnet www snmp bgp https msdp ldp netconf-ssh gnmi
90 permit udp any any eq bootps bootpc ntp snmp ptp-event ptp-general rip ldp
100 permit tcp any any eq mlag ttl eq 255
110 permit udp any any eq mlag ttl eq 255
120 permit vrrp any any
130 permit ahp any any
140 permit pim any any
150 permit igmp any any
160 permit tcp any any range 5900 5910
170 permit tcp any any range 50000 50100
180 permit udp any any range 51000 51100
190 permit tcp any any eq 3333
200 permit tcp any any eq nat ttl eq 255
210 permit tcp any eq bgp any
220 permit rsvp any any
230 permit tcp any any eq 9340
240 permit tcp any any eq 9559
250 permit udp any any eq 8503
260 permit udp any any eq lsp-ping
270 permit udp any eq lsp-ping any
280 permit tcp any any eq 9116
290 permit tcp any any eq 9100
這個 ACL 設定包含:
- Arista 交換機的標準 control plane 存取控制規則
- 額外允許 Prometheus exporters 所需的端口:
- 9100: node_exporter 的預設端口
- 9116: snmp_exporter 的預設端口
將 ACL 套用到 control plane:
system control-plane
ip access-group default-with-exporter in
SNMP 配置
snmp-server community public ro
設定唯讀的 SNMP community string 以允許數據收集。
驗證部署
部署完成後,我們可以使用
命令來驗證 exporters 是否正常運行:curl
測試 node_exporter
# 測試 node_exporter 是否正常運行
curl -s localhost:9100/metrics | head -n 5
預期輸出類似如下:
# HELP node_cpu_seconds_total Seconds the CPUs spent in each mode.
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="0",mode="idle"} 8953.12
node_cpu_seconds_total{cpu="0",mode="system"} 245.45
node_cpu_seconds_total{cpu="0",mode="user"} 189.76
測試 snmp_exporter
# 測試 snmp_exporter 是否正常運行
curl -s localhost:9116/metrics | head -n 5
預期輸出類似如下:
# HELP snmp_exporter_build_info A metric with a constant '1' value labeled by version
# TYPE snmp_exporter_build_info gauge
snmp_exporter_build_info{version="0.20.0"} 1
如果能夠看到類似上述的輸出,表示 exporters 已經正常運行並準備好接收 Prometheus 的數據抓取請求。
總結
透過這些設定,我們可以:
- 在 Arista 交換機上原生運行監控組件
- 收集完整的系統和網路性能指標
- 與現有的 Prometheus 監控系統整合
這種解決方案特別適合大規模的網路設備監控場景,可以集中管理和監控多個網路設備。部署完成後,只需要在 Prometheus 服務器上設定對應的 target,即可開始收集監控數據。
Reference
- Tools 11. Running Prometheus Exporters on Dis-aggregated Data …
- Tools 12. Using Prometheus with SNMP Exporter to Monitor Cisco …
- GitHub – prometheus/node_exporter: Exporter for machine metrics
- prometheus/snmp_exporter: SNMP Exporter for Prometheus – GitHub
- Snmp_exporter/README.md at main · prometheus/snmp_exporter…