snmpd.conf配置,iptables开放161端口

在iptables中开放snmpd需要的默认端口:

iptables的设置

#iptables -A INPUT -p udp --dport 161 -j ACCEPT
#iptables -A OUTPUT -p udp --sport 161 -j ACCEPT  //做为服务端,允许来自自己客服端的数据包.   
#iptables -A INPUT -p udp --sport 161 -j ACCEPT
#iptables -A OUTPUT -p udp --dport 161 -j ACCEPT   //做为客服端,接受来自服务端的数据包.
#iptables -A INPUT -p icmp -j ACCEPT
#iptables -A OUTPUT -p icmp -j ACCEPT    //打开ICMP注意在cacti中Ping Method的类型为"ICMP Ping"不然设备那点始终"Down"的。

 

==============================================

http://www.1398.net/blog/user1/badboy/archives/2008/888.html

snmpd.conf基本配置分析(个人收集分析)
 
 

下面的配置文件可以直接copy,供snmpd.conf使用

========================================================

# First, map the community name (COMMUNITY) into a security name
# (local and mynetwork, depending on where the request is coming
# from):

#       sec.name  source          community
com2sec notConfigUser  default  public     


####
# Second, map the security names into group names:

#               sec.model  sec.name
group   notConfigGroup v1           notConfigUser  

group   notConfigGroup   v2c           notConfigUser

####
# Third, create a view for us to let the groups have rights to:

#           incl/excl subtree                          mask
view all    included  .1                               80

####
# Finally, grant the 2 groups access to the 1 view with different
# write permissions:

#                context sec.model sec.level match  read   write  notif
access notConfigGroup ""      any       noauth    exact  all    none   none

 

=====================

其实配制一个snmpd.conf文件不算太难, 
1)首选是定义一个共同体名(community),这里是public,及可以访问这个public的用户名(sec name),这里是notConfigUserPublic相当于用户notConfigUser的密码:) 
#       sec.name  source          community 
com2sec notConfigUser  default       public 
2)定义一个组名(groupName)这里是notConfigGroup,及组的安全级别,把notConfigGroup这个用户加到这个组中。  
            groupName      securityModel securityName 
group   notConfigGroup   v1           notConfigUser   
group   notConfigGroup   v2c           notConfigUser 
 
3)定义一个可操作的范围(view)名, 这里是all,范围是 .1 
    #       name           incl/excl     subtree         mask(optional)
       view  all             included     .1                   80
  
4)定义notConfigUser这个组在all这个view范围内可做的操作,这时定义了notConfigUser组的成员可对.1这个范围做只读操作。 
     #       group          context sec.model sec.level prefix read   write  notif 
access  notConfigGroup ""      any       noauth    exact  all  none none 

ok,
这样我们的snmpd.conf文件就基本配成了,用service  snmpd  restart重启snmpd服务。现在我们做一个测试,在监控机上打下面的命令: 
  [root@wy2 root]# snmpwalk -v1 192.168.13.103 -c public system 
SNMPv2-MIB::sysDescr.0 = STRING: Linux wy1 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686 
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 
SNMPv2-MIB::sysUpTime.0 = Timeticks: (7565377) 21:00:53.77 
SNMPv2-MIB::sysContact.0 = STRING: Root <root@wuying.com> (configure /etc/snmp/snmp.local.conf) 
SNMPv2-MIB::sysName.0 = STRING: wy1 
SNMPv2-MIB::sysLocation.0 = STRING: wy1.wuying.com (edit /etc/snmp/snmpd.conf) 
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (10) 0:00:00.10 
`````````````````````` 
“Linux wy1 2.4.20-8smp”
操作系统的信息已经出来了:)

或者snmpwalk -v2c -c public ip if

像if  system   mem.....都可以用mibII浏览工具(名字:netsnopt)查看........来进行获取.....

 

 http://magustest.com/blog/linux/setup-snmpd-conf/

162009

 

SNMP(Simple Network Management Protocol,简单网络管理协议)的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。在RHEL中,SNMP的配置文件地址是/etc/snmp/snmpd.conf。snmpd.conf的配置项很多,但是真正常用的就那么几个,下面来逐个介绍。

com2sec命令,它的基本语法是“com2sec NAME SOURCE COMMUNITY”。这里要提一下SNMP的安全策略,其实SNMP的安全性并不好,在这个协议中使用COMMUNITY这个东西来做访问控制的。简单来理解就是现在有一个帮会的一个人找去了总舵,那么这个人怎么跟总舵相认呢?他们直接约定一个“暗号”,例如见面就说“床前明月光”,那么总舵的前台就会带你去“床前明月光”想对应的地方。现在回过头来看这行配置,假如有以下一句话

com2sec  magusu default  magus

意思就是做一个映射,把magus这个COMMUNITY串和magusu这个名字做好一对映射,那么以后在调用SNMP的时候,只要你声明你就是magus,那么就可以获得相应的权限了。有了映射以后下面需要做的是建立一个从magusu到组的一个映射,用到的命令是group,它的基本语法是“group NAME MODEL SECURITY”

group  magusg v2c  magusu

上面这句话的意思就是把magusu放到组magusg里面,用的协议是v2c,插一句,SNMP现在通常用的有3个版本。那好了,组建好了下来要做什么呢?就是要建立一个VIEW,VIEW的基本语法是“view NAME TYPE SUBTREE [MASK]”

view  magusv  included  .1.3.6.1.4.1.9129

像上面这句话的意思就是赋予magusv这个view能够查看1.3.6.1.4.1.9129下面所有节点的权限。最后要做的是设定哪些组的人,哪些view的用户可以做什么具体的事情,用access来设置,基本语法是“access NAME CONTEXT MODEL LEVEL PREFX READ WRITE NOTIFY”。

access   magusg   “”   any   noauth   exact   magusv   magusv   none

由于例子中用的是v2c版本的协议,所以CONTEXT必须为空,MODEL也就是协议的版本号,在这里例子里面可以是any也可以是v2c,还是由于v2c的缘故,所以LEVEL是noauth;READ、WRITE和NOTIFY分别需要指定一个view或者什么都不指定;在这里的设置就是magusv这个view可以对前面设置好的节点进行读和写操作。

到此,服务端的配置已经完成,重启一下snmpd就可以了,下面看看如何通过SNMP得到我们想要的数据

snmpwalk -v 2c -c magus localhost 1.3.6.1.4.1.9129.1.2.2

snmpwalk可以便利指定节点下的所有子节点,-v 参数指定SNMP的协议版本,这个跟我们之前配置服务器的版本是要一致的,也就是2c,然后-c参数就指定了community的字符串,也就是刚才定义的magus,然后就是主机地址,由于我在本机测试,所以用的localhost,实际中可以填上IP,最后就是OID的值。搞定!

对于刚刚接触SNMP的朋友来说,理解community的作用是关键,其实说的通俗点就是接头暗号,而且还是个明文的“暗号”。

No related posts.

 --------------------------------------------------------------------------------------------------------------------

http://hi.baidu.com/%C4%FE%BE%B2%B5%C4%B7%B1%BB%AA/blog/item/478ec7014c37a6cc09fa935d.html

snmpd 配置 snmpd.conf
2012年04月07日 星期六 15:06

snmpd.conf 配置:

---------------------------------------------------------------------------------------------------------------------------

#com2sec  Name           Source     Community

com2sec    ComUser      default     zimakaimeng

#group      Name            Model     CommunityName

group        ComGroup    v2c           ComName

#view        Name            TYPE        SUBTREE [ MASK]

view          SystemVIew   included    .1.3.6.1.4.1.9129

#access   GroupName    Context     Model   Level  Prefix   ReadView  WriteView  NotifyView

access     ComGroup      ""              noauth   any    exact    SystemView SystemView  none

------------------------------------------------------------------------------------------------------------------------------

com2sec : 定义一个暗号(Community)通过这个暗号的客户端被标记上名称ComUser

group:       定义一个组(Name)   指定使用的协议和使用的暗号的名称。访问控制是按照group进行的

view :        定义一个视图(ViewName)指定可以看到的OID

access:    定义访问控制,允许哪些组访问哪些视图,以及读、写等权限。

-------------------------------------------------------------------------------------------------------------------------------

snmp 客户端连接的时候,使用暗号和指定协议来进行访问

snmpwalk -v 2c -c zimakaimeng  localhost   .1.3.6.1.4.1.9129

 -------------------------------------------------------------------------------------------------------------------------------

OID 添加信息:

proc java

proc httpd

proc nginx

将会在prEntry 下面添加 java httpd nginx 的信息:

#snmpwalk -c public -v 2c   localhost   UCD-SNMP-MIB::prEntry

 

UCD-SNMP-MIB::prIndex.1 = INTEGER: 1

UCD-SNMP-MIB::prIndex.2 = INTEGER: 2

UCD-SNMP-MIB::prNames.1 = STRING: httpd

UCD-SNMP-MIB::prNames.2 = STRING: java

 

 

 

 

 

 

disk  /           /dev/sda1
disk /boot    /dev/sda2
将会在dskEntry 下面添加 上面的分区挂载信息:
 
#snmpwalk -c public -v 2c localhost  UCD-SNMP-MIB:dskEntry

UCD-SNMP-MIB::dskPath.1 = STRING: /

 

UCD-SNMP-MIB::dskPath.2 = STRING: /boot

 

 

UCD-SNMP-MIB::dskDevice.1 = STRING: /dev/sda1

UCD-SNMP-MIB::dskDevice.2 = STRING: /dev/sda2

 

exec 执行脚本来 在访问时候 插入信息:

exec .1.3.6.1.4.1.2021.60 cpu /bin/sh /etc/snmp/get_cpu.sh

当客户来访问.1.3.6.1.4.1.2021.60的时候,执行脚本,在 .1.3.6.1.4.1.2021.60 下插入节点cpu 和 脚本执行的结果

# snmpwalk -c public -v 2c localhost .1.3.6.1.4.1.2021.60

UCD-SNMP-MIB::ucdavis.60.1.1 = INTEGER: 1

UCD-SNMP-MIB::ucdavis.60.2.1 = STRING: "cpu"

UCD-SNMP-MIB::ucdavis.60.3.1 = STRING: "/bin/sh /etc/snmp/get_cpu.sh"

UCD-SNMP-MIB::ucdavis.60.100.1 = INTEGER: 0

UCD-SNMP-MIB::ucdavis.60.101.1 = STRING: "1751809494"

UCD-SNMP-MIB::ucdavis.60.101.2 = STRING: "1752726"

UCD-SNMP-MIB::ucdavis.60.101.3 = STRING: "2837068072"

UCD-SNMP-MIB::ucdavis.60.101.4 = STRING: "28825135102"

UCD-SNMP-MIB::ucdavis.60.101.5 = STRING: "42676611"

UCD-SNMP-MIB::ucdavis.60.101.6 = STRING: "9216184"

UCD-SNMP-MIB::ucdavis.60.101.7 = STRING: "60193767"

UCD-SNMP-MIB::ucdavis.60.102.1 = INTEGER: 0

UCD-SNMP-MIB::ucdavis.60.103.1 = ""

 

 

-------------------------------------------------------------------------------------------------------------------------------

 snmptranslate : 进行OID 数字格式和字符串表示格式的转换,还能打印oid树

# snmptranslate .1.3.6.1.4.1.2021.60 -Osf

.iso.org.dod.internet.private.enterprises.ucdavis.60

# snmptranslate  UCD-SNMP-MIB::prTable  -Tp

+--prTable(2)

   |

   +--prEntry(1)

      |  Index: prIndex

      |

      +-- -R-- Integer32 prIndex(1)

      |        Range: 0..65535

      +-- -R-- String    prNames(2)

      |        Textual Convention: DisplayString

      |        Size: 0..255

      +-- -R-- Integer32 prMin(3)

      +-- -R-- Integer32 prMax(4)

      +-- -R-- Integer32 prCount(5)

      +-- -R-- Integer32 prErrorFlag(100)

      +-- -R-- String    prErrMessage(101)

      |        Textual Convention: DisplayString

      |        Size: 0..255

      +-- -RW- Integer32 prErrFix(102)

      +-- -R-- String    prErrFixCmd(103)

               Textual Convention: DisplayString

               Size: 0..255

 

==============================================

http://www.inanu.net/post/457.html

snmpd.conf 基础配置

 

当下的 SNMP 服务器通常用来被诸如 Nagios、Cacti、Zabbix 等监控软件收集数据,SNMP 的很多高级特性用的不是特别频繁。因而只需对 SNMP 进行一些简单、基础的配置以满足各种监控软件的需求。

通常 SNMP 服务的配置文件位于 /etc/snmp/snmpd.conf,先来看一下这个文件:

####
# First, map the community name “public” into a “security name”

# sec.name source community
com2sec notConfigUser default public #定义community名称为 public,映射到安全名 notConfigUser。

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

# groupName securityModel securityName
group notConfigGroup v1 notConfigUser #定义安全用户名notConfigUser映射到notConfigGroup组。
group notConfigGroup v2c notConfigUser

####
# Third, create a view for us to let the group have rights to: #定义一个view,来决定notConfigUser可以操作的范围。

# Make at least snmpwalk -v 1 localhost -c public system fast again. #定义可查看的snmp的范围。
# 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 all included .1
####
# Finally, grant the group read-only access to the systemview view. #给notConfigGroup组所定义view名 all 以只读权限。

# group context sec.model sec.level prefix read write notif
access notConfigGroup “” any noauth exact all none none
#access notConfigGroup “” any noauth exact mib2 none none

# —————————————————————————–

# Here is a commented out example configuration that allows less
# restrictive access.

# YOU SHOULD CHANGE THE “COMMUNITY” TOKEN BELOW TO A NEW KEYWORD ONLY
# KNOWN AT YOUR SITE. YOU *MUST* CHANGE THE NETWORK TOKEN BELOW TO
# SOMETHING REFLECTING YOUR LOCAL NETWORK ADDRESS SPACE.

## sec.name source community
#com2sec local localhost COMMUNITY
#com2sec mynetwork NETWORK/24 COMMUNITY

## group.name sec.model sec.name
#group MyRWGroup any local
#group MyROGroup any mynetwork
#
#group MyRWGroup any otherv3user
#…

## incl/excl subtree mask
#view all included .1 80

## -or just the mib2 tree-

#view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
#view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc

## context sec.model sec.level prefix read write notif
#access MyROGroup “” any noauth 0 all none none
#access MyRWGroup “” any noauth 0 all all all

有以上这些配置其实已经能够基本满足大多数需求了,还算是比较简单的,配置 SNMP 可以参考以下步骤:
1. 首先定义一个共同体名称(community),这里是 public ,及可以访问这个 public 的用户名(sec name),这里是 notConfigUser 。public 相当于用户 notConfigUser 的密码。

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

2. 定义一个组名(groupName)这里是 notConfigGroup,及组的安全级别,把 notConfigGroup 这个用户加到这个组中。

1
2
3
#  groupName         securityModel    securityName 
group   notConfigGroup   v1           notConfigUser   
group   notConfigGroup   v2c          notConfigUser

3. 定义一个可操作的视图(view)名, 这里是 all,范围是 .1。

1
2
# name           incl/excl     subtree         mask(optional) 
  view  all      included        .1

4. 定义 notConfigUser 这个组在 all 这个视图范围内可做的操作,这时定义了 notConfigUser 组的成员可对 .1 这个视图做只读操作。

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

这样对 snmpd.conf 文件就基本完成了,用 service snmpd restart 重启 snmpd 服务。

之后,我们需要一个测试,验证 SNMP 配置的正确性。在监控主机中执行以下命令:

[root@centos root]# snmpwalk -v 1 10.0.0.248 -c public system

SNMPv2-MIB::sysDescr.0 = STRING: Linux wy1 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
SNMPv2-MIB::sysUpTime.0 = Timeticks: (7565377) 21:00:53.77
SNMPv2-MIB::sysContact.0 = STRING: Root <root@wuying.com>(configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: wy1
SNMPv2-MIB::sysLocation.0 = STRING: wy1.wuying.com (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (10) 0:00:00.10
“““““““““““

上述信息说明 SNMP 已经正常工作了。

现在我们在目标主机上来写一些脚本来获取 Memory、CPU、DiskIO 等状态。
Memory 脚本:

1
2
3
#!/bin/sh 
/usr/bin/free -m | grep Mem |awk '{print $4}' 
/usr/bin/free -m | grep Mem |awk '{print $2}'

[root@centos root]# sh mem.sh
442
1006

CPU 脚本:

1
2
3
4
5
#!/bin/sh
idle=`sar  -u 1 3 | grep Average | awk '{print $6}'` 
used=`echo "101 - $idle" | bc -l -s` 
echo $used 
echo $idle

Disk I/O 脚本:

1
2
3
4
5
#!/bin/sh
used1=`sar -d 1 3 | tail -1 | awk '{print $4}'` 
used2=`echo "$used1 / 2" | bc -l` 
echo $used2 
echo $used2

现在我们已经能得到这数据了,怎么才能让监控主机通过 snmpd 得到这些数据呢?可以在目标主机的 /etc/snmp/snmpd.conf 文件中加入这些配置:

1
2
3
exec .1.3.6.1.4.1.2021.53 mfree /bin/sh /root/mfree.sh 
exec .1.3.6.1.4.1.2021.54 cpustat /bin/sh /root/cpustat.sh 
exec .1.3.6.1.4.1.2021.55 iostat /bin/sh /root/iostat.sh

service snmpd restart 重启目标主机上的 snmpd 服务。

这样在监控主机上运行:

[root@centos root]# snmpwalk -v 1 10.0.0.248 -c public .1.3.6.1.4.1.2021.53

UCD-SNMP-MIB::ucdavis.53.1.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.53.2.1 = STRING: "mfree"
UCD-SNMP-MIB::ucdavis.53.3.1 = STRING: "/bin/sh /root/mfree.sh"
UCD-SNMP-MIB::ucdavis.53.100.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.53.101.1 = STRING: "442"
UCD-SNMP-MIB::ucdavis.53.101.2 = STRING: "1006"
UCD-SNMP-MIB::ucdavis.53.102.1 = INTEGER: 0

其中 UCD-SNMP-MIB::ucdavis.53.101.1 = STRING: "442" 中的 442 就是 mem.sh 输出的第一个数据,1006 是 mem.sh 输出的第二个数据。

再做一下加工:

[root@centos root]# snmpwalk -v 1  10.0.0.248 -c public .1.3.6.1.4.1.2021.53 | grep 53.101 | awk -F\" '{print $2}'

443
1006

我们已经通过 snmpd 从监控主机上得到了目标主机上内存使用状态的两个参数,其它脚本也是一样的:

[root@centos root]# snmpwalk -v 1  10.0.0.248 -c public .1.3.6.1.4.1.2021.54 | grep 54.101 | awk -F\" '{print $2}' 

1.17
99.83

[root@centos root]# snmpwalk -v 1  10.0.0.248 -c public .1.3.6.1.4.1.2021.55 | grep 55.101 | awk -F\" '{print $2}' 

43.00000000000000000000
43.00000000000000000000

 
posted @ 2012-06-19 16:05  陳聽溪  阅读(1368)  评论(0编辑  收藏  举报