linux安装snmp
‘壹’ 如何安装snmp在linux上
1) 安装SNMP
略,请参阅LINUX系统SNMP安装说明,一般情况下Linux中 的均已经自动安装了SNMP服务。以下命令可以检测SNMP服务是否安装以及安装的文件包。
[root@idc ~]# rpm -qa |grep snmp
net-snmp-libs-5.1.2-11.EL4.7
net-snmp-5.1.2-11.EL4.7
2) 配置SNMP
按照如下方式修改/etc/snmp/snmpd.conf文件
A、修改默认的community string(SUM中SNMP读值密码)
com2sec notConfigUser default public
将public修改为你才知道的字符串
将“default”改为你想哪台机器可以看到你 的snmp信息,比如SUM所在IP为:10.10.10.10, 就改成这个IP。不改表示所有机器充许。
B、把下面的#号去掉
#view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
启用全部功能可以使用如下一行(如果没有可以加入一行):
view all included .1 80
C、把下面的语句
access notConfigGroup "" any noauth exact systemview none none
改成:
access notConfigGroup "" any noauth exact mib2 none none
或是:
access notConfigGroup "" any noauth exact all none none
3) 启动与停止SNMP
一般使用:service snmpd start|stop|restart命令。或是:
#/etc/rc.d/init.d/snmpd restart
4) 防火墙
如果Linux启动了防火墙,请开放UDP的161端 口。确保Linux的iptables防火墙对SUM监控服务器开放 了udp 161端口的访问权限
可使用iptables ?L ?n 查看当前iptables规则
可编辑/etc/sysconfig/iptables文 件来修改iptables规则。
‘贰’ linux下安装snmp的依赖包有哪些
Linux有很多版本。我使用的Linux Mint 17 (Ubuntu衍生版)上,直接就可以安装snmp,依赖关系直接已经满足。
不过既然你问到,我也帮你查出来了:
libc6(>=2.14)
libsnmp30(>=5.7.2~dfsg)
libssl1.0.0(>=1.0.0)
libsnmp-base
‘叁’ linux怎么安装配置snmp协议
一、安装
snmp
服务
1
、检查系统是否已经安装
snmp
的
rpm
包
以下是安装
snmp
服务需要的
rpm
包:
libsensors3-2.10.6-55.el5.i386.rpm
lm_sensors-2.10.6-55.el5.i386.rpm
net-snmp-libs-5.3.2.2-5.el5.i386.rpm
net-snmp-5.3.2.2-5.el5.i386.rpm
net-snmp-utils-5.3.2.2-5.el5.i386.rpm
推荐到
http://rpm.pbone.net/
下载这些
rpm
包,该网站比较全面,包含各种版本的包。
使用命令:
$rpm-qa|grepsnmp
检查是否安装
net-snmp-utils-5.3.2.2-5.el5
,
net-snmp-libs-5.3.2.2-5.el5
,
net-snmp-5.3.2.2-5.el5
三个
rpm
包
使用命令:
$rpm-qa|greplibsen
检查是否安装
libsensors3-2.10.6-55.el5
使用命令:
$rpm-qa|greplm
检查是否安装
lm_sensors-2.10.6-55.el5
说明:
(
1
)这几个包的安装有一定顺序,在安装的时候,会有提示。比如安装
net-snmp-5.3.2.2-5.el5.i386.rpm
时,会提示必须先安装
net-snmp-libs-5.3.2.2-5.el5.i386.rpm
。
(
2
)
net-snmp-utils-5.3.2.2-5.el5.i386.rpm
并不是必须安装的包,但安装它会带来不少帮助,
它提供了很多工具,
例如可以使用
snmptranslate
命令查看
oid
,
可以使用
snmpget
、
snmpwalk
命令等。
(
3
)
net-snmp-libs-5.3.2.2-5.el5.i386.rpm
、
net-snmp-5.3.2.2-5.el5.i386.rpm
、
net-snmp-utils-5.3.2.2-5.el5.i386.rpm
这三个包有一定的版本要求,必须版本一致,否则安装
无法成功。我这里都使用的
5.3.2.2-5.el5
版本,也可以下载其他版本的
rpm
包,但注意版本
要一致,在安装的时候也会提示,哪个版本的包是必须的,你可以根据提示下载需要的包。
2
、安装以上的几个
rpm
包
若系统中没有安装以上包,则先安装。
使用命令:
rpm–ivh
包名
安装完后,使用命令:
$rpm-qa|grepsnmp
,检查是否已经安装成功。
3
、启动
snmp
服务
若安装成功,则可使用命令:
$servicesnmpdstart
提示:
Starting
snmpd:
[OK]
,则启动
snmp
服务成功。
你可以将
snmp
服务设置为开机自启动,这样免去手动启动的麻烦。
使用命令:
$chkconfigsnmpdon
,将
snmpd
服务设为开机自启动。
然后使用命令:
$chkconfig--list|grepsnmpd
,查看是否已经设置成功。
4
、验证
snmp
服务
(
1
)使用
snmpwalk
命令,查看本机
localhost
的主机名:
如上,可以看到通过远端主机获取到的主机名,与在本机获取到的主机名是一致的。
二、配置
snmp
服务
以上安装完成后,使用的是
snmp
的默认配置,通过这些默认配置,我们只能获取主机的部
分信息。但一些其他的重要信息,无法获取。如主机的
CPU
使用情况,内存使用情况等。
如上,无法获取
CPU
的空闲率(注:
1.3.6.1.4.1.2021.11.11.0
是主机
CPU
空闲率的
oid
)
。
这时候,若要获取主机的一些重要信息,则要修改
snmp
的默认配置。
配置方法:修改
/etc/snmp/snmpd.conf
文件
1
、修改查看设备节点的权限
在该文件中,找到如下位置:
view
:定义了可以查看哪些节点设备的信息。
snmp
默认配置只能查看
.1.3.6.1.2.1.1
和
.1.3.6.1.2.1.25.1.1
节点下的设备信息,
而主机
CPU
和
内存等设备都不在这些节点下,所以无法获取这些数据。
因此,可以修改这个配置,如下:
在此处添加了一行:
viewsystemviewincluded.1
表示可以查看
.1
节点下的所有设备信息。
‘肆’ Linux下简单配置安装cactisnmp再次安装怎么解决
以前确认过机器上安装了snmp,但是这是redhat自带的,据说里面是没有snmpwalk,snmpget这些命令的,所以我这里要重新
编译安装NET-SNMP
官方网站
http://www.net-snmp.org/
下载文件
wget http://nchc.dl.sourceforge.net/project/net-snmp/net-snmp/5.5/net-snmp-5.5.tar.gz
解开压缩包
tar zxvf net-snmp-5.5.tar.gz
配置
./configure --prefix=/usr/local/net-snmp --enable-developer
中间有提示,一路回车下去
make
报错如下:
grep: /usr/lib/libbeecrypt.la: No such file or directory
/bin/sed: can't read /usr/lib/libbeecrypt.la: No such file or directory
libtool: link: `/usr/lib/libbeecrypt.la' is not a valid libtool archive
make[1]: *** [libnetsnmpmibs.la] 错误 1
make[1]: Leaving directory `/var/tmp/net-snmp-5.5/agent'
make: *** [subdirs] 错误 1
解决办法:
安装beecrypt
wget http://nchc.dl.sourceforge.net/sourceforge/beecrypt/beecrypt-4.1.2.tar.gz
tar zxvf beecrypt-4.1.2.tar.gz
./configure --prefix=/usr
make
make install
重新make,又报错了,报错如下:
/usr/bin/ld: cannot find -lelf
collect2: ld returned 1 exit status
make[1]: *** [libnetsnmpmibs.la] 错误 1
make[1]: Leaving directory `/var/tmp/net-snmp-5.5/agent'
make: *** [subdirs] 错误 1
解决办法:
ln -s libelf.so.1 /usr/lib/libelf.so
继续make,成功了:)
make install
安装成功。
链接过去
ln -s /usr/local/net-snmp/bin/* /usr/local/bin/
cp EXAMPLE.conf /usr/local/net-snmp/share/snmp/snmpd.conf
/usr/local/net-snmp/sbin/snmpd //启动SNMP服务
vi /etc/rc.d/rc.local
//在rc.local上加入一行/usr/local/net-snmp/sbin/snmpd,系统启动时启动SNMP服务
现在再回头看看cacti的错误
错误:/usr/local/bin/snmpwalk
错误:/usr/local/bin/snmpget
错误:/usr/local/bin/snmpbulkwalk
错误:/usr/local/bin/snmpgetnext
再次点开,这次就没有以上的错误啦。点Finish
输入用户名和密码admin/admin
登陆后点击graph图标,图没有出来。继续查找下原因,快要成功了:)
查看后台日志cacti里面的log/cacti.log,日志如下:
POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting
点击控制面板console----->Data Sources
选择列表中的一个Localhost-Load Average
点击右上角的Turn Off Data Source Debug Mode
下面会出现对应的命令Data Source Debug
/usr/local/bin/rrdtool create \
/usr/local/apache2/htdocs/cacti/rra/localhost_load_1min_5.rrd \
--step 300 \
DS:load_1min:GAUGE:600:0:500 \
DS:load_5min:GAUGE:600:0:500 \
DS:load_15min:GAUGE:600:0:500 \
RRA:AVERAGE:0.5:1:600 \
RRA:AVERAGE:0.5:6:700 \
RRA:AVERAGE:0.5:24:775 \
RRA:AVERAGE:0.5:288:797 \
RRA:MAX:0.5:1:600 \
RRA:MAX:0.5:6:700 \
RRA:MAX:0.5:24:775 \
RRA:MAX:0.5:288:797 \
su cacti,执行该命令,报错如下:
ERROR: creating '/usr/local/apache2/htdocs/cacti/rra/localhost_load_1min_5.rrd': 权限不够
晕,前面不是赋予了权限了嘛,难道搞错了。再赋予一次。
chown -R cacti rra
chown -R cacti log
执行命令,OK了,检查一下目录rra,哈哈,已经有一个文件了。去看看图看。图有了,但是是否有正确的每5分钟采集一次
就要等等,等好几个5分钟再来看看了。等了一会儿,还是没有数据,唉,好事多磨啊,有图像了,又没有数据。。。。
检查snmp
snmpwalk -c public -v 2c 10.206.19.59 if 有很多信息返回
检查数据
rrdtool fetch localhost_mem_swap_4.rrd AVERAGE,返回的都是
1261452300: nan
1261452600: nan
文件更新信息
rrdtool lastupdate localhost_mem_swap_4.rrd --template,返回数据
users
1261535656: U
文件信息
rrdtool info localhost_users_6.rrd,返回信息:
filename = "localhost_users_6.rrd"
rrd_version = "0003"
step = 300
last_update = 1261535656
ds[users].type = "GAUGE"
ds[users].minimal_heartbeat = 600
ds[users].min = 0.0000000000e+00
ds[users].max = 5.0000000000e+02
ds[users].last_ds = "U"
ds[users].value = 0.0000000000e+00
网上搜索资料,可能是SNMP没有配置好
vi /usr/local/net-snmp/share/snmp/snmpd.conf
cp /etc/snmp/snmpd.conf /usr/local/net-snmp/share/snmp/snmpd.conf
重启snmp
/usr/local/net-snmp/sbin/snmpd
修改定时任务
[root@dev1 snmp]# crontab -e -u cacti
*/5 * * * * /usr/local/bin/php -q /usr/local/apache2/htdocs/cacti/poller.php > /var/log/poller.log 2>&1
检查定时任务是否启动了
/etc/init.d/crond status
一切正常
检查log/cacti.log日志
12/23/2009 01:14:16 PM - POLLER: Poller[0] WARNING: Cron is out of sync with the Poller Interval! The Poller Interval is '300' seconds, with a maximum of a '300' second Cron, but 4754 seconds have passed since the last poll!
12/23/2009 01:20:01 PM - POLLER: Poller[0] WARNING: Cron is out of sync with the Poller Interval! The Poller Interval is '300' seconds, with a maximum of a '300' second Cron, but 345 seconds have passed since the last poll!
12/23/2009 01:25:00 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
12/23/2009 01:25:00 PM - SYSTEM STATS: Time:298.7072 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:0
12/23/2009 01:30:00 PM - POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
手工执行了几次
php cacti/cmd.php
php cacti/poller.php
PHP Deprecated错误的解决
vi /usr/local/lib/php.ini
加入:
php_flag allow_call_time_pass_reference On
php_value error_reporting "E_ALL & ~E_NOTICE & ~E_DEPRECATED"
终于有数据了,发现好像是执行了php cacti/cmd.php,但是最后还是有些问题
‘伍’ 如何在各系统平台配置SNMP
在Windows XP/2000 系统中配置 SNMP 代理
关于如何在Windows系统上安装SNMP代理,可参见在Windows系统中安装SNMP代理。
在Windows XP/2000 系统中配置 SNMP 代理的具体步骤如下:
点击开始,指向设置,然后点击控制面板。双击管理工具,然后双击计算机管理。
在控制台树中,点击服务和应用程序,然后点击服务。
下滚明细表窗格,并点击 SNMP service。
点击操作菜单上的属性。
如果您想在身份验证失败的时候有陷阱信息发出,那么请在安全分页中选择发送身份验证陷阱。
在接收的团体名称下点击添加。
在团体权利下,为主机选择一个许可的级别以处理从被选团体接收的请求。
在社区名称中输入名称(区分大小写),然后点击添加。
指定是否从主机接收SNMP 数据包:
要想从网络上的任何主机接收SNMP 请求,且无论其身份,请点击接收来自任何主机 SNMP 数据包。
要想限制接收 SNMP 数据包,请点击接收来自这些主机的 SNMP 数据包,点击添加,输入适当的主机名、IP或IPX 地址, 然后再次点击添加。
点击应用。
页首
配置SNMP陷阱的步骤如下:
点击开始,指向设置,然后点击控制面板。双击管理工具,然后双击计算机管理。
在控制台树中,点击服务和应用程序,然后点击服务。
下滚明细表窗格,并点击 SNMP service。
点击操作菜单上的属性。
打开陷阱分页窗格,在社区名称下输入计算机将把陷阱发至的社区名称(区分大小写),然后点击添加到列表。
在陷阱目标中点击添加。
在主机名,IP或 IPX地址中输入主机的相关信息并点击添加。
重复第5步到第7步,直到添加完您要添加的所有团体和陷阱目标。
点击确定。
在 Windows NT 系统配置SNMP 代理
关于如何在WindowsNT系统上安装SNMP代理,可参见在Windows系统中安装SNMP代理。
在 Windows NT 系统中配置SNMP 代理的步骤如下:
右击桌面上的网上邻居图标。
点击属性。
点击服务。
点击 SNMP 服务,然后点击属性。
点击安全分页按钮。
要想为错误的验证发送陷阱,请选择发送验证陷阱复选框。
在接收的团体名称下点击添加。
在团体名称框中,输入共同体名称(从该团体接收请求)。
点击添加,将该名称移入接收的团体名称列表中。
重复第 9 步添加任何团体名称。
点击以下选项之一,指定是从任何主机接收 SNMP 数据包,还是仅从指定的主机接收SNMP 数据包:
如果不依据源计算机 ID 来拒绝 SNMP 数据包,可选择接收来自任何主机的 SNMP 数据包。
如果仅从列出的计算机接收SNMP 数据包,请选择仅接收来自这些主机的SNMP 数据包。 要想指定特定的主机,请点击添加,在IP 主机或IPX 地址框中输入主机的名称和地址(从该主机接收请求),然后点击添加,将该名称移入仅接收来自这些主机的SNMP 数据包列表。
重复第 11 步添加任何主机。
在代理分页中指定适当的信息(如有关用户位置和服务的注释)。
点击确定。
配置 SNMP 陷阱的步骤如下:
右击桌面上的网上邻居图标。
点击属性。
点击服务。
点击 SNMP 服务,然后点击属性。
点击陷阱分页按钮。
在团体名称框中输入名称,以识别您想要该计算机将陷阱发送到的每个团体。团体名称是区分大小写的。
输入每个名称后,点击添加,将这些名称添加到列表。
添加了团体之后,在其仍是高亮时,点击陷阱目标下的添加,为陷阱要发送到的每个团体指定主机。
在IP主机/地址或IPX地址框中输入主机名,然后点击添加,为所选团体将名称和地址移入陷阱目标列表。
重复第10步,添加任何主机。
点击确定。
在 Linux 8.0以前的版本配置代理
关于如何在Linux系统上安装SNMP代理,可参见 在Linux系统中安装SNMP代理。
如果代理已运行,请使用以下命令将其停止:
/etc/rc.d/init.d/snmpd stop
在/etc/rc.d/init.d/snmpd 文件中做以下修改:
将
daemon /usr/sbin/snmpd $OPTIONS
改为
daemon /root/ucd_agent/sbin/snmpd $OPTIONS
将
killproc /usr/sbin/snmpd
改为
killproc /root/ucd_agent/sbin/snmpd
这是用于在启动和停止SNMP 代理时选择当前安装的版本。
使用命令 /etc/rc.d/init.d/snmpd start来启动代理。
在 Linux 8.0版本及8.0 以上版本配置代理
在Linux 8.0版本及8.0 以上版本,可以使用 SNMP 的最新版本,只需在 snmpd.conf 文件中做以下修改:
在
# name incl/excl subtree mask(optional)
行后插入
view allview included .1.3.6
将
# group context sec.modelsec.level prefix read write notif
以后的行
lineaccess notConfigGroup “” any noauth exact systemview none none
改为
access notConfigGroup “” any noauth exact allview none none
然后使用以下命令重启 snmp 代理:
/etc/rc.d/init.d/snmpd restart
在 Solaris 机器中配置代理
关于如何在Windows系统上安装SNMP代理,可参见在Solaris系统中安装SNMP代理。
如果代理已运行,请使用以下命令将其停止:
/etc/init.d/init.snmpdx stop
在/etc/init.d/init.snmpdx 文件中做以下修改:
将 if [ -f /etc/snmp/conf/snmpdx.rsrc -a -x /usr/lib/snmp/snmpdx ]; then
/usr/lib/snmp/snmpdx -y -c /etc/snmp/conf -d 3 -f 0
fi
改为
/sbin/snmpd
将 /usr/bin/pkill -9 -x -u 0 ‘(snmpdx|snmpv2d|mibiisa)’
改为
/usr/bin/pkill -9 -x -u 0 ‘(snmpd)’
使用命令 /etc/init.d/init.snmpdx start 重启代理。