当下的 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,com2sec 相当于 community to security name。community相当于密码。 ####
# 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 localhost -c public system fast again. #定义可查看的snmp的范围。
# name incl/excl subtree mask(optional)
view systemview included .1.3.6.1.2.1.
view systemview included .1.3.6.1.2.1.25.1.
view all included .
####
# 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/ 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 . ## -or just the mib2 tree- #view mib2 included .iso.org.dod.internet.mgmt.mib- fc
#view mib2 included .iso.org.dod.internet.mgmt.mib- fc ## context sec.model sec.level prefix read write notif
#access MyROGroup “” any noauth all none none
#access MyRWGroup “” any noauth all all all

有以上这些配置其实已经能够基本满足大多数需求了,还算是比较简单的,配置 SNMP 可以参考以下步骤:

1. 首先定义一个共同体名称(community),这里是 public ,及可以访问这个 public 的用户名(sec name),这里是 notConfigUser 。public 相当于用户 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 .

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

# 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@chenyi Packages]# snmpwalk -v  192.168.1.220 -c public system
Timeout: No Response from 192.168.1.220
[root@chenyi Packages]# snmpwalk -v 192.168.1.220 -c public system
SNMPv2-MIB::sysDescr. = STRING: Linux chenyi 2.6.-.el6.i686 # SMP Fri Jun :: UTC i686
SNMPv2-MIB::sysObjectID. = OID: NET-SNMP-MIB::netSnmpAgentOIDs.
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: () ::07.97
SNMPv2-MIB::sysContact. = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName. = STRING: chenyi
.....................

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

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

Memory 脚本:

#!/bin/sh
/usr/bin/free -m | grep Mem |awk '{print $4}'
/usr/bin/free -m | grep Mem |awk '{print $2}'
[root@chenyi ~]# sh memory.sh

CPU 脚本:

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

Disk I/O 脚本:

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

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

exec .1.3.6.1.4.1.2021.53 memory /bin/sh /root/memory.sh
exec .1.3.6.1.4.1.2021.54 cpu /bin/sh /root/cpu.sh
exec .1.3.6.1.4.1.2021.55 disk /bin/sh /root/disk.sh
[root@chenyi ~]# service snmpd restart
停止 snmpd: [确定]
正在启动 snmpd: [确定]

这样在监控主机上运行:

[root@chenyi ~]# snmpwalk -v  192.168.1.220 -c public .1.3.6.1.4.1.2021.53
UCD-SNMP-MIB::ucdavis.53.1. = INTEGER:
UCD-SNMP-MIB::ucdavis.53.2. = STRING: "memory"
UCD-SNMP-MIB::ucdavis.53.3. = STRING: "/bin/sh /root/memory.sh"
UCD-SNMP-MIB::ucdavis.53.100. = INTEGER:
UCD-SNMP-MIB::ucdavis.53.101. = STRING: ""
UCD-SNMP-MIB::ucdavis.53.101. = STRING: ""
UCD-SNMP-MIB::ucdavis.53.102. = INTEGER:
其中UCD-SNMP-MIB::ucdavis.53.101.1 = STRING: "442"中的 442 就是 mem.sh 输出的第一个数据,1006 是 mem.sh 输出的第二个数据。

略作修改:(此处参照其他文章)

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

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

来个配置:

#定义一个使用 community 'myCommunity' 和源网络 172.17.1.0/ 的用户 'myUser'
com2sec myUser 172.17.1.0/ myCommunity #将 myUser 加到 'myGroup' 组,定义组权限
group myGroup v1 myUser
group myGroup v2c myUser view all included . access myGroup "" any noauth exact all all none

转自:http://www.linuxde.net/2013/02/12269.html

SNMP-配置文件详解的更多相关文章

  1. net-snmp配置文件详解

    net-snmp配置文件详解 net-snmp的配置文件是有一定的层次结构的,配置起来也很方便.网上找了很多资料,大概把这个配置文件的各个信息搞懂了一点.其实在net-snmp的EXAMPLE.con ...

  2. zabbix配置文件详解

    Zabbix之配置文件详解   zabbix配置文件种类: zabbix_server配置文件zabbix_server.conf zabbix_proxy配置文件zabbix_proxy.conf ...

  3. zabbix_server.conf、zabbix_agentd.conf配置文件详解

    zabbix_server.conf配置文件详解 AlertScriptsPath 默认值:/usr/local/share/zabbix/alertscripts 说明:告警脚本目录 AllowRo ...

  4. quartz配置文件详解

    quartz配置文件详解(转载)     quartz学习总结: 一.关于job:    用Quartz的行话讲,作业是一个执行任务的简单Java类.任务可以是任何Java代码.只需你实现org.qu ...

  5. WebConfig配置文件详解

    今天看到博客园一位朋友整理的一个WebConfig配置文件详解,觉得不错,转载一下: <?xml version="1.0"?> <!--注意: 除了手动编辑此文 ...

  6. tomcat配置文件详解

    Tomcat系列之服务器的安装与配置以及各组件详解   tomcat 配置文件详解

  7. ubuntu nginx 安装以及配置文件详解

    1.到nginx官网下载源码包.最好下载稳定版本,nginx官网http://www.nginx.org/ 2.安装nginx依赖包运行命令: sudo apt-get install libssl- ...

  8. Spring配置文件详解 – applicationContext.xml文件路径

    Spring配置文件详解 – applicationContext.xml文件路径 Java编程                 spring的配置文件applicationContext.xml的默 ...

  9. spring配置文件详解--真的蛮详细

    spring配置文件详解--真的蛮详细   转自: http://book.51cto.com/art/201004/193743.htm 此处详细的为我们讲解了spring2.5的实现原理,感觉非常 ...

  10. Rsyslog配置文件详解

    Rsyslog配置文件详解https://my.oschina.net/0757/blog/198329 # Save boot messages also to boot.log 启动的相关信息lo ...

随机推荐

  1. (十)Linux 网络编程之ioctl函数

    1.介绍 Linux网络程序与内核交互的方法是通过ioctl来实现的,ioctl与网络协议栈进行交互,可得到网络接口的信息,网卡设备的映射属性和配置网络接口.并且还能够查看,修改,删除ARP高速缓存的 ...

  2. mac下使用brew安装ffmpeg支持x265

    使用brew install ffmpeg 安装ffmpeg默认是没有支持x265的, 使用brew info ffmpeg 获取安装选项帮助, 使用brew reinstall ffmpeg --w ...

  3. php_match/preg_match_all 默认有字符串长度限制

    php_match/preg_match_all 默认有字符串长度限制:52500(或许你的服务器环境是更长,或者更短),当字符串长度大于52500,只能匹配到52500数据,超出的部分会被系统自己截 ...

  4. jq知识总结

    jQuery   jQuery基本选择器: id选择器     $("#div1") class选择器   $(".div1") 元素选择器   $(" ...

  5. (36)老版和新版API调用

    ---------更新时间18:06 2016-09-18 星期日------- *前言   我用的是odoo8,但里面有相当多的api是以前版本,这时若我们自己开发的   插件采用新版本api,里面 ...

  6. JS重要知识点

    这里列出了一些JS重要知识点(不全面,但自己感觉很重要).彻底理解并掌握这些知识点,对于每个想要深入学习JS的朋友应该都是必须的. 讲解还是以示例代码搭配注释的形式,这里做个小目录: JS代码预解析原 ...

  7. bootstrap系列学习(一)

    最近的一个项目中,正好使用到bootstrap布局前台页面,随便记录一下,个人遇到的一些问题. 一,jquery 版本 使用bootstrap3.0,刚开始没有 按照官网上教程,用了习惯的jquery ...

  8. iOS应用之间跳转

    本篇博文将涉及到以下知识点: app应用跳转的原理解析 如何实现两个app应用之间的跳转 如何实现两个app之间跳转到指定界面 二.应用跳转原理 相信从一个应用跳转到另一个应用大家并不陌生,最常见的莫 ...

  9. HTML“计算机输出”标签 <code><kbd><samp><tt><var><pre>

    我们并不反对使用它们,但是如果您只是为了达到某种视觉效果而使用这些标签的话,我们建议您使用样式表,那么做会达到更加丰富的效果. <code> 标签-定义计算机代码文本. 定义和用法: &l ...

  10. Python collections 模块用法举例

    Python作为一个“内置电池”的编程语言,标准库里面拥有非常多好用的模块.比如今天想给大家 介绍的 collections 就是一个非常好的例子. 1.collections模块基本介绍 我们都知道 ...