SNMP配置命令

在交换机上执行以下命令以开启SNMP功能:

snmp-agent
snmp-agent community read xxxxx  # 配置设备的读/写团体名
snmp-agent sys-info version v2c v3  # 配置SNMP的协议版本为SNMPv2c和v3
snmp-agent protocol source-status all-interface  # 重点!开启SNMP使用所有端口接收和响应SNMP请求(新版本交换机必须开启)
snmp-agent trap enable  # 开启设备发送Trap报文的功能

构建 snmp.yml

参考:robotneo/networkdevice-monitor: 基于Prometheus + SNMP Exporter对网络设备的监控 (GitHub)

# 拉取snmp_exporter
git clone https://github.com/prometheus/snmp_exporter.git
# 进入目录snmp_exporter
cd snmp_exporter/
# 构建snmp_exporter二进制可执行文件
go build
# 进入生成器目录构建二进制可执行文件
cd snmp_exporter/generator/
# 国内网络下载MIB公共库报错,忽略即可
make generator mibs

# 在mibs文件夹中放入对应品牌的无线设备MIB库文件
# 把对应的generator.yml文件放入 ../snmp_exporter/generator/ 目录下
export MIBDIRS=/root/snmp_exporter/generator/mibs
./generator --fail-on-parse-errors generate

mv snmp.yml ../

手动修改snmp.yml认证配置

配置 snmp_exporter

参考:prometheus/snmp_exporter: SNMP Exporter for Prometheus (GitHub)

创建一个 systemd 服务单元文件,例如 /etc/systemd/system/snmp_exporter.service

[Unit]
Description=SNMP Exporter
After=network-online.target

[Service]
Restart=on-failure
ExecStart=/home/prometheus/snmp_exporter/snmp_exporter --config.file=/home/prometheus/snmp_exporter/snmp.yml

[Install]
WantedBy=multi-user.target

配置 Prometheus

在 Prometheus 的配置文件 prometheus.yml 中添加以下内容:

#### switch ####
  - job_name: 'switch'
    scrape_interval: 30s
    static_configs:
      - targets:
        - 192.168.99.1
        - 192.168.99.2
    metrics_path: /snmp
    params:
      module: [hw_interface, hw_common]
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 'exporter:9116'  # SNMP exporter.

Grafana面板

您可以使用以下Grafana面板来监控SNMP数据: