使用 SNMP 监控服务器运行状态
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 服务页面,在该页面上会列出已经创建好的项目列表,要创建一个新项目的话,点击『创建项目』按钮。
随后填入:
- 名称:(可选)项目名称;
- 主机:被监控服务器的 IP 地址(目前不支持填写域名);
- 访问密匙:在配置文件中配置的密匙,微林提供的配置中密匙默认为 publictogo
项目成功创建后的几分钟后,可以点击『查看』按钮来查看采集到的数据。
如果出现错误,则需要确认服务器 IP 是否填写正确,填写的密匙是否与配置文件中的设定相一致,防火墙是否有阻挡 SNMP 的流量等,防火墙的设定可以参考后文注意事项。
在微林 vDog 中可以查看到的信息如下所示:
注意事项
-
SNMP 协议使用 UDP 161 端口进行通信,需要在防火墙中允许相应流量通过。 如使用 iptables,可以运行如下命令来允许 SNMP 流量通过:
iptables -A INPUT -p udp -m udp --dport 161 -j ACCEPT