Ubuntu上snmp安装、配置、启动及远程测试完整过程

Ubuntu上snmp安装、配置、启动及远程测试完整过程,第1张

Ubuntu上snmp安装、配置、启动及远程测试完整过程

0。描述

关于一个完整的教程,还是那句话,国内的要么不完整,要么太老,思路不清晰,这里有一个完整的给大家分享。

虽然对Linux主机的监控可以通过执行特定的命令来完成,但是通过snmp获取Linux主机的信息会比后期更加容易和简单,只是在使用前配置的时间可能会长一点,但是绝对值得!而如果你需要开发Linux主机的监控软件,那么使用snmp绝对是首选。毕竟它能获取的信息太多了!

下面分享一下在Ubuntu安装,配置,启动snmp,进行远程测试的全过程。

这里使用的 *** 作系统是Ubuntu15.10



1。安装


我们需要安装以下三个软件包:

  • Snmpd:snmp服务器软件

  • SNMP:SNMP客户端软件

    snmp-mibs-downloader:用于下载和更新本地mib库的软件

    虽然最后我会使用另一台主机进行远程测试,但在一开始,我还是在服务器端安装了snmp客户端软件,方便一些基本的测试。

    执行以下命令来安装这三个软件:

    ubuntu@leaf:~$ sudo apt-get install snmpd snmp snmp-mibs-downloader

    注意,在安装snmp-mibs-downloader的过程中,程序会自动为我们下载mib库,并保存在/usr/share/mibs目录下:

    ubuntu@leaf:/usr/share/mibs$ ls iana  ietf

    如果没有找到目录或文件,在安装snmp-mibs-downloader之后,您还可以手动执行以下命令来下载mib库:

    ubuntu@leaf:~$ sudo download-mibs

    会有很多输出信息。

    这样,安装的第一步就完成了。



    2。配置


    其实安装snmpd软件后,系统自动为我们启动了这项服务:

    ubuntu@leaf:~$ sudo service snmpd status  * snmpd is running

    在开始配置之前,让我们做一些简单的测试,看看服务是否正常:

    ubuntu@leaf:~$ snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.1.1 iso.3.6.1.2.1.1.1.0 = STRING: "Linux leaf 4.2.0-34-generic #39-Ubuntu SMP Thu Mar 10 22:13:01 UTC 2016 x86_64"

    没有问题。如果有信息返回,那么直接进行各种配置。但是,在开始配置之前,请备份配置文件:

    ubuntu@leaf:~$ cd /etc/snmp ubuntu@leaf:/etc/snmp$ sudo cp snmpd.conf snmpd.conf.ori ubuntu@leaf:/etc/snmp$ ls snmpd* snmpd.conf  snmpd.conf.ori

    当然需要注意的是,后面说的是SNMPv2,已经可以满足我们的需求了。


    (1)配置节点

    修改/etc/snmp/snmpd.conf文件,大概45行。注释掉下面两行:

    view   systemonly  included   .1.3.6.1.2.1.1 view   systemonly  included   .1.3.6.1.2.1.25.1

    添加以下一行:

    view   systemonly  included   .1

    这样我们就可以得到更多的节点信息,因为如果不这样,我们唯一能得到的信息就是上面两个带注释的节点所包含的信息。

    修改后,重新启动snmp服务,然后使用命令观察:

    ubuntu@leaf:/etc/snmp$ sudo service snmpd restart xpleaf@leaf:/etc/snmp$ snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4.3.0 iso.3.6.1.4.1.2021.4.3.0 = INTEGER: 1950716

    好的,没问题!但是需要注意的是,在这里,.1.3.6.1.4.1.2021.4.3.0代表LInux主机间交换总数空的一个节点,1950716的输出意味着我们主机间交换总数空约为2GB。


    (2)配置MIB库

    虽然我们想要的信息已经可以正常获取,但是输出结果并不直观。此时,我们可以配置MIB库。不过需要注意的是,这个配置是客户端软件的配置(不过还是在我的同一个服务器主机上运行)。

    修改/etc/snmp/snmp.conf配置文件,并注释掉以下行:

    mibs :

    然后重新启动snmp服务,然后通过命令进行观察:

    ubuntu@leaf:/etc/snmp$ sudo service snmpd restart ubuntu@leaf:/etc/snmp$ snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4.3.0 UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 1950716 kB

    如你所见,当前输出非常直观!之后,其实我们在获取相关节点的信息时就不用输入那一长串数字了:

    ubuntu@leaf:/etc/snmp$ snmpwalk -v 2c -c public localhost memTotalSwap.0 UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 1950716 kB ubuntu@leaf:/etc/snmp$ snmpwalk -v 2c -c public localhost memTotalReal.0 UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 8093524 kB

    其实在这之后你就能发现snmp有多强大了!至于MIB库的节点值是从哪里来的,不需要记忆。可以在网上找,也可以看我总结的一篇博文:linuxsnmp常见节点值,也可以在我的博客:http://xpleaf.blog.51cto.com上找。当然,如果你想知道它是什么意思,为什么要这么定义,那么我建议你看相关专业的书。一个很好的推荐是TCP/IP详解第一卷:协议。如果网络基础不是很好,也可以去学习。

    需要注意的是,现在只在服务器端进行配置和测试。实际上,这一步应该在客户端完成(在另一台主机上),这里只是为了方便。


    (3)配置社区

    其实所谓的社群,就理解为密码吧。以前我们用snmpwalk命令获取主机信息的时候,有一个参数是-cpublic,实际上是把这个社区指定为public,这是默认的配置。当然,在实际 *** 作中,我们不能使用默认值,所以我们需要修改它。

    修改配置文件/etc/snmp/snmpd.conf,大约52行,修改如下两行:

    rocommunity public  default    -V systemonly rocommunity6 public  default   -V systemonly

    修改为:

    rocommunity xpleaf123  default    -V systemonly rocommunity6 xpleaf123  default   -V systemonly

    所以在这里,将社区更改为xpleaf123,重新启动snmp服务,并通过命令进行观察:

    ubuntu@leaf:/etc/snmp$ snmpwalk -v 2c -c public localhost memTotalReal.0 Timeout: No Response from localhost ubuntu@leaf:/etc/snmp$ snmpwalk -v 2c -c xpleaf123 localhost memTotalReal.0 UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 8093524 kB

    可以看出,第一次获取信息不成功,因为我们已经更新了社区,旧的公有不能再用,否则认证失败就无法获取snmp提供的主机信息。


    (4)允许远程主机访问

    snmp服务默认只在本地打开,无法远程获取该主机的snmp信息:

    ubuntu@leaf:/etc/snmp$ sudo netstat -antup | grep 161   udp        0      0 127.0.0.1:161           0.0.0.0:*                           11615/snmpd

    可以看到,161端口只对本机开放(161端口是snmp服务的端口号),所以我们需要对其进行修改,使snmp服务对公众开放。

    修改/etc/snmp/snmpd.conf配置文件,大概15行。注释掉下面一行:

    agentAddress  udp:127.0.0.1:161

    同时,删除下面一行的注释:

    #agentAddress udp:161,udp6:[::1]:161

    重新启动snmp服务,然后通过命令进行观察:

    ubuntu@leaf:/etc/snmp$ sudo netstat -antup | grep 161 udp        0      0 0.0.0.0:161             0.0.0.0:*                           11656/snmpd      udp6       0      0 ::1:161                 :::*                                11656/snmpd

    可以看到服务已经对外开放,同时支持IPv4和IPv6。

    之后,我们可以在远程主机上进行测试。



    3。开始


    实际上,我们在前面的 *** 作中已经启动了snmp服务,但是在这里我们仍然要确保:

    ubuntu@leaf:~$ sudo service snmpd start ubuntu@leaf:~$ sudo netstat -antup | grep 161 udp        0      0 0.0.0.0:161             0.0.0.0:*                           11656/snmpd      udp6       0      0 ::1:161                 :::*                                11656/snmpd



    4。(远程)测试


    我们在服务器上本地测试过,没有问题。接下来我们需要做的是在远程主机上测试它。

    我的另一台远程主机的 *** 作系统是Ubuntu15.04,已经安装了snmp客户端软件和mib库下载软件,同时配置了MIB库。让我们直接进行远程测试:

    xpleaf@leaf:~$ snmpwalk -v 2c -c xpleaf123 115.159.*.* memTotalSwap.0 UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 1950716 kB xpleaf@leaf:~$ snmpwalk -v 2c -c xpleaf123 115.159.*.* memTotalReal.0 UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 8093524 kB xpleaf@leaf:~$ snmpwalk -v 2c -c xpleaf123 115.159.*.* .1.3.6.1.4.1.2021.9.1.6.1 UCD-SNMP-MIB::dskTotal.1 = INTEGER: 8123832

    如你所见,测试一点问题都没有!并且所获得的值与先前服务器在本地获得的值相同。

    当然,如果还是无法获取,那么就需要考虑服务器的主机上的防火墙设置是否有问题了。



    5。有什么用


    如果你懂一门后台开发语言(比如Python),然后你的前端基础不错(html,js,jquery,bootstrap,ajax等。),基于snmp,那么你完全可以自己开发一个Linux主机的监控主机。不难,复杂的是你需要如何处理你的数据,这取决于每个人或公司的需求。

    目前博主自己也在做相关监控软件的开发,只监控其他网络设备,不监控Linux主机。虽然有点复杂,但是只要技术思路正确,那么一切都会好的。

    感觉snmp对大部分朋友应该很有用,所以写这篇文章分享一下,虽然只是针对Ubuntu

    但在其他Linux发行版中,相信也差不多。再次希望能帮助到有需要的朋友。


    欢迎分享,转载请注明来源:内存溢出

    原文地址:https://54852.com/zz/778781.html

    (0)
    打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
    上一篇 2022-05-03
    下一篇2022-05-03

    发表评论

    登录后才能评论

    评论列表(0条)

      保存