0x01 前言

我家里的服务器运行着许多虚拟机,之前想了解系统的状况,只能逐一通过SSH登录到系统里察看。登陆到系统里察看的信息是实时的,如果想了解半小时前,甚至一周前或者是一周内的数据却素手无策。

为此,我再开一台虚拟机,装上cacti,对服务器和虚拟机进行定时监控。我将在这里阐述我的net-snmp配置过程。

0x02 安装/运行

通过yum即可进行简单的安装:

yum install net-snmp net-snmp-utils -y

启动与设定开机启动:

#立即启动
systemctl start snmpd

#开机启动
systemctl enable snmpd

#检查启动状况
[root@test_1 ~]# ps -aux | grep snmpd
root      1167  0.4  0.2 222840 10416 ?        Ss   23:26   0:00 /usr/sbin/snmpd -LS0-6d -f

0x03 配置

首先需要配置防火墙,snmp默认端口事UDP 161端口,如果你需要使用snmp trap,那么还需要开放UDP 162端口。

snmp有三种安全模式,分别是:

  1. v1
  2. v2c
  3. v3

其中v1是不安全的,这里不作说明;v2c是基于共同体(community)的管理架构;v3是对数据进行鉴别和加密,提供较为安全的管理方式。

0x03.1 v2c

v2c的配置方法比较简单,只需要设置共同体(community)名称即可使用snmp协议访问snmp服务器。

#修改snmpd.conf
vim /etc/snmp/snmpd.conf

主要的默认配置信息是这样的:

# First, map the community name "public" into a "security name"

#       sec.name  source          community
com2sec notConfigUser  default       public

####
# Second, map the security name into a group name:

#       groupName      securityModel securityName
group   notConfigGroup v1           notConfigUser
group   notConfigGroup v2c           notConfigUser

####
# 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

####
# Finally, grant the group read-only access to the systemview view.

#       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup ""      any       noauth    exact  systemview none none

我们需要将其中的56、57行注释掉,增加:

#增加次行
view    all           included   .1

注释掉第65行,增加:

access  notConfigGroup ""      any       noauth    exact  all none none

完成后重启snmp程序:

#重启snmp
systemctl restart snmpd

在本地测试:

snmpwalk -v 1 localhost -c public

输入上面命令后,你会发现突然间弹出许多东西,看得眼花缭乱。与MIB和OID的信息我有空再写文章介绍介绍。至此snmp v2c的管理架构配置已经完成。下面是snmp v3的配置方法:

0x03.2 v3

在配置snmp v3前请讲snmp关闭,以便添加用户:

#关闭snmp服务
systemctl stop snmpd

首先是修改snmpd.conf:

#修改snmpd.conf
vim /etc/snmp/snmpd.conf

主要的默认配置信息是这样的:

# First, map the community name "public" into a "security name"

#       sec.name  source          community
com2sec notConfigUser  default       public

####
# Second, map the security name into a group name:

#       groupName      securityModel securityName
group   notConfigGroup v1           notConfigUser
group   notConfigGroup v2c           notConfigUser

####
# 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

####
# Finally, grant the group read-only access to the systemview view.

#       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup ""      any       noauth    exact  systemview none none

在42行下面添加一个只读的账号:

#增加只读账号
rocommunity proj default

建立上面的账号,这里要注意的是:密码最少8个字符。

#修改文件
vim /var/lib/net-snmp/snmpd.conf

#在空白处添加下面这行并保存退出
createUser proj MD5 12345678

完成后即可重新启动snmp服务:

#启动snmp服务
systemctl start snmpd

本地测试:

snmpwalk -v 3 -u proj -a MD5 -A 12345678 -l authNoPriv localhost

0x04 结语

在用过snmp后才发现,原来snmp也是一个很庞大的系统。我目前用它监控我的HP硬件温度、CPU使用率和电功率,还监控虚拟机的负载,包括centos7与windows系统。

我有空就将我所学到的snmp知识记录在这里。

cacti 1.0 的配置安装过程请点击这里