0.说明

关于一个完整的教程,还是那句话,国内的要么不完整,要么就太旧了,而且思路也不清晰,所以这里写一篇完整的给大家分享一下。

虽然对于Linux主机的监控可以通过执行特定的命令来完成,但是相比之后,通过snmp的方式来获取Linux主机的信息则会更轻松简单些,只不过在使用前的配置可能需要花多一点时间,不过这绝对值得!而且如果需要开发Linux主机的监控软件,那使用snmp肯定是首选,毕竟它可以获得的信息太多太多!

后面的内容就来分享一下在Ubuntu上安装、配置、启动snmp以及进行远程测试的完整过程。

这里使用的操作系统为:Ubuntu 15.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
        OK,没有问题!不过需要注意的是,这里.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库的节点值从哪里来,不需要去记,可以在网上找,也可以看我总结的一篇博文:《linux snmp常用结点值》,也可以在我的博客上找:http://xpleaf.blog.51cto.com。当然,如果你想知道是什么意思,为什么要这样定义,那么我建议你去看相关专业的书籍,一个不错的推荐是《TCP/IP 详解 卷1:协议》,如果网络基础不太好的话,也可以去学习一下。

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

(3)配置共同体

其实所谓共同体,把它理解为一个密码就行了,前面我们在使用snmpwalk命令获取主机的信息时,有一个-c public的参数,其实就是指定了这个共同体为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
        可以看到第一次获取信息不成功,因为我们已经更新了共同体,旧的public将不能再使用,否则认证失败就无法获取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.(远程)测试

在服务器本地我们已经做过测试,并且没有问题,下面我们要做的是在远程主机进行测试。

我另一台远程主机上的操作系统也是Ubuntu 15.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
        可以看到,测试完全没有问题!并且获取的值和前面有服务器本地得到的一样。

当然,如果你发现还是获取不了的,那么你就需要考虑一下在服务器的主机上防火墙的设置有没有问题了。
————————————————
版权声明:本文为CSDN博主「xpleaf」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xpleaf/article/details/51100725

ubuntu snmp 安装与配置的更多相关文章

  1. Ubuntu的安装与配置

    一.Ubuntu的安装与配置 Ubuntu 快速下载地址 1.安装VMwareTools 系统安装后,工具栏"虚拟机"-->"安装VMwareTools" ...

  2. Ubuntu下安装并配置VS Code编译C++

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7069091.html Ubuntu下安装并配置VS Code编译C++ 安装 ...

  3. Ubuntu下安装并配置TexStudio

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7069715.html Ubuntu下安装并配置TexStudio Ubunt ...

  4. ubuntu下安装和配置最新版JDK8傻瓜教程

    ubuntu下安装和配置最新版JDK8傻瓜教程 听语音 | 浏览:18940 | 更新:2014-07-14 22:13 | 标签:ubuntu 1 2 3 4 5 6 分步阅读 ubuntu系统通常 ...

  5. Ubuntu上安装与配置JDK1.8

    Ubuntu上安装与配置JDK1.8 一.下载 下载JDK,由于是Ubuntu. 所以去官网下载tar.gz格式的就可以(ubuntu使用浏览器下载网速比較慢,所以推荐到window上下载好). ht ...

  6. Ubuntu下安装和配置Apache2,小编觉得挺不错的,现在就分享给大家

    本篇文章主要介绍了详解Ubuntu下安装和配置Apache2,小编觉得挺不错的,现在就分享给大家,也给大家做个参考.有兴趣的朋友可以了解一下.(http://xz.8682222.com) 在Ubun ...

  7. 在虚拟机VM中安装的Ubuntu上安装和配置Hadoop

    一.系统环境: 我使用的Ubuntu版本是:ubuntu-12.04-desktop-i386.iso jdk版本:jdk1.7.0_67 hadoop版本:hadoop-2.5.0 二.下载jdk和 ...

  8. Ubuntu下安装和配置Apache2

    http://www.blogjava.net/duanzhimin528/archive/2010/03/05/314564.html 在Ubuntu中安装apache 安装指令:sudo apt- ...

  9. Ubuntu 简单安装和配置 GitLab

    使用的 Ubuntu Server 16.04 LTS 版本,服务器托管在 Azure 上,用的 1 元试用 1 个月服务器订阅(1500 元额度). 安装命令(推荐使用): curl -sS htt ...

随机推荐

  1. 移动端fixed定位在底部,出现键盘后消失

    jq var h=$(window).height(); $(window).resize(function() { if($(window).height()<h){ $('.nav').hi ...

  2. Spring_自动组件扫描和 基于注解配置bean

    自动组件扫描 启用Spring组件扫描功能. 使用@Component注释来表示这是类是一个自动扫描组件.  package com.tanlei.dao; import org.springfram ...

  3. Java Map 排序

    1. 按照key值排序 对于java中Map的排序,有排序Map,比如TreeMap,对于这个Map,首先只能按照键排序,其次再put和remove的时候由于需要排序,性能上会有所牺牲. 这种方案,使 ...

  4. 【JZOJ4910】【NOIP2017模拟12.3】子串

    题目描述 数据范围 =w= 暴力: 从前往后枚举一个i,再从前往后枚举一个j: 如果s[i]不是s[j]的子串,更新答案,继续枚举: 如果s[i]是s[j]的子串,停止枚举. 因为对于s[k] (k& ...

  5. Nginx教程(二) Nginx虚拟主机配置 (转)

    Nginx教程(二) Nginx虚拟主机配置 1 虚拟主机管理 1.1 Nginx管理虚拟主机 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主 ...

  6. awss3

    import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.io ...

  7. txt改后缀弹窗表白

    one. 打开新建的文本文件,输入字符:msgbox("此处可替换成你想要出现的文字"),括号和引号是英文状态下的标点.(可根据自己的需要输入多行) two. 保存新建的文本文件, ...

  8. oracle-Restrict权限

    启动数据库并把它置于open模式,直给拥有restricted session权限的用户赋予访问权. Alter system disable restricted session; 另外,启动时,o ...

  9. 未能加载文件或程序集 XXX 或它的一个依赖项。参数错误

    引发原因 :电脑突然蓝屏重启 解决方法:删除 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files 下的所有文件 ...

  10. [ITOO]动态建库 标签: 库数据库mysql 2016-07-17 21:23 241人阅读 评论(2) 收

    最近一直在做权限系统的动态建库,动态建库,说白了就是在你点击"注册"按钮的时候,根据你输入的信息,来创建一个企业所需要的数据库的过程,因为现阶段并没有提供购买等功能,所以暂时咱们是 ...