SNMP (简单网络管理协议,Simple Network Management Protocol) 是用于监控路由器、计算机、服务器甚至 UPS 电源等连接了网络的设备的运行状态的协议。通过 SNMP,我们可以了解到设备的 CPU 占用率、系统负载、内存占用、磁盘占用、网络流量等信息。

在被监控设备上配置 SNMP 服务

一、安装

Arch Linux

# 安装 SNMP 服务
sudo pacman -S net-snmp --noconfirm

CentOS / Fedora

# 安装 SNMP 服务
sudo yum install net-snmp -y

Ubuntu / Debian

# 安装 SNMP 服务
sudo apt-get install snmpd -y

使用 opkg 等进行包管理的路由器

# 更新软件包信息
opkg update
# 安装 SNMP 服务
opkg install snmpd

二、配置

配置 SNMP 需要根据实际需求和提供信息采集服务的前端进行配置,免费可用的信息采集服务可见后文配置 SNMP 数据采集前端,在不同的系统上具体需要配置的文件如下所示:

Arch Linux

首先创建 /etc/snmp/ 目录:

mkdir /etc/snmp

随后编辑 /etc/snmp/snmpd.conf 文件,根据所选用采集服务的配置来填写配置。

CentOS / Fedora

编辑 /etc/snmp/snmpd.conf 文件,根据所选用采集服务的配置来填写配置,文件内原有配置可保留或删除。

Ubuntu

编辑 /etc/snmp/snmpd.conf 文件,根据所选用采集服务的配置来填写配置,文件内原有配置需删除,或将 agendAddress udp:127.0.0.1:161 改为 agentAddress udp:0.0.0.0:161,其中的 0.0.0.0 也可换为实际采集信息的服务器的地址。

使用 opkg 等进行包管理的路由器

根据路由器实际情况,编辑 /opt/etc/snmp/snmpd.conf/etc/snmp/snmpd.conf 文件,根据所选用采集服务的配置来填写配置。

三、启动

在按照采集服务前端的要求,配置好 snmpd.conf 文件后,可以启动服务,或重启服务加载新配置,并配置服务开机自启。

使用 service 的系统

# 重启 SNMP 服务
sudo service snmpd restart

# 设置 SNMP 服务开机自启
# Red Hat / CentOS
sudo chkconfig snmpd on
# Ubuntu
sudo update-rc.d snmpd enable

使用 systemd 的系统

# 重启 SNMP 服务
sudo systemctl restart snmpd
# 设置 SNMP 服务开机自启
sudo systemctl enable snmpd

使用 opkg 等进行包管理的路由器

/opt/etc/init.d/*snmpd restart
# 或
/etc/init.d/*snmpd restart

配置 SNMP 数据采集前端

在服务器等设备上安装完成 SNMP 服务之后,我们还需要配置一个 SNMP 数据收集的前端。目前有许多服务商提供基于 SNMP 协议的服务器信息采集监控服务,可以根据服务商的配置指南来进行配置。

微林 vDog

此处以微林提供的 vDog 免费 Linux 监控服务为例介绍配置 SNMP 数据采集前端的方法。

使用微林的 vDog 信息收集服务,需要在被监控服务器上的 snmpd.conf 中加入如下配置,配置方法见前文配置一节。

# publictogo 为密匙 (community),可以修改。
com2sec vnet 0.0.0.0 publictogo
group vnetGroup v2c vnet
access vnetGroup "" any noauth prefix all none none
view all included .1 80

配置完被监控服务器后,进入微林 vDog 服务页面,在该页面上会列出已经创建好的项目列表,要创建一个新项目的话,点击『创建项目』按钮。

微林 vDog 项目列表

随后填入:

  • 名称:(可选)项目名称;
  • 主机:被监控服务器的 IP 地址(目前不支持填写域名);
  • 访问密匙:在配置文件中配置的密匙,微林提供的配置中密匙默认为 publictogo

微林 vDog 创建项目

项目成功创建后的几分钟后,可以点击『查看』按钮来查看采集到的数据。

如果出现错误,则需要确认服务器 IP 是否填写正确,填写的密匙是否与配置文件中的设定相一致,防火墙是否有阻挡 SNMP 的流量等,防火墙的设定可以参考后文注意事项

在微林 vDog 中可以查看到的信息如下所示:

微林 vDog 查看项目

注意事项

  • SNMP 协议使用 UDP 161 端口进行通信,需要在防火墙中允许相应流量通过。 如使用 iptables,可以运行如下命令来允许 SNMP 流量通过:

    iptables -A INPUT -p udp -m udp --dport 161 -j ACCEPT