精华内容
下载资源
问答
  • linux系统服务器配置snmptrap步骤
    千次阅读
    2020-07-31 11:06:14

    配置snmptrap
    vi /etc/snmp/snmptrap.conf,在文件最后添加如下

    agentAddress  udp:127.0.0.1:161
    view   systemonly  included   .1.3.6.1.2.1.1
    view   systemonly  included   .1.3.6.1.2.1.25.1
    rocommunity csg-tsgz991  172.16.140.214    -V systemonly
    rouser   authOnlyUser
    sysLocation    Sitting on the Dock of the Bay
    sysContact     Me <me@example.org>
    sysServices    72
    proc  mountd
    proc  ntalkd    4
    proc  sendmail 10 1
    disk       /     10000
    disk       /var  5%
    includeAllDisks  10%
    load   12 10 5
    trap2sink     172.16.140.214 csg-tsgz991
    iquerySecName   internalUser
    rouser          internalUser
    defaultMonitors          yes
    linkUpDownNotifications  yes
    extend    test1   /bin/echo  Hello, world!
    extend-sh test2   echo Hello, worl
    更多相关内容
  • SNMP TRAP实战

    千次阅读 2020-09-07 16:42:44
    一、什么是SNMPTRAP SNMP trap(SNMP 陷阱):某种入口,到达该入口会使SNMP被管设备主动通知SNMP管理器,而不是等待SNMP管理器的再次轮询。在网管系统中,被管理设备中的代理可以在任何时候向网络管理工作站报告错误...

    一、什么是SNMPTRAP

    • SNMP trap(SNMP 陷阱):某种入口,到达该入口会使SNMP被管设备主动通知SNMP管理器,而不是等待SNMP管理器的再次轮询。在网管系统中,被管理设备中的代理可以在任何时候向网络管理工作站报告错误情况,例如预制定阈值越界程度等等。代理并不需要等到管理工作站为获得这些错误情况而轮询他的时候才会报告。正如人们用中断通知 CPU 数据的到达,而不是让 CPU 进行轮询一样。Trap 通知是更加合理的选择。用一句话来说的话,SNMP Trap 就是被管理设备主动发送消息给 NMS 的一种机制。

    二、SNMPTRAP功能特点

    • 1、事件驱动,第一时间收到设备故障告警
      以事件为驱动,由被监控的主机、网络设备、应用在发生故障时向NMS发送SNMP Trap,通过对接收到的SNMP Trap进行翻译和展现,以最快速度向管理人员发送告警。SNMP Trap不同于SNMP的主动采集,SNMP采集服务器按照固定的时间间隔,由网管系统以询问的方式,采集被监控端性能指标,因此发现被监控端性能问题的快慢取决于采集的频率间隔。而SNMP Trap是以事件为驱动,在被监控端设置陷阱,一旦被监控端设备出现相关问题,立刻发送SNMP Trap,因此能够在最短的时间内发现故障,避免因为设备故障带来的经济损失。
    • 2、提供SNMPTrap的接收,并通过对Trap信息翻译,展现事件
      支持设备,主机和应用的SNMP Trap信息,从被动变为主动,全面监控IT系统。通过对SNMP Trap的翻译和展现,一旦某个IT组件出现问题,可以在短时间之内,即可收到故障信息,满足企业的快速发现问题的需要。
      通过SNMPTrap的接收规则定义,管理员可以过滤非重要设备的Trap信息,也可以过滤被监控设备的非重要故障信息,帮助管理员在第一时间收到真正需要的管理信息。
    • 3、支持事件导出
      汇总特定时间内特定SNMPTrap事件,同时可以以Excel格式导出事件数据,便于管理人员对故障信息进行统计和分析。
    • 4、支持各类设备厂家MIB库的导入
      虽然国内各种网络设备都支持SNMP Trap,但是各个厂家的MIB库并不能很好的支持公共标准,因此,很多监控系统都支持私有MIB库的导入,确保能够全面兼容各个厂家设备的SNMP Trap信息.

    三、SNMPTRAP工作流程

    • 1、Agent端
      A、编写MIB文件,确定好TRAP名称等信息
      B、命令方式:发送各种TRAP命令(Manager地址后面一定要加端口号162),在Manager端看反应结果,在Agent端无反应
      C、自动触发:配置snmpd.conf设置触发TRAP,系统发生某类错误时会自动触发相应类型的TRAP,发送给Manager
      D、程序方式:一部份TRAP需要写C语言程序,用相应的api(send_easy_trap或send_v2trap)发送
    • 2、Manager端
      A、配置snmptrapd.conf文件,设置访问权限
      B、将MIB文件导入到mibs文件夹中
      C、用perl等脚本语言编写处理trap的程序
      D、配置snmptrapd.conf文件,添加traphandler项,将不同的TRAP对应到不同的处理程序上

    四、TRAP MIB编写及编译
    NET-SNMP中TRAP的实现是基于一个由NOTIFICATION-TYPE 定义的MIB对象实现的。该对象在TrapPDU中头部位置,后续紧跟着该Trap携带的其他节点的信息,这些节点信息是Trap中有意义的信息,体现本次“告警”的真正内容,这些节点一般为普通的MIB对象。其中OBJECTS 子句中可以包含多个对象。

    • 实现私有Trap的方法与之前的普通MIB开发方法类型:

      • 先定义Trap的MIB对象,然后借由mib2c和相应的框架代码配置文件,“mib2c.notify.conf”,生成Trap框架代码。
        命令如下:
        mib2c -c mib2c.notify.conf TEST-TRAP-MIB::TestTraps

    其生成的框架代码:

    1. 注册Trap对象
    2. 绑定对象发送列表
    3. 最后调用API发送:send_easy_trap() send_v2trap() send_v3trap().

    Trap的发送逻辑一般具有重复发送的特性,这一特性可有snmp_alarm_register()实现。该API能够准确地实现计时器功能。示例代码中也是由该API实现重复,周期调用的功能。
    五、TRAP MIB示例文件

    TEST-TRAP-MIB DEFINITIONS ::= BEGIN
    IMPORTS
    	MODULE-IDENTITY, OBJECT-TYPE, TimeTicks FROM SNMPv2-SMI
    	DisplayString, FROM SNMPv2-TC
    	jsHostInfo FROM JS-MAIN-MIB ;
    	TestTraps OBJECT IDENTIFIER ::= { jsHostInfo 99 }
         
    	cpuRatioHigh NOTIFICATION-TYPE
    		OBJECTS  {TestTrapDescription}  --可以包含多个对象
    		STATUS  current
    		DESCRIPTION "."
             ::= { TestTraps 1 }    
             
      
    	TestDescription OBJECT IDENTIFIER ::= { TestTraps 2 }
          
    	TestTrapDescription  OBJECT-TYPE
    		SYNTAX  DisplayString (SIZE (0..256))
    		MAX-ACCESS read-only
    		STATUS current
    		DESCRIPTION "  "
    		::= { TestDescription 1 }
               
      END
    

    六、TRAP 示例代码

    #include <net-snmp/net-snmp-config.h>
    #include <net-snmp/net-snmp-includes.h>
    #include <net-snmp/agent/net-snmp-agent-includes.h>
    #include "TestTraps.h"
    
    //extern const oid snmptrap_oid[];
    //extern const size_t snmptrap_oid_len;
    int  cpu = 0; 
    const oid snmptrap_oid[] = {1,3,6,1,6,3,1,1,4,1,0};
    const size_t snmptrap_oid_len = OID_LENGTH(snmptrap_oid);
    //如果CPU大于80 则发送告警 否则不发送
    void judge_send_cputrap(int cpu)
    {
        static unsigned int cputrap_clientreg = 0;
        if(cpu > 80)
        {
            if(cputrap_clientreg == 0){
                send_cpuRatioHigh_trap();
    			//注册每5秒发送一次
                cputrap_clientreg = snmp_alarm_register(5,SA_REPEAT,send_cpuRatioHigh_trap,NULL);
     
            }
        }
        else
        {
            if(cputrap_clientreg != 0)
            {
                snmp_alarm_unregister(cputrap_clientreg);
                cputrap_clientreg = 0;
            }
        }
    }
    void read_cpudata_repeat(unsigned int clientreg, void *clientarg)
    {
        cpu = 90;
        judge_send_cputrap(cpu); //判断发送告警
    }
    
    
    void init_TestTraps(void)
    {
        printf(("TestTraps","Initializing\n"));
        snmp_alarm_register(1,SA_REPEAT,read_cpudata_repeat, NULL);
    }
    
    int
    send_cpuRatioHigh_trap(void)
    {
        netsnmp_variable_list *var_list = NULL;
        const oid       cpuRatioHigh_oid[] =
            { 1, 3, 6, 1, 4, 1, 88888, 1, 1, 99, 1 };
        const oid       TestTrapDescription_oid[] =
            { 1, 3, 6, 1, 4, 1, 88888, 1, 1, 99, 2, 1, 0 }	
        /*
         * 设置 snmpTrapOid.0 的值为私有MIB中定义的TestTrapDescription_oid
         */
        snmp_varlist_add_variable(&var_list,
                                  snmptrap_oid, snmptrap_oid_len,
                                  ASN_OBJECT_ID,
                                  cpuRatioHigh_oid, sizeof(cpuRatioHigh_oid));
    
        /*
         * Add any objects from the trap definition
         */
        snmp_varlist_add_variable(&var_list,
                                  TestTrapDescription_oid,
                                  OID_LENGTH(TestTrapDescription_oid),
                                  ASN_OCTET_STR,
                                  /*
                                   * Set an appropriate value for TestTrapDescription 
                                   */
                                  (int*)&cpu, sizeof(cpu));
    
        /*
         * Add any extra (optional) objects here
         */
    
        /*
         * Send the trap to the list of configured destinations
         *  and clean up
         */
         //发送TRAP之后并释放
        send_v2trap(var_list);
        snmp_free_varbind(var_list);
    
        return SNMP_ERR_NOERROR;
    }
    

    七、TRAP 注册到子代理中
    方法跟普通MIB对象一样

    八、测试和验证
    需启动主代理进程和子代理进程 以及snmptrapd进程
    直接到/usr/local/sbin/目录下 启动代理进程
    ./snmpd -f -Le -c /usr/local/share/snmp/snmpd.conf
    然后启动子代理进程
    ./ example-demon

    最后启动snmptrapd进程。
     ./snmptrapd -f -Le -c /usr/local/share/snmp/snmptrapd.conf
    

    启动snmptrapd进程需要snmptrapd.conf配置文件
    启动后即可看到
    则每过5秒可以看到trap返回来的告警信息。

    九、snmptrapd.conf编写
    说明:配置文件所有指令都要顶格写,左侧不要留空格。
    允许使用空格,但不能使用Tab键。
    路径分隔符不能使用反斜杠,必须使用“/”。
    此文件用来指定管理进程如何处理接收到的snmp notification。

    1. 在net-snmp安装目录下新建snmptrapd.conf文件,使用以下路径:/usr/local/share/snmp/snmptrapd.conf。

    2. 在snmptrapd.conf中加入以下指令:
      authCommunity log,execute,net public
      这条指令指明以“public”为“community”请求的snmp “notification”允许的操作。
      各变量意义如下:
      log: log the details of the notification - either in a specified file, to standard output (or stderr), or via syslog(or similar).
      execute: pass the details of the trap to a specified handler program, including embedded perl.
      net: forward the trap to another notification receiver.

    3. 若想对接收到的信息进行处理,可以使用traphandle,示例如下:
      traphandle SNMPv2-MIB::coldStart /usr/nba/bin/traps cold
      traphandle SNMPv2-MIB::warmStart /usr/nba/bin/traps warm
      traphandle IF-MIB::linkDown /usr/nba/bin/traps down
      traphandle IF-MIB::linkUp /usr/nba/bin/traps up
      第一个参数为从snmptrapd接收的OID,第二个参数为调用的程序。此次未做traphandle处理。

    注意:上述是使用服务器本机获取TRAP ,如果想使用远程的管理设备获取TRAP
    需要修改snmpd.conf文件

    Trap的发送还需要指定到管理端地址和端口。在配置文件中,添加下面关键字:
    不是关键点:Authtrapenable 1 //打开trap自动告警的开关,1代表开启,2代表关闭
    Trap2sink localhost [community] [port] //指定trap发送的地址,共同体和端口
    共同体和端口可以不指定,默认为public 和 162。

    展开全文
  • snmp trapsnmp SNMP简单概述 1.1、什么是Snmp SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议"。SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于...

    snmp trap 与snmp 以及Trap的发送与接收java实现

    SNMP简单概述

    1.1、什么是Snmp

    SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议"。SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议。SNMP主要用于网络设备的管理。由于SNMP协议简单可靠 ,受到了众多厂商的欢迎,成为了目前最为广泛的网管协议。

    SNMP协议主要由两大部分构成:SNMP管理站和SNMP代理。SNMP管理站是一个中心节点,负责收集维护各个SNMP元素的信息,并对这些信息进行处理,最后反馈给网络管理员;而SNMP代理是运行在各个被管理的网络节点之上,负责统计该节点的各项信息,并且负责与SNMP管理站交互,接收并执行管理站的命令,上传各种本地的网络信息。

    SNMP管理站和SNMP代理之间是松散耦合。他们之间的通信是通过UDP协议完成的。一般情况下,SNMP管理站通过UDP协议向SNMP代理发送各种命令,当SNMP代理收到命令后,返回SNMP管理站需要的参数。但是当SNMP代理检测到网络元素异常的时候,也可以主动向SNMP管理站发送消息,通告当前异常状况。

    SNMP的基本思想:为不同种类的设备、不同厂家生产的设备、不同型号的设备,定义为一个统一的接口和协议,使得管理员可以是使用统一的外观面对这些需要管理的网络设备进行管理。通过网络,管理员可以管理位于不同物理空间的设备,从而大大提高网络管理的效率,简化网络管理员的工作。

    SNMP的工作方式:管理员需要向设备获取数据,所以SNMP提供了【读】操作;管理员需要向设备执行设置操作,所以SNMP提供了【写】操作;设备需要在重要状况改变的时候,向管理员通报事件的发生,所以SNMP提供了【Trap】操作。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zB4K1Zx2-1650091948089)(clipboard-202204151017-l8afp.png)]

    1.2、为什么需要SNMP?

    随着网络技术的飞速发展,在网络不断普及的同时也给网络管理带来了一些问题:
    网络设备数量成几何级数增加,使得网络管理员对设备的管理变得越来越困难;同时,网络作为一个复杂的分布式系统,其覆盖地域不断扩大,也使得对这些设备进行实时监控和故障排查变得极为困难。
    网络设备种类多种多样,不同设备厂商提供的管理接口(如命令行接口)各不相同,这使得网络管理变得愈发复杂。
    在这种背景下,SNMP应运而生,SNMP是广泛应用于TCP/IP网络的网络管理标准协议,该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。通过“利用网络管理网络”的方式:

    • 网络管理员可以利用SNMP平台在网络上的任意节点完成信息查询、信息修改和故障排查等工作,工作效率得以提高。
    • 屏蔽了设备间的物理差异,SNMP仅提供最基本的功能集,使得管理任务与被管理设备的物理特性、网络类型相互独立,因而可以实现对不同设备的统一管理,管理成本低。
    • 设计简单、运行代价低,SNMP采用“尽可能简单”的设计思想,其在设备上添加的软件/硬件、报文的种类和报文的格式都力求简单,因而运行SNMP给设备造成的影响和代价都被最小化。

    1.3、SNMP的基本组件

    SNMP基本组件包括网络管理系统NMS(Network Management System)、代理进程(Agent)、被管对象(Managed Object)和管理信息库MIB(Management Information Base)。如图所示他们共同构成SNMP的管理模型,在SNMP的体系结构中都起着至关重要的作用。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tE0OJAAc-1650091948090)(clipboard-202204141542-5jfbe.png)]

    NMS

    NMS 在网络中扮演管理者角色,是一个采用 SNMP 协议对网络设备进行管理/监视的系统,运行在 NMS 服务器上。

    NMS 可向设备上的 Agent 发出请求,查询或修改一个或多个具体的参数值。也可以接收 Agent 主动发送的 Trap 信息,以获知被管理设备当前的状态。

    Agent

    Agent 是被管理设备中的一个代理进程,用于维护被管理设备的信息数据并响应来自 NMS 的请求。Agent 接收到 NMS 的请求信息后,通过 MIB 表完成相应指令后,并把操作结果响应给 NMS。

    当设备发生故障或者其它事件时,设备会通过 Agent 主动发送信息给 NMS,向NMS报告设备当前的状态变化。

    MIB

    MIB (管理信息库)就是一个虚拟的数据库,是所有被管对象的抽象集合,是在被管理设备端维护的设备状态信息集,指明了被管理设备所维护的变量(即能够被 Agent 查询和设置的信息)。MIB 在数据库中定义了被管理设备的一系列属性:对象的名称、对象的状态、对象的访问权限和对象的数据类型等。每一个Agent都维护这样一个MIB库,NMS可以对MIB库中的对象的值进行读取或者设置。

    • MIB是一个按照层次结构组织的树状结构,称为MIB树
    • 每个被管对象对应树形结构的一个叶子节点,称为一个object,拥有唯一的数字标识符
    • 网管通过读写MIB中的被管对象实现对设备的管理

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VRNTGgPt-1650091948092)(clipboard-202204151055-h0n43.png)]

    MIB数据对象以一种树状分层结构进行组织,这个树状结构中的每个分枝都有一个专用的名字和一个数字形式的标识符。结构树的分枝实际表示的是数据对象的逻 辑分组。而树叶,有时候也叫节点(node),代表了各个数据对象。在结构树中使用子树表示增加的中间分枝和增加的树叶。
    使用这个树状分层结构,MIB浏览器能够以一种方便而且简洁的方式访问整个MIB数据库。MIB浏览器是这样一种工具,它可以遍历整棵MIB结构树,通常 以图形显示的形式来表示各个分枝和树叶对象。可以通过其数字标识符来查找MIB中的数据对象,这个数字标识符号从结构树的顶部(或根部)开始,直到各个叶 子节点(即数据对象)为止。这种访问方式和文件系统的组织方式一致。两者的主要区别在于文件系统中的路径名可以以绝对也可以以相对方式表示,而MIB数据 对象只能以绝对方式表示,不能使用相对方式。
    每一个节点都有一个对象标识符(OID)来唯一的标识,每个节点用数字和字符两种方式显示,其中对象标识符OID是由句点隔开的一组整数,也就是从根节点 通向它的路径。一个带标号节点可以拥有包含其它带标号节点为它的子树,如果没有子树它就是叶子节点,它包含一个值并被称为对象。比如网络设备名的oid 是.1.3.6.1.2.1.1.5.0,其值为设备名称的字符串。
    网络资源被抽象为对象进行管理。但SNMP中的对象是表示被管资源某一方面的数据变量。对象被标准化为跨系统的类,对象的集合被组织为管理信息库 (MIB)。MIB作为设在代理者处的管理站访问点的集合,管理站通过读取MIB中对象的值来进行网络监控。管理站可以在代理者处产生动作,也可以通过修改变量值改变代理者处的配置。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HIvH5ArP-1650091948093)(clipboard-202204151102-snonv.png)]

    通过 MIB,可以完成以下功能:

    ◆ Agent 通过 get 消息查询 MIB,可以获知设备当前的状态信息。

    ◆ Agent 通过 set 消息修改 MIB,可以设置设备的状态参数。

    Management object

    Management object 指被管理对象。每一个设备可能包含多个被管理对象,被管理对象可以是设备中的某个硬件(如一块接口板),也可以是某些硬件,软件(如路由选择协议)及其的配置参数的集合。

    1.4、SNMP 和 UDP

    SNMP采用UDP协议在管理端和agent之间传输信息。 SNMP采用UDP 161端口接收和发送请求,162端口接收trap,执行SNMP的设备缺省都必须采用这些端口。SNMP消息全部通过UDP端口161接收,只有Trap信息采用UDP端口162。

    1.5、Snmp版本

    SNMP 目前共有 3 个版本,分别为 v1、v2 和 v3,说明如下:

    • SNMP v1:是 SNMP 协议的最初版本,在 1988 年被制定,并被 Internet 体系结构委员会(IAB)采纳作为一个短期的网络管理解决方案。不过依然是众多厂家实现SNMP基本方式。
    • SNMP v2:是 1992 年发布的 SNMP 的第二个版本。它修订了第一版,并且在性能、安全、机密性和管理者之间通信等方面进行了大量改进。通常被指是基于community的SNMP V2。Community实质上就是密码。
    • SNMP v3:是目前最新的版本。它是 2004 年制定的,协议编号为 RFC3411-RFC3418(STD0062)。它为提升协议的安全性,增加了认证和密文传输功能,它对网络管理最大的贡献在于其安全性

    SNMP v3实现原理SNMP v1、 SNMP v2基本一致,主要区别在于SNMP v1、 SNMP v2通过只读团体名、只读团体名连接,而SNMP v3通过鉴权和加密连接,增加了身份验证和加密处理。
    SNMPv1、SNMPv2c与SNMPv3三者之间有什么区别?
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iP4adDhq-1650091948095)(clipboard-202204141604-b6kr7.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RJFMHmp9-1650091948096)(clipboard-202204151045-s2zzx.png)]

    二、Snmp的实现结构

    在具体实现上,SNMP为管理员提供了一个网管平台(NMS),又称为【管理站】,负责网管命令的发出、数据存储、及数据分析。【被】监管的设备上运行一个SNMP代理(Agent)),代理实现设备与管理站的SNMP通信。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JwVgtPnN-1650091948097)(clipboard-202204141552-5jeky.png)]

    管理站与代理端通过MIB进行接口统一,MIB定义了设备中的被管理对象。管理站和代理都实现了相应的MIB对象,使得双方可以识别对方的数据,实现通信。管理站向代理申请MIB中定义的数据,代理识别后,将管理设备提供的相关状态或参数等数据转换为MIB定义的格式,应答给管理站,完成一次管理操作。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0GadTgzZ-1650091948098)(clipboard-202204151020-d03p1.png)]

    三、Snmp有关的基本概念

    一套完整的SNMP系统主要包括管理信息库(MIB)、管理信息结构(SMI)及SNMP报文协议。

    管理信息库MIB:任何一个被管理的资源都表示成一个对象,称为被管理的对象。MIB是被管理对象的集合。它定义了被管理对象的一系列属性:对象的名称、对象的访问权限和对象的数据类型等。每个SNMP设备(Agent)都有自己的MIB。MIB也可以看作是NMS(网管系统)和Agent之间的沟通桥梁。它们之间的关系如图1所示
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zPkQfvyi-1650091948099)(clipboard-202204141553-ocj03.png)]

    3.1、代理和管理站的模型

    Snmp分2种角色:SNMP管理站(manager,我们的本机127.0.0.1)和SNMP代理(agent, 我们要操作的机器,比如 192.168.1.144)。管理站指的是运行了可以执行网络管理任务软件的服务器,通常被称作为网络管理工作站(NMS),NMS负责采样网络中agent的信息,并接受agent的trap。代理是实际网络设备中用来实现SNMP功能的部分。代理在UDP的161端口接收NMS的读写请求消息,管理站在UDP的162端口接收代理的事件通告消息。所以,一旦获取设备的访问权限(community,默认为public),就可以访问设备信息、改写和配置设备参数。由于采用UDP协议,不需要在代理和管理站之间保持连接。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OrmudjQX-1650091948101)(clipboard-202204141555-qbe1r.png)]

    3.2、SNMP的操作命令

    SNMP协议之所以易于使用,这是因为它对外提供了三种用于控制MIB对象的基本操作命令。它们是:Get、Set 和 Trap。

    Get:管理站读取代理者处对象的值。它是SNMP协议中使用率最高的一个命令,因为该命令是从网络设备中获得管理信息的基本方式。
    Set:管理站设置代理者处对象的值。它是一个特权命令,因为可以通过它来改动设备的配置或控制设备的运转状态。它可以设置设备的名称,关掉一个端口或清除一个地址解析表中的项等。
    Trap: 代理者主动向管理站通报重要事件。它的功能就是在网络管理系统没有明确要求的前提下,由管理代理通知网络管理系统有一些特别的情况或问题 发生了。如果发生意外情况,客户会向服务器的162端口发送一个消息,告知服务器指定的变量值发生了变化。通常由服务器请求而获得的数据由服务器的161 端口接收。Trap 消息可以用来通知管理站线路的故障、连接的终端和恢复、认证失败等消息。管理站可相应的作出处理。

    3.3、SNMP 报文

    SNMP协议定义了数据包的格式,及网络管理员和管理代理之间的信息交换,它还控制着管理代理的MIB数据对象。因此,可用于处理管理代理定义的各种任务。
    一条SNMP消息由"版本号"、"SNMP共同体名"和"协议数据单元(PDU)"构成,数据包的长度不是固定的。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iU30kLdx-1650091948102)(clipboard-202204141555-eqgtn.png)]

    版本识别符(version identifier):用于说明现在使用的是哪个版本的SNMP协议,确保SNMP代理使用相同的协议,每个SNMP代理都直接抛弃与自己协议版本不同的数据报。
    团体名(Community Name):团体(community)是基本的安全机制,用于实现SNMP网络管理员访问SNMP管理代理时的身份验证。类似于密码,默认值为 public。团体名(Community name)是管理代理的口令,管理员被允许访问数据对象的前提就是网络管理员知道网络代理的口令。如果把配置管理代理成可以执行Trap命令,当网络管理 员用一个错误的分区名查询管理代理时,系统就发送一个autenticationFailure trap报文。
    协议数据单元(PDU):PDU (协议数据单元)是SNMP消息中的数据区, 即Snmp通信时报文数据的载体。PDU指明了SNMP的消息类型及其相关参数

    PDU的5种协议数据单元:

    SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。

    get-request操作:从代理进程处提取一个或多个参数值。

    get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值。

    set-request操作:设置代理进程的一个或多个参数值。

    get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作。trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。
    前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作今后叫做get、get-next和set操作。图1描述了SNMP的这5种报文操作。请注意,在代理进程端是用熟知端口161俩接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。

    SNMP的5种报文操作:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WVywNEUO-1650091948104)(clipboard-202204151037-owizk.png)]

    网管服务器 代理服务 MIB

    • get-request 请求查询
    • get-next-request 请求查询
    • set-request 设置
    • get-response 对前边的三种报文进行响应
    • Agent上出现一些告警,会通过trap上报给网关,端口是162

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7GOSS8gz-1650091948104)(clipboard-202204151103-rvsdd.png)]

    四、SNMP的运行过程

    驻留在被管设备上的AGENT从UDP端口161接受来自网管站的串行化报文,经解码、团体名验证、分析得到管理变量在MIB树中对应的节点,从相应的模块中得到管理变量的值,再形成响应报文,编码发送回网管站。网管站得到响应报文后,再经同样的处理,最终显示结果。

    下面根据RFC1157详细介绍Agent接受到报文后采取的动作:

    首先解码生成用内部数据结构表示的报文,解码依据ASN.1的基本编码规则,如果在此过程中出现错误导致解码失败则丢弃该报文,不做进一步处理。

    第二步:将报文中的版本号取出,如果与本Agent支持的SNMP版本不一致,则丢弃该报文,不做进一步处理。当前北研的数据通信产品只支持SNMP版本1。

    第三步:将报文中的团体名取出,此团体名由发出请求的网管站填写。如与本设备认可的团体名不符,则丢弃该报文,不做进一步处理,同时产生一个陷阱报文。SNMPv1只提供了较弱的安全措施,在版本3中这一功能将大大加强。

    第四步:从通过验证的ASN.1对象中提出协议数据单元PDU,如果失败,丢弃报文,不做进一不处理。否则处理PDU,结果将产生一个报文,该报文的发送目的地址应同收到报文的源地址一致。

    根据不同的PDU,SNMP协议实体将做不同的处理:

    五、Snmp 的安装

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

    • snmpd:snmp服务端软件

    • snmp:snmp客户端软件

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

    1、安装这三个软件:

    sudo apt-get install snmpd snmp snmp-mibs-downloader
    
    

    2、安装成功状态检查:

    ## 查看状态
    sudo service snmpd status
    
    ## 测试看看服务是否正常
    root@apig:/usr/share/snmp# 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 apig 4.15.0-175-generic #184-Ubuntu SMP Thu Mar 24 17:48:36 UTC 2022 x86_64"
    
    ## 没有问题,有信息返回,那么接下来就直接进行各种配置了,不过在开始配置前先备份一下配置文件:
    root@apig:/etc/snmp# sudo cp snmpd.conf snmpd.conf.ori 
    root@apig:/etc/snmp# ls
    snmp.conf  snmpd.conf  snmpd.conf.ori
    
    
    root@apig:/etc/snmp# ls
    snmp.conf  snmpd.conf  snmpd.conf.ori
    
    root@apig:/usr/share/snmp# ls
    mib2c-data  mibs  snmpconf-data  snmp_perl.pl
    
    ## 注意:如果没有mibs,需要手动安装 `sudo download-mibs`
    需要注意的是,在安装snmp-mibs-downloader的过程中,程序会帮我们自动下载mib库,并保存在/usr/share/snmp/mibs目录中
    

    六、ubuntu配置 SNMPv2

    6.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服务,再使用命令观察一下:
    
    root@apig:/etc/snmp# sudo service snmpd restart
    root@apig:/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: 4194300
    
    

    OK,没有问题!不过需要注意的是,这里.1.3.6.1.4.1.2021.4.3.0表示的是LInux主机交换空间总量的一个节点,而输出4194300,就说明我们的主机上的交换空间总量大概就是4GB左右。

    6.2.配置MIB库

    虽然上面已经可以正常获取我们想要的信息,但是输出结果很不直观,这时我们配置一下MIB库就可以了,不过需要注意的是,这个配置是对客户端软件的配置(只不过现在还是在我的同一台服务器主机上进行操作)。

    修改/etc/snmp/snmp.conf配置文件,将下面这一行注释掉:

    # mibs :
    
    

    然后重启snmp服务,再通过命令观察:

    root@apig:/etc/snmp# sudo service snmpd restart
    root@apig:/etc/snmp# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4.3.0
    UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 4194300 kB
    
    ##  可以看到,现在的输出就非常直观了!这样之后,其实我们在获取相关节点信息时,也可以不用输入那一长串的数字了:
    root@apig:/etc/snmp# snmpwalk -v 2c -c public localhost memTotalSwap.0
    UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 4194300 kB
    root@apig:/etc/snmp# snmpwalk -v 2c -c public localhost memTotalReal.0
    UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 8142012 kB
    
    

    关于MIB库的节点值从哪里来,不需要去记,可以在网上找 https://blog.51cto.com/xpleaf/1757162

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

    6.2、配置共同体

    其实所谓共同体,把它理解为一个密码就行了,前面我们在使用snmpwalk命令获取主机的信息时,有一个-c public的参数,其实就是指定了这个共同体为public,这是默认的配置,当然在实际中,我们不可能使用默认的值,因此需要把它修改一下。

    修改配置文件/etc/snmp/snmpd.conf,大概在52行,将下面的两行:

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

    修改为:

    rocommunity   sunrj123  default    -V systemonly
    rocommunity6 sunrj123  default   -V systemonly
    

    那么这里就把共同体修改为sunrj123 了,重启snmp服务,通过命令观察一下:

    root@apig:/etc/snmp# snmpwalk -v 2c -c public localhost memTotalReal.0
    Timeout: No Response from localhost
    
    root@apig:/etc/snmp# snmpwalk -v 2c -c sunrj123 localhost memTotalReal.0
    UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 8142012 kB
    

    可以看到第一次获取信息不成功,因为我们已经更新了共同体,旧的public将不能再使用,否则认证失败就无法获取snmp提供的主机信息。

    6.4.允许远程主机访问

    默认情况下,snmp服务只是对本地开启,是无法通过远程获取该主机的snmp信息的:

    root@apig:/etc/snmp# sudo netstat -antup | grep 161
    udp        0      0 127.0.0.1:161           0.0.0.0:*                           19410/snmpd
    

    可以看到,161端口只对本机开放(161端口号是snmp服务的端口号),我们需要修改一下,让snmp服务对外开放。

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

    agentAddress  udp:127.0.0.1:161
    

    同时去掉下面这一行的注释:

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

    在这里插入图片描述

    重新启动snmp服务,再通过命令观察:
    
    root@apig:/etc/snmp# sudo service snmpd restart
    root@apig:/etc/snmp# sudo netstat -antup | grep 161
    udp        0      0 0.0.0.0:161             0.0.0.0:*                           19770/snmpd         
    udp6       0      0 ::1:161                 :::*                                19770/snmpd
    
    可以看到服务已经对外开放了,并且同时支持IPv4和IPv6。
    
        这样之后,我们就能在远程主机进行测试。
    

    7.(远程)测试

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

    我另一台远程主机上的操作系统也是Ubuntu 15.04,并且已经安装了snmp客户端软件和mib库下载软件,同时配置了MIB库,下面就直接进行远程的测试:

    xpleaf@leaf:~$ snmpwalk -v 2c -c sunrj123 115.159.*.* memTotalSwap.0
    UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 1950716 kB
    xpleaf@leaf:~$ snmpwalk -v 2c -c sunrj123 115.159.*.* memTotalReal.0
    UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 8093524 kB
    xpleaf@leaf:~$ snmpwalk -v 2c -c  sunrj123 115.159.*.* .1.3.6.1.4.1.2021.9.1.6.1
    UCD-SNMP-MIB::dskTotal.1 = INTEGER: 8123832
    
        可以看到,测试完全没有问题!并且获取的值和前面有服务器本地得到的一样。
    
        当然,如果你发现还是获取不了的,那么你就需要考虑一下在服务器的主机上防火墙的设置有没有问题了。
    

    七、、Ubuntu系统下 配置snmp v3

    SNMP v3版本主要添加了用户访问权限和加密通讯,下面给出SNMP v3添加用户流程:

    7.1 添加初始用户

    修改SNMP代理程序配置文件vi /etc/snmp/snmpd.conf,在最后一行添加初始用户bootstap

    ...
    createUser bootstrap MD5 temp_password DES
    

    其中认证方式支持:MD5(推荐)、SHA-1,加密方式支持:DES、AES。现在添加了用户初始用户bootstrap,下面步骤中会使用初始用户添加其他用户。添加用户后可以设置用户权限:rwuser读写用户、rouser只读用户。

    ...
    # priv指定用户必须加密传输
    # 可以在用户后面添加OID,限定用户访问指定的OID
    rwuser bootstrap priv
    rwuser demo priv
    

    7.2 使用初始用户添加普通用户

    在3.1节中定义了用户demo,但是没有添加。可以使用snmpusm命令添加

    # -l 指定安全级别,noAuthNoPriv(不认证不加密),authNoPriv(认证不加密),authPriv(认证加密)
    # -a 认证算法
    # -x 加密算法
    # -A 认证密码
    # -X 加密密码
    snmpusm -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address create demo bootstrap
    
    snmpusm -u bootstrap -l authPriv -a MD5 -x DES -A 12345678 -X 12345678 localhost:65000 create demo bootstrap
    User successfully created.		# 显示添加用户成功
    

    上面命令添加的用户demo认证和加密信息与用户bootstrap相同。可以使用如下命令修改用户认证密码,此密码至少为8位:

    snmpusm -u demo -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address passwd temp_password new_password
    
    snmpusm -u demo -l authPriv -a MD5 -x DES -A 12345678 -X 12345678 localhost:65000 passwd 12345678 123456789
    SNMPv3 Key(s) successfully changed.
    
    # 删除用户
    snmpusm -u demo -l authPriv -a MD5 -x DES -A 12345678 -X 12345678 localhost:65000 delete demo 
    User successfully deleted.
    

    7.3 SNMPv3管理服务访问

    可以使用以下命令访问:

    # -u 指定用户
    # agent_server_ip_address: 代理服务地址和端口
    snmpget -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address 1.3.6.1.2.1.1.1.0
    

    以上用户认证加密信息可以更方便地写到/etc/snmp/snmp.conf配置文件中:

    defSecurityName demo
    defSecurityLevel authPriv
    defAuthType MD5
    defPrivType DES
    defAuthPassphrase new_password
    defPrivPassphrase new_password
    
    命令行选项描述转换的 snmp.conf 指令
    -u usernameSNMPv3 用于认证的用户名defSecurityName username
    -l authPriv认证的安全等级defSecurityLevel authPriv
    -a MD5认证协议defAuthType MD5
    -x DES加密协议defPrivType DES
    -A passphrase指定用户的认证密码defAuthPassphrase passphrase
    -X passphrase指定用户的加密密码defPrivPassphrase passphrase

    配置好snmp.conf文件后,可以使用snmpget agent_server_ip_address sysUpTime.0访问SNMPv3代理。

    相关命令:
    –v:指定snmp的版本, 1或者2,该参数必须有。
    –c:指定连接设备SNMPSNMP读团体密码,该参数必须有。
    IP:指定要walk的设备的IP地址,该参数必须有。
    OID:代表要获取设备的指标oid,该参数不是必须的。

    snmpwalk -v 2c -c public localhost ipAddrTable
    
    snmpwalk -v 2c -c public localhost ipNetToMediaTable
    
    snmpwalk -v 2c -c public localhost ifTable
    
    snmpwalk -v 2c -c public localhost ifDescr.1
    
    snmpwalk -v 2c -c public localhost sysDescr
    
    snmpwalk -v 2c -c public localhost  ipNetToMediaPhysAddress.3.192.168.31.212
    
    snmpwalk -v 2c -c public localhost tcpConnState   //获取tcp连接状态
    
    snmpwalk -v 2c -c public localhost tcpConnLocalAddress
    
    snmpwalk -v 2c -c public localhost tcpConnLocalPort
    
    snmpwalk -v 2c -c public192.168.237.50 .1.3.6.1.4.1.2021.10.1.3 #监控cpuload
    snmpwalk -v 2c -c public 10.1.1.1 .1.3.6.1.2.1.25.2.2  取得系统总内存
    snmpwalk -v 2c -c public 10.1.1.1 hrSystemNumUsers  取得系统用户数(注意:hrSystemNumUsers与.1.3.6.1.2.1.25.1.5是等效的)
    snmpwalk -v 2c -c public 10.1.1.1 .1.3.6.1.2.1.4.20    取得IP信息
    snmpwalk -v 2c -c public 10.1.1.1 system   查看系统信息
    snmpwalk -v 2c -c public 10.1.1.1 ifDescr 获取网卡信息
    
    

    snmpwalk 是对应 key值;
    snmpget 是 对应 oid
    snmpwalk是对OID值的遍历(比如某个OID值下面有N个节点,则依次遍历出这N个节点的值。如果对某个叶子节点的OID值做walk,则取得到数据就不正确了,因为它会认为该节点是某些节点的父节点,而对其进行遍历,而实际上该节点已经没有子节点了,那么它会取出与该叶子节点平级的下一个叶子节点的值,而不是当前请求的节子节点的值。)
    snmpget是取具体的OID的值。(适用于OID值是一个叶子节点的情况)
    e.g.
    snmpwalk -v 2c -c 团体名 10.68.133.1 ifInDiscards
    snmpget -v 2c -c 团体名 100.80.32.23 1.3.6.1.2.1.1.5.0

    8、 SNMP Trap

    SNMP Trap 是 SNMP 的一部分,当被监控段出现特定事件,可能是性能问题,甚至是网络设备接口宕掉等,代理端会给管理站发告警事件。假如在特定事件出现的时刻,不是由 Agent 主动通知 NMS,那么 NMS 必须不断地对 Agent 进行轮询。这是非常浪费计算资源的方法,正如人们用中断通知 CPU 数据的到达,而不是让 CPU 进行轮询一样。Trap 通知是更加合理的选择。

    用一句话来说的话,SNMP Trap 就是被管理设备主动发送消息给 NMS 的一种机制trap的作用是,当设备(路由器)的出现问题的时候,可以向服务器传报消息

    实现SNMP Trap的流程
    ◆SNMP Trap接收服务一直在端口162等待着请求,一旦接受任何请求,将发给SNMP Trap翻译。

    ◆通过MIB库的已知设备信息,SNMP Trap将会尽可能翻译Varbind的信息。

    ◆通过可配置的业务规则,可决定如何处理或者丢弃告警。

    ◆把产生的告警展现在事件管理,并且能产生相关的报警,提醒相关IT管理员。

    ◆如果事件与工单有绑定,可以触发相关工单。

    ◆系统管理员也可以通过不同格式的文件,导入新的设备信息进入Mocha BSM的MIB库。

    关键功能亮点

    ◆事件驱动,***时间收到设备故障告警

    ◆提供SNMP Trap的接收,并通过对Trap信息翻译,展现事件

    ◆支持SNMP Trap的接收规则定义,过滤无用Trap信息

    ◆接收来自第三方管理软件SNMP Trap信息,或向第三方管理软件发送Trap信息,达到整合效果

    ◆定制SNMP Trap告警规则触发告警,提供多种方式发送告警信息

    ◆支持事件导出

    ◆支持各类设备厂家MIB库的导入

    snmptrap的发送与接收

    首先是管理方,需要先配置snmptrapd.conf,可以将之放在与snmpd.conf同一个路径下(/etc/snmp/snmptrapd.conf)

    配置snmptrapd.conf:

    # 其中authcommunity是为了设置所有用户的访问权限:可执行,记录,传递。
    # 设置traphandle(即收到.1.3.6.1.4.1.2021.251.1类OID信息时,执行test.pl)。
    authcommunity execute,log,net public
    
    traphandle .1.3.6.1.4.1.2021.251.1 /root/traptest/test.pl
    
    

    test.pl:

    #!/usr/bin/perl
    
    use strict;
    
    my $file="file.trap";
    
    open(HANDOUT,">>./$file");
    
    while()
    
    {
    
    print HANDOUT "$_";
    
    }
    

    将此配置文件设置为默认配置文件,并启动snmptrapd进程:

    snmptrapd -c /etc/snmp/snmptrapd.conf
    

    监听并接收trap:

    snmptrapd -d -f -Lo
    

    在受管方,使用命令:

    snmptrap -v 2c -c  sunrj123 10.2.2.127:162 "" .1.3.6.1.4.1.2021.251.1 sysLocation.0 s "this is test"
    

    而后在管理方会接收到如下信息:
    在这里插入图片描述

    团队名:

    团体名:communitystring。缺省是public,但一般为了安全起见,设备管理者都会改成自己的,相当于密码,用户不可能看到。

    Trap的发送与接收java实现

    package com.koal.service.alert;
    
    import org.snmp4j.*;
    import org.snmp4j.event.ResponseEvent;
    import org.snmp4j.mp.SnmpConstants;
    import org.snmp4j.smi.Address;
    import org.snmp4j.smi.GenericAddress;
    import org.snmp4j.smi.OctetString;
    import org.snmp4j.smi.VariableBinding;
    import org.snmp4j.transport.DefaultUdpTransportMapping;
    
    import java.io.IOException;
    
    /**
     * 本类用于发送Trap信息
     *
     */
    public class SnmpUtil {
    
        private Snmp snmp = null;
    
        private Address targetAddress = null;
    
        private TransportMapping transport = null;
    
    
        public static void main(String[] args) {
    
            SnmpUtil poc = new SnmpUtil();
    
            try {
                poc.init();
    
                //poc.sendV1Trap();
    
                poc.sendV2cTrap();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
        public void init() throws IOException {
            //目标主机的ip地址 和 端口号
            targetAddress = GenericAddress.parse("udp:127.0.0.1/162");
            transport = new DefaultUdpTransportMapping();
            snmp = new Snmp(transport);
            transport.listen();
        }
    
    
        public ResponseEvent sendV1Trap() throws IOException {
            PDUv1 pdu = new PDUv1();
            VariableBinding v = new VariableBinding();
            v.setOid(SnmpConstants.sysName);
            v.setVariable(new OctetString("SnmpV1 Trap  Test"));
            pdu.add(v);
            pdu.setType(PDU.V1TRAP);
    
            // set target
            CommunityTarget target = new CommunityTarget();
            target.setCommunity(new OctetString("public"));
            target.setAddress(targetAddress);
            // retry times when commuication error
            target.setRetries(2);
            // timeout
            target.setTimeout(1500);
            target.setVersion(SnmpConstants.version1);
            // send pdu, return response
            return snmp.send(pdu, target);
        }
    
        public ResponseEvent sendV2cTrap() throws IOException {
    
            PDU pdu = new PDU();
            VariableBinding v = new VariableBinding();
            v.setOid(SnmpConstants.sysName);
            v.setVariable(new OctetString("SnmpV2 Trap"));
            pdu.add(v);
            pdu.setType(PDU.TRAP);
    
            // set target
            CommunityTarget target = new CommunityTarget();
            target.setCommunity(new OctetString("koal123"));
            target.setAddress(targetAddress);
    
            // retry times when commuication error
            target.setRetries(2);
            target.setTimeout(1500);
            target.setVersion(SnmpConstants.version2c);
            // send pdu, return response
            return snmp.send(pdu, target);
    
        }
    
    }
    

    参考文章:https://blog.csdn.net/weixin_42551921/article/details/117479344

    展开全文
  • 具体见解如下:首先需要安装SNMP,请参阅LINUX系统SNMP安装说明,一般情况下Linux中 的均已经自动安装了SNMP服务。以下命令可以检测SNMP服务是否安装以及安装的文件包。然后需要配置SNMP,需要按照如下方式修改/etc/...

    对SNMP进行安装和配置即可。

    具体见解如下:首先需要安装SNMP,请参阅LINUX系统SNMP安装说明,一般情况下Linux中 的均已经自动安装了SNMP服务。以下命令可以检测SNMP服务是否安装以及安装的文件包。

    然后需要配置SNMP,需要按照如下方式修改/etc/snmp/snmpd.conf文件

    修改默认的community string(SUM中SNMP读值密码),找到com2sec notConfigUser default public代码,将public修改为你才知道的字符串。然后把下面的#号去掉,#view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc。之后把

    access notConfigGroup "" any noauth exact systemview none none

    改成:

    access notConfigGroup "" any noauth exact mib2 none none

    或是:

    access notConfigGroup "" any noauth exact all none none

    然后启动与停止SNMP

    一般使用:service snmpd start|stop|restart命令。或是:

    #/etc/rc.d/init.d/snmpd restart

    最后防火墙进行设置即可。如果Linux启动了防火墙,请开放UDP的161端 口。确保Linux的iptables防火墙对SUM监控服务器开放 了udp 161端口的访问权限。可编辑/etc/sysconfig/iptables文 件来修改iptables规则。

    linux怎么安装snmp服务器配置

    使用SNMP服务前需要在服务器上安装SNMP:

    使用ROOT用户登陆在服务器,输入:

    yum install net-snmp net-snmp-devel net-snmp-libs net-snmp-utils php-snmp

    进行下载。

    上面的程序首先会校验需要升级的文件和需要下载安装的文件,然后列来,告诉你有多大,会提示您是不是这些,需要继续不,输入Y,就开始下载了。

    下载完成后,会自动解包安装,整个过程是自动的,无需要人工操作。安装完成没有错误会提示:Complete!

    安装完SNMP服务后,就需要进行相关配置了,SNMP的配置文件在:

    yum安装snmpd的配置文件为 /etc/snmp/snmpd.conf

    如果您不会在命令模式下使用vi编辑器的话,建议把snmpd.conf配置文件下载到本地,然后用UE等文本编辑软件打开编辑更改。

    如何在Windows服务器上开启SNMP服务

    Windows上开启SNMP代理程序以及进行安全配置的操作比较简单,这里以Windows Server 2003为例,对于其它Windows服务器产品,方法类似。

    第一步:确认当前的Windows组件中是否已经安装了SNMP协议 点击控制面板的“添加或删除Windows组件”,在“管理和监测工具”中查看详情,可看到“简单网络管理协议(SNMP)”。 如果没有安装,则需要对其进行安装,期间需要定位Windows安装盘中的i386文件夹。下载。

    第二步:配置SNMP Service

    打开 “管理工具”找到“服务”中的SNMP Service,双击它进行配置。 注意:安装SNMP协议后,SNMP Service会默认启动;SNMP Trap Service是不需要开启的,如果它已被开启,请关闭它。

    在SNMP Service的配置窗口中,你只需要切换到“安全”选项卡,按照以下的图示进行填写。 团体名字是SNMP v2c版本中的密码字符串。下图中的“qycn”只是一个例子,可以填写其它的字符串,随后在小蜜蜂监测后台添加服务器时,选择2c协议,同时在Community输入框中填写这个团体名称即可。 授权主机:选择“接受来自这些主机的SNMP数据包”,然后添加“221.5.47.27 、125.90.88.155”这2个IP,这是小蜜蜂监测的专用监测点,除此之外其它服务器无法获取你的服务器监测信息,安全有保障!

    一切配置好后,保证SNMP Service已经开启,如果以后重启了服务器,也请检查是否开启了SNMP Service;保证服务器已经打开了SNMP Service的端口,默认为UDP 161。 如果你启用了系统防火墙,那么请添加这个例外端口,打开本地连接->属性->高级->防火墙->例外,

    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|grep snmp

    检查是否安装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|grep libsen

    检查是否安装libsensors3-2.10.6-55.el5

    使用命令:$ rpm -qa|grep lm

    检查是否安装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|grep snmp,检查是否已经安装成功。

    YUM 安装

    1 yum install -y net-snmp net-snmp-utils

    3、启动snmp服务

    若安装成功,则可使用命令:

    $ service snmpd start

    提示:Starting snmpd: [ OK ],则启动snmp服务成功。

    你可以将snmp服务设置为开机自启动,这样免去手动启动的麻烦。

    使用命令:$ chkconfig snmpd on,将snmpd服务设为开机自启动。

    然后使用命令:$ chkconfig --list | grep snmpd,查看是否已经设置成功。

    4、验证snmp服务

    (1)使用snmpwalk命令,查看本机localhost的主机名:

    如上,获取到本机主机名为Oracle.domain.com,则表示snmp服务已经可以正常使用。

    (2)使用snmptranslate命令,检查snmp工具是否可以使用:

    如上,查出了部分oid,则表示snmp工具可以正常使用。

    (3)测试远端主机是否可以获取数据。

    我这里登陆了另外一台Linux主机,该主机也按照上面的步骤安装好snmp服务及snmp工具。通过这台主机,获取远端主机的数据,这时需指定远端主机的IP地址:

    如上,可以看到通过远端主机获取到的主机名,与在本机获取到的主机名是一致的。

    二、配置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和内存等设备都不在这些节点下,所以无法获取这些数据。

    因此,可以修改这个配置,如下:

    在此处添加了一行:

    view systemview included .1

    表示可以查看.1节点下的所有设备信息。

    2、修改Process checks的配置

    找到如下位置:

    # proc mountd

    # proc ntalkd 4

    # proc sendmail 10 1

    三行前的“#”号去掉,取消注释,结果为:

    3、修改Executables/scripts配置

    找到如下位置:

    #exec echotest /bin/echo hello world

    一行前的“#”号去掉,取消注释。

    4、修改disk checks配置

    找到如下位置:

    #disk / 10000

    一行前的“#”号去掉,取消注释。

    5、修改load average checks配置

    找到如下位置:

    将 #load 12 14 14

    一行前的“#”号去掉,取消注释。

    6、保存修改,重启snmp服务

    7、验证修改配置后的snmp服务

    如上,通过本机localhost获取到CPU的空闲率为97%。

    如上,通过远端主机获取到CPU的空闲率为93%。

    怎么测试snmp服务器代理

    测试snmp服务器代理,需要用SNMPWALK。

    网络扫描分析(SnmpWalk) 用于在某些设备上阅读的变量SNMP 是一种统一的网络监控和网络设备管理协议。

    1、如果对方的SNMP服务开启,工作正常的话,就会列出SNMP查询的数据。

    2’如果不正常工作或者未开启,则提示查询超时。

    具体使用例子如下:

    在DOS下,输入:

    snmpwalk -c 【SNMP字串】 -v 【1|2c】 【IP地址】

    例如:

    snmpwalk -c public -v 2c 192.168.1.1

    展开全文
  • 1.snmptrap与snmptt工作关系 1)snmptrapd 收到网络设备所发出的trap 2)snmptrapd将trap的信息传递给SNMPTT或调用Perl接收器,安装是直接默认即可 3)snmptt或Perl trap接收器信息解析,格式化并将trap写入到指定...
  • snmp trap配置

    万次阅读 2016-12-23 12:03:11
    一、trap的用途 TRAP是提供从代理进程到管理站的异步报告机制。 为了使管理站能够及时而又有效地对被管理设备进行监控,同时又不过分增加网络的通信负载,必须使用陷入(TRAP)制导的轮讯过程。代理进程负责在必要...
  • zabbix接收trap的工作流程:snmptrapd 收到trapsnmptrapd将trap传递给SNMPTT或调用Perl接收器SNMPTT或Perl trap接收器解析,格式化并将trap写入文件Zabbix SNMP trap读取并解析trap文件对于每个trap,Zabbix发现主机...
  • yum 安装snmp(前提本机虚拟机能连网) 先查看本机是否安装snmp rpm -qa|grep snmp 如果存在自带的,可以删掉 yum -y remove xxx(xxx代表rpm查到的软件包) 安装 yum -y install net-snmp-* (安装所有) 启动 ...
  • Linux Ubuntu SNMP配置

    2021-05-12 11:32:39
    Ubuntu 12.04下的SNMP配置:root@Ubuntu:~#sudo apt-get install snmp snmpd /*安装snmp服务*/root@Ubuntu:~#vi /etc/snmp/snmpd.conf /*编辑snmp配置文件*/在这里使用默认团体名public,实际环境中建议更改。...
  • 学习snmplinux中配置的时候在网上找的一点能用的资料,由于直接引用分享,所以只能直接复制了,原文网址:http://hi.baidu.com/waiting_hzqh/blog/item/71df3dd131df42c951da4b8a.html我要谢谢这位哥们,网上关于...
  • 一、SNMP概述: 简单的网络管理协议(SNMP-Simple Network Management Protocol)是一个与网络设备交互的简单方法。该规范是有IETF在1990 年五月发布的RFC 1157中定义的。 目前有SNMPv1、SNMPv2、SNMPv3三种正式版本...
  • 因为有些服务器(路由器、交换机等都是基于snmp协议的)必须使用snmp协议去监控采集和接收信息,所以必须去了解snmp相关内容,以及如何在基于java上开发。关于了解snmp相关内容,必看《SNMP简单网络管理协议》这本书...
  • snmp trap的162端口down解决方法

    千次阅读 2020-06-16 13:58:58
    电脑是WIN10的系统,进行snmp trap的测试发现,162端口down掉了 1.cmd打开命令提示符窗口 查看UDP端口占用用命令netstat-ano,发现没有162的端口被占用 2.service里没有看到snmp安装 1)打开设置中的[开发人员...
  • 华为华三开启snmp服务

    千次阅读 2020-09-25 13:58:06
    华为华三开启snmp服务 什么是SNMP: Snmp也叫简单网络管理协议,是专门用于IP网络管理的,可用于监控设备的各种信息,如:CPU使用率,内存,流量带宽等,是一款应用层的协议。 Snmp能够使网络管理人员发现并及时的...
  • SUSE LINUX设置SNMP

    2020-12-30 18:40:13
    在运行支持的 SUSE Linux Enterprise Server 操作系统的系统中配置 SNMP 代理Server Administrator 使用 ucd-snmp 或 net-snmp 代理提供的 SNMP 服务。 可配置 SNMP 代理以启用从远程主机进行 SNMP 访问,更改团体...
  • # 开启snmp snmp-agent # 配置端口 snmp-agent udp-port 161 # 设置snmp版本 snmp-agent sys-info version v2c # 设置设备联系方式 snmp-agent sys-info contact 0379-12345678 # 设置设备地址 sn
  • linux配置snmp v2

    千次阅读 2016-12-23 11:21:08
    转载自:http://blog.chinaunix.net/uid-451-id-3337559.html 1 安装 常用工具用包安装就行了 yum install net-snmp-utils net-snmp ...vi /etc/snmp/snmpd.conf rocommunity public rwcom
  • snmp V3的方式设置简单,而且安全性更高。配置方法:1.停止snmpd服务#service snmpd stop2.增加snmpv3用户,并设置认证以及加密方式# ...
  • Linux Snmp安装

    2021-05-14 22:53:18
    8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?什么是SNMPSNMP:“简单网络管理协议”,...设备需要在重要状况改变的时候,向管理员通报事件的发生,所以SNMP提供了“Trap”操作。查...
  • SugarNMSTool是带拓扑图界面的全功能SNMP工具,软件免安装,无数据库,可在Windows、Linux、Unix系统上快速运行。工具由大型SugarNMS智和网管平台的精华功能精简而成。。相关软件软件大小版本说明下载地址...
  • net-snmp 安装与trap调试

    千次阅读 2018-03-07 17:41:04
    net-snmp的安装与测试 ... 了解snmp-trap的接受与解析,实验当相关trap发生时,对应的服务器立即响应 TRAP是提供从代理进程到管理站的异步报告机制 snmp(简单网络管理协议)为了使服务端及时...
  • Linux配置snmp

    2019-03-01 14:35:00
    机器环境 [root@linux-node1 ~]# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) [root@linux-node1 ~]# hostname linux-node1.nmap.com ...安装net-snmp等工具 [roo...
  • snmptrap关闭public验证

    2014-04-25 11:06:00
    X疼的需求,碰到了EMC的存储和华为的一个网络设备,无法抓取硬件的状态信息,但是硬件管理程序上都有一个配置snmptrap发送一些硬件的报警信息 需求: 可以使用这些存储上自带的snmptrap功能获得一些信息这些信息...
  • 我因为网上的文章走了很多弯路,这里如果只是做监听,不需要开启SNMP服务,只需要看下面的代码即可,如果是发出告警是需要开启SNMP服务的。 实现时有以下几个问题需要注意: 1.VMware中配置的SNMP接收方IP和端口,...
  • snmp监控linux1、安装snmp相关包yum install -y net-snmp2、修改配置文件vi /etc/snmp/snmpd.conf (加入如下)#固定配置指令 自定义安全体名称 允许访问的地址,default默认为全部允许 自定义共同体或社区名称...
  • Zabbix5.0 SNMP的配置以及使用SNMP监控数通设备。
  • SNMP 服务启用方法

    2020-12-21 13:50:25
    SNMP 服务启用方法1服务器启动SNMP服务方法1.1HPUX 启用 SNMPHPUX 默认是开启 snmp 服务的,但是出于安全考虑,我们需要修改 snmp服务的社区(community)名称,步骤如下:打开 /etc/snmpd.conf 文件,将 get-...
  • 服务器安装部署SNMP服务及测试记录 应用场景 测试环境:deepin20.4 ...SNMP分为管理端和代理端(agent),管理端的默认端口为UDP 162,主要用来接收Agent的消息如TRAP告警消息;Agent端使用UDP 161端口接收管理端下
  • firewalld Linux下有几种方式对网卡上的流量进行过滤,一种是firewalld,一种是iptables。 firewalld是防火墙,可以设置可信任的...1. 开启服务 firewalld一般是Linux下的自带服务,可以通过systemctl启动。 首先查

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 855
精华内容 342
关键字:

linux开启snmptrap