SNMP 网络监控配置教程
SNMP(Simple Network Management Protocol,简单网络管理协议)是网络监控领域最基础、最重要的协议。几乎所有网络设备(路由器、交换机、服务器、打印机等)都支持 SNMP,通过它可以远程读取设备的运行状态、性能指标和配置信息。掌握 SNMP 配置是搭建 LibreNMS、Observium 等网络监控系统的前提。
一、SNMP 协议版本
- SNMPv1:最早版本,使用明文社区字符串认证,安全性低,已不推荐使用。
- SNMPv2c:改进了性能和功能,但仍使用明文社区字符串,目前最广泛使用。
- SNMPv3:增加了用户认证和数据加密功能,安全性最高,推荐在生产环境使用。
二、在 Linux 服务器上配置 SNMP
2.1 安装 SNMP 守护进程
apt update
apt install snmpd snmp libsnmp-dev -y
2.2 配置 SNMPv2c
# 备份默认配置
cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
# 编辑配置文件
cat > /etc/snmp/snmpd.conf << 'EOF'
# 监听地址(0.0.0.0 表示所有接口)
agentAddress udp:161
# SNMPv2c 社区字符串(相当于密码,请修改为复杂字符串)
rocommunity mySecretCommunity default
# 系统信息
sysLocation "Los Angeles, US"
sysContact admin@example.com
sysName my-vps-server
# 允许查看所有 OID 树
view all included .1
EOF
systemctl restart snmpd
systemctl enable snmpd
2.3 配置 SNMPv3
# 停止 snmpd 以创建用户
systemctl stop snmpd
# 创建 SNMPv3 用户(认证 + 加密)
net-snmp-create-v3-user -ro -A authPass123 -a SHA -X privPass456 -x AES monitoruser
# 启动服务
systemctl start snmpd
三、常用 SNMP 查询命令
# SNMPv2c 查询系统描述
snmpget -v2c -c mySecretCommunity localhost sysDescr.0
# SNMPv3 查询
snmpget -v3 -u monitoruser -l authPriv -a SHA -A authPass123 -x AES -X privPass456 localhost sysDescr.0
# 遍历 OID 树
snmpwalk -v2c -c mySecretCommunity localhost .1.3.6.1.2.1.1
# 查询接口信息
snmpwalk -v2c -c mySecretCommunity localhost ifDescr
snmpwalk -v2c -c mySecretCommunity localhost ifInOctets
snmpwalk -v2c -c mySecretCommunity localhost ifOutOctets
# 查询 CPU 负载
snmpwalk -v2c -c mySecretCommunity localhost .1.3.6.1.4.1.2021.10
# 查询内存使用
snmpwalk -v2c -c mySecretCommunity localhost .1.3.6.1.4.1.2021.4
# 查询磁盘使用
snmpwalk -v2c -c mySecretCommunity localhost .1.3.6.1.4.1.2021.9
四、常用 OID 参考
.1.3.6.1.2.1.1.1.0- sysDescr(系统描述).1.3.6.1.2.1.1.3.0- sysUpTime(运行时间).1.3.6.1.2.1.1.5.0- sysName(主机名).1.3.6.1.2.1.2.2.1.2- ifDescr(接口描述).1.3.6.1.2.1.2.2.1.10- ifInOctets(入站流量).1.3.6.1.2.1.2.2.1.16- ifOutOctets(出站流量).1.3.6.1.4.1.2021.10.1.3.1- 1 分钟 CPU 负载.1.3.6.1.4.1.2021.4.5.0- 总内存.1.3.6.1.4.1.2021.4.11.0- 可用内存
五、扩展 SNMP 监控
# 使用 extend 指令添加自定义监控
cat >> /etc/snmp/snmpd.conf << 'EOF'
# 自定义脚本监控
extend connections /bin/sh -c "ss -s | grep 'TCP:' | awk '{print \$2}'"
extend diskusage /bin/sh -c "df -h / | tail -1 | awk '{print \$5}'"
EOF
systemctl restart snmpd
# 查询自定义监控数据
snmpwalk -v2c -c mySecretCommunity localhost NET-SNMP-EXTEND-MIB::nsExtendOutputFull
六、防火墙配置
# 只允许监控服务器访问 SNMP
ufw allow from 10.0.0.100 to any port 161 proto udp
# 或使用 iptables
iptables -A INPUT -p udp --dport 161 -s 10.0.0.100 -j ACCEPT
iptables -A INPUT -p udp --dport 161 -j DROP
七、SNMP Trap 配置
# 配置 Trap 接收端
apt install snmptrapd -y
cat > /etc/snmp/snmptrapd.conf << 'EOF'
authCommunity log,execute mySecretCommunity
traphandle default /usr/bin/traptoemail -s smtp.example.com admin@example.com
EOF
systemctl start snmptrapd
总结
SNMP 是网络监控的基石,正确配置 SNMP 是使用 LibreNMS、Observium 等监控系统的前提条件。在生产环境中强烈建议使用 SNMPv3 以确保安全性。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的优惠,通过 bwh81.net 进入官网购买。