
0。描述
关于一个完整的教程,还是那句话,国内的要么不完整,要么太老,思路不清晰,这里有一个完整的给大家分享。
虽然对Linux主机的监控可以通过执行特定的命令来完成,但是通过snmp获取Linux主机的信息会比后期更加容易和简单,只是在使用前配置的时间可能会长一点,但是绝对值得!而如果你需要开发Linux主机的监控软件,那么使用snmp绝对是首选。毕竟它能获取的信息太多了!
下面分享一下在Ubuntu上安装,配置,启动snmp,进行远程测试的全过程。
这里使用的 *** 作系统是Ubuntu15.10
1。安装
我们需要安装以下三个软件包:
虽然最后我会使用另一台主机进行远程测试,但在一开始,我还是在服务器端安装了snmp客户端软件,方便一些基本的测试。
执行以下命令来安装这三个软件:
ubuntu@leaf:~$ sudo apt-get install snmpd snmp snmp-mibs-downloader注意,在安装snmp-mibs-downloader的过程中,程序会自动为我们下载mib库,并保存在/usr/share/mibs目录下:
如果没有找到目录或文件,在安装snmp-mibs-downloader之后,您还可以手动执行以下命令来下载mib库:
会有很多输出信息。
这样,安装的第一步就完成了。
2。配置
其实安装snmpd软件后,系统自动为我们启动了这项服务:
在开始配置之前,让我们做一些简单的测试,看看服务是否正常:
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"没有问题。如果有信息返回,那么直接进行各种配置。但是,在开始配置之前,请备份配置文件:
当然需要注意的是,后面说的是SNMPv2,已经可以满足我们的需求了。
(1)配置节点
修改/etc/snmp/snmpd.conf文件,大概45行。注释掉下面两行:
添加以下一行:
这样我们就可以得到更多的节点信息,因为如果不这样,我们唯一能得到的信息就是上面两个带注释的节点所包含的信息。
修改后,重新启动snmp服务,然后使用命令观察:
好的,没问题!但是需要注意的是,在这里,.1.3.6.1.4.1.2021.4.3.0代表LInux主机间交换总数空的一个节点,1950716的输出意味着我们主机间交换总数空约为2GB。
(2)配置MIB库
虽然我们想要的信息已经可以正常获取,但是输出结果并不直观。此时,我们可以配置MIB库。不过需要注意的是,这个配置是客户端软件的配置(不过还是在我的同一个服务器主机上运行)。
修改/etc/snmp/snmp.conf配置文件,并注释掉以下行:
然后重新启动snmp服务,然后通过命令进行观察:
如你所见,当前输出非常直观!之后,其实我们在获取相关节点的信息时就不用输入那一长串数字了:
其实在这之后你就能发现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修改为:
所以在这里,将社区更改为xpleaf123,重新启动snmp服务,并通过命令进行观察:
可以看出,第一次获取信息不成功,因为我们已经更新了社区,旧的公有不能再用,否则认证失败就无法获取snmp提供的主机信息。
(4)允许远程主机访问
snmp服务默认只在本地打开,无法远程获取该主机的snmp信息:
可以看到,161端口只对本机开放(161端口是snmp服务的端口号),所以我们需要对其进行修改,使snmp服务对公众开放。
修改/etc/snmp/snmpd.conf配置文件,大概15行。注释掉下面一行:
同时,删除下面一行的注释:
重新启动snmp服务,然后通过命令进行观察:
可以看到服务已经对外开放,同时支持IPv4和IPv6。
之后,我们可以在远程主机上进行测试。
3。开始
实际上,我们在前面的 *** 作中已经启动了snmp服务,但是在这里我们仍然要确保:
4。(远程)测试
我们在服务器上本地测试过,没有问题。接下来我们需要做的是在远程主机上测试它。
我的另一台远程主机的 *** 作系统是Ubuntu15.04,已经安装了snmp客户端软件和mib库下载软件,同时配置了MIB库。让我们直接进行远程测试:
如你所见,测试一点问题都没有!并且所获得的值与先前服务器在本地获得的值相同。
当然,如果还是无法获取,那么就需要考虑服务器的主机上的防火墙设置是否有问题了。
5。有什么用
如果你懂一门后台开发语言(比如Python),然后你的前端基础不错(html,js,jquery,bootstrap,ajax等。),基于snmp,那么你完全可以自己开发一个Linux主机的监控主机。不难,复杂的是你需要如何处理你的数据,这取决于每个人或公司的需求。
目前博主自己也在做相关监控软件的开发,只监控其他网络设备,不监控Linux主机。虽然有点复杂,但是只要技术思路正确,那么一切都会好的。
感觉snmp对大部分朋友应该很有用,所以写这篇文章分享一下,虽然只是针对Ubuntu
但在其他Linux发行版中,相信也差不多。再次希望能帮助到有需要的朋友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)