最近公司需要在监控一下各项目地的服务器运行状况,查找资料发现监控宝可以直接通过SNMP服务实现,于是打算测试一下在RedHat Linux系统中安装和配置snmp服务

检查系统是否安装snmp服务

1
2
3
4
5
6
7
8
# rpm -qa|grep snmp
net-snmp-5.3.2.2-17.el5
net-snmp-perl-5.3.2.2-17.el5
net-snmp-devel-5.3.2.2-17.el5
net-snmp-libs-5.3.2.2-17.el5
net-snmp-utils-5.3.2.2-17.el5
net-snmp-libs-5.3.2.2-17.el5
net-snmp-devel-5.3.2.2-17.el5

SNMP服务安装后会有以上安装包

安装SNMP服务

1.配置好本地yum服务,使用yum安装

1
yum install -y net-snmp*

2.配置SNMP服务开机启动

1
2
#chkconfig snmpd on
#chkconfig --list | grep snmpd

查看开机启动设置是否成功 snmpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

验证SNMP服务

1.使用snmpwalk获取主机名

1
2
3
4
# snmpwalk -v 2c -c public localhost sysName.0
SNMPv2-MIB::sysName.0 = STRING: wh69
snmpwalk用法
snmpwalk -v 1|2c|3(代表SNMP版本) -c <community string> IP地址 OID(对象标示符)

2.使用snmptranslate命令,检查snmp工具是否可以使用

1
2
3
4
5
6
7
8
9
10
11
# snmptranslate -To | head
.1.3
.1.3.6
.1.3.6.1
.1.3.6.1.1
.1.3.6.1.2
.1.3.6.1.2.1
.1.3.6.1.2.1.1
.1.3.6.1.2.1.1.1
.1.3.6.1.2.1.1.2
.1.3.6.1.2.1.1.3

查出了部分oid,则表示snmp工具可以正常使用

配置SNMP服务

1.配置SNMP连接字符串 community string

1
#vi /etc/snmp/snmpd.conf

修改下面字段

1
2
# sec.name source community
com2sec notConfigUser default public

修改public为自己定义的community string,这里修改为jiankongbao

2.修改查看设备节点权限

在配置文件/etc/snmp/snmpd.conf中找到如下位置

1
2
3
4
5
6
7
8
####
# Third, create a view for us to let the group have rights to:
# Make at least snmpwalk -v 1 localhost -c public system fast again.
# name incl/excl subtree mask(optional)
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1

view:定义了可以查看哪些节点设备的信息。 snmp默认配置只能查看.1.3.6.1.2.1.1和.1.3.6.1.2.1.25.1.1节点下的设备信息, 而主机CPU和内存等设备都不在这些节点下,所以无法获取这些数据。 因此,可以修改这个配置,如下:

1
2
3
4
5
6
7
8
9
####
# Third, create a view for us to let the group have rights to:
# Make at least snmpwalk -v 1 localhost -c public system fast again.
# name incl/excl subtree mask(optional)
view systemview included .1
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1

在此处添加了一行:

1
view systemview included .1

表示可以查看.1节点下的所有设备信息。

3.添加jiankongbao用户,并进行测试

执行创建jiankongbao用户,密码为jiankongbao,创建时必须关闭snmpd服务,以及SElinux

1
2
3
#service snmpd stop
#net-snmp-config --create-snmpv3-user -ro -a jiankongbao -x DES -X jiankongbao jiankongbao

添加好后,会显示add用户成功

配置防火墙,开放snmp端口,默认161,这里配置是将监控宝的3个IP设为可访问,方便后续加入监控平台

1
2
3
#iptables -A INPUT -i eth0 -p udp -s 124.202.149.13 --dport 161 -j ACCEPT
#iptables -A INPUT -i eth0 -p udp -s 124.202.149.17 --dport 161 -j ACCEPT
#iptables -A INPUT -i eth0 -p udp -s 60.195.252.107 --dport 161 -j ACCEPT
1
#service iptables restart

启动snmpd服务,在本地进行测试

1
#servcei snmpd start

此处使用协议3进行测试

1
#snmpwalk -v 3 -u jiankongbao -a MD5 -A "jiankongbao" -l authNoPriv 127.0.0.1 sysDescr
snmpwalk

出现如图所示即本地测试成功,若服务器161端口已开放到外网,即可在监控宝平台添加监控,否则需要使用内网采集器。

参考资料: Zabbix 之SNMP配置 http://www.linuxidc.com/Linux/2013-09/90263.htm

SNMP实现网络状态监控 http://www.linuxidc.com/Linux/2013-04/83187.htm

CentOS 6.3下搭建SNMP测试环境 http://www.linuxidc.com/Linux/2013-02/79233.htm

Linux (Ubuntu/CentOS) SNMP配置 http://www.linuxidc.com/Linux/2012-12/76837.htm

开启并配置Citrix Xenserver的SNMP服务 http://www.linuxidc.com/Linux/2013-01/78487.htm