精华内容
下载资源
问答
  • SNMP TRAP实战
    千次阅读
    2020-09-07 16:42:44

    一、什么是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 trap例子 源码

    2021-04-17 10:47:37
    vc++ snmp trap例子 源码
  • SNMP TRAP消息其实就是UDP报文,TRAP服务器就是UDP服务器(即接收方,UDP端口为162),发送TRAP消息的其实就是UDP客户端。 本demo包含TRAP接收的服务器和发送TRAP消息的UDP客户端两个部分,基于SnmpSharpNet做的,...
  • Java使用SNMP4J实现snmp trap接口发送消息_20170808_LK
  • snmptrap.zip

    2019-07-30 18:25:56
    WINDOWS下SNMP TRAP接收调试软件,可显示TRAP信息列表和TRAP信息的编码内容,非常适合嵌入式SNMP协议开发者使用。
  • NULL 博文链接:https://jyao.iteye.com/blog/357216
  • SNMPTrap.exe

    2020-05-07 11:38:43
    SNMP Trap 接收工具,可以在windows 10 上运行,亲测可用,不需要安装dll,打开即可用。
  • SNMPTRAP

    千次阅读 2019-04-24 18:55:57
    SNMP协议是用来管理设备的协议,目前SNMP已成为网络管理领域中事实上的工业...但由于告警信息一般是由受管服务器进行主动告警,这时候就不能通过管理方主动使用snmpget来进行,而是由受管服务器通过SNMPTRAP进行。...

    SNMP 协议是用来管理设备的协议,目前SNMP已成为网络管理领域中事实上的工业标准,并被广泛支持和应用,大多数网络管理系统和平台都是基于SNMP的。如果 NMS( 网管系统 ) 需要查询被管理设备的状态,则需要通过 SNMP的get 操作获得设备的状态信息。但由于告警信息一般是由受管服务器进行主动告警,这时候就不能通过管理方主动使用snmpget来进行,而是由受管服务器通过SNMPTRAP进行。

    一、什么是SNMPTRAP

    SNMP trap(SNMP 陷阱):某种入口,到达该入口会使SNMP被管设备主动通知SNMP管理器,而不是等待SNMP管理器的再次轮询。

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

    二、SNMPTRAP功能特点

    1、事件驱动,第一时间收到设备故障告警 

    以事件为驱动,由被监控的主机、网络设备、应用在发生故障时向NMS发送SNMP Trap,通过对接收到的SNMP Trap进行翻译和展现,以最快速度向管理人员发送告警。SNMP Trap不同于SNMP的主动采集,SNMP采集服务器按照固定的时间间隔,由网管系统以询问的方式,采集被监控端性能指标,因此发现被监控端性能问题的快慢取决于采集的频率间隔。而SNMP Trap是以事件为驱动,在被监控端设置陷阱,一旦被监控端设备出现相关问题,立刻发送SNMP Trap,因此能够在最短的时间内发现故障,避免因为设备故障带来的经济损失。 

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

    支持设备,主机和应用的SNMP Trap信息,从被动变为主动,全面监控IT系统。通过对SNMP Trap的翻译和展现,一旦某个IT组件出现问题,可以在短时间之内,即可收到故障信息,满足企业的快速发现问题的需要。
    通过SNMP Trap的接收规则定义,管理员可以过滤非重要设备的Trap信息,也可以过滤被监控设备的非重要故障信息,帮助管理员在第一时间收到真正需要的管理信息。 

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

    用户通过管理端定制需要告警的SNMP Trap信息,针对特定SNMP Trap事件通过邮件、短信、语音、微信等方式向相关人员发送报警,帮助管理人员快速收到IT系统故障信息。 

    4、支持事件导出

    汇总特定时间内特定SNMP Trap事件,同时可以以Excel格式导出事件数据,便于管理人员对故障信息进行统计和分析。 

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

    虽然国内各种网络设备都支持SNMP Trap,但是各个厂家的MIB库并不能很好的支持公共标准,因此,很多监控系统都支持私有MIB库的导入,确保能够全面兼容各个厂家设备的SNMP Trap信息。 

     

    三、SNMPTRAP工作流程

    1、Agent端

    A、编写MIB文件,确定好TRAP名称等信息(一般MIB设备厂商会提供)
    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对应到不同的处理程序上

    3、流程图
     
    图中在测试机 M1 上启动 snmptrapd 进程,并且在 UDP 162 端口上监听 SNMP Trap 信息,一旦收到 Trap,snmptrapd 将所接收到的 Trap 信息内容打印到一个本地的文本文件中。 机器 M2 模拟发送 SNMP Trap 的设备,将调用 net-snmp 的命令行程序 snmptrap 发送一个 Trap。

     

    四、SNMPTRAP在ZABBIX上实现过程

    1、设置ZABBIX接收SNMP Trap

    1)、安装依赖的程序包
    yum install -y net-snmp-utils net-snmp-perl

    2)、下载和解压Zabbix源码包
    tar -zxvf zabbix-2.2.1.tar.gz

    3)、从源码文件中复制脚本和添加执行权限
    cp ./zabbix-2.2.1/misc/snmptrap/zabbix_trap_receiver.pl /usr/binchmod +x /usr/bin/zabbix_trap_receiver.pl

    4)、设置Trap接收器和团体名称
    vi /etc/snmp/snmptrapd.conf
    # you can set multiple community names:
    # authCommunity execute public
    # authCommunity execute S7di@kjh8
    authCommunity execute public
    perl do "/usr/bin/zabbix_trap_receiver.pl"

    5)、编辑zabbix_server.conf配置文件启用SNMP Trap
    vi /etc/zabbix/zabbix_server.conf
    StartSNMPTrapper=1
    SNMPTrapperFile=/tmp/zabbix_traps.tmp (注:必须跟zabbix_trap_receiver.pl脚本中设置的相同)

    6)、重启zabbix_server服务使配置生效
    /etc/init.d/zabbix-server restart

    7)、设置SNMP MIBs
    MIBs默认在系统目录/usr/share/snmp/mibs下,添加MIB名称到/etc/snmp/snmp.conf配置文件中(如果不存在则手动新建配置文件),它们将被Net-SNMP进程用来解析trap OID值。
    例:mibs +JUNIPER-MIB:JUNIPER-FABRIC-CHASSIS:BGP4-MIB

    8)、重启snmptrapd服务
    /etc/init.d/snmptrapd restart

    2、配置ZABBIX

    1)、创建"SNMP trap fallback"模板和"SNMP trap fallback"监控项:
    监控项名称:SNMP trap fallback
    类型:SNMP trap
    键值:snmptrap.fallback
    数据类型:Log
    注:该监控项用来收集所有不匹配的trap

    2)、创建触发器以通知管理员关于新的不匹配trap:
    触发器名称: Unmatched SNMP trap received from {HOST.NAME}
    表达式: {Template SNMP trap fallback:snmptrap.fallback.nodata(300)}=0

    3)、创建"Template SNMP traps"模板并链接到"Template SNMP trap fallback"
    在"Template SNMP traps"模板中,为trap创建需要的监控项. key值使用snmptrap[regex]格式,
    例:
    Key: snmptrap["SNMPv2-MIB::coldStart"]
    替代OID值(数字或文本),您可以使用任何从一个trap文本中的单词/短语:
    Key: snmptrap["No route to host"]
    在这种情况下,Zabbix从匹配的地址中捕获所有SNMP Trap包含"No route to host"。

    4)、为监控项创建触发器
    在前面创建的模板,为必要的项目(Trap)创建触发器.
    这里涉及一些变量,以前面例子中的监控项为例创建触发器:
    表达式:
    {Template SNMP traps:snmptrap["SNMPv2-MIB::coldStart"].nodata(5m)}=0
    意思是如果5分钟后,trap接收和自动返回OK状态,则触发器进入警告状态

    5)、查看ZABBIX获取到的数据
     
    五、总结

    SNMP Trap是一种事件驱动型的监控方式,避免了监控系统的资源浪费,提高了警告的及时性和准确性。目前很多监控系统都提供SNMP Trap的监控方式,主动型监控是比较推荐的选择方式。

     

    #######################################

    转自:https://bbs.csdn.net/topics/391964541?page=1

    展开全文
  • snmp trap 接收

    2014-09-12 22:30:33
    snmp trap 接收
  • SNMP Trap Translator-开源

    2021-05-03 04:51:42
    SNMP陷阱转换器用于将从NET-SNMP / UCD-SNMP snmptrapd陷阱守护程序收到的陷阱“转换”为易于理解的消息。
  • SNMP Trap Collector-开源

    2021-05-03 16:35:41
    SNMP陷阱收集器会将所有传入的SNMP陷阱保存到SQL数据库(当前为PostgreSQL),然后将其转换为人类可读的“事件”,可以通过Web浏览器对其进行查看和确认。 正在计划支持基于se的通知
  • 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陷阱,将其转换为CORBA结构化的事件,然后将其推送到CORBA Notification Service。 该程序结合了JacORB,Java SNMP,log4j和Wrapper(用于将Java应用程序安装为NT服务)。
  • snmp trap日志

    千次阅读 2020-12-01 17:48:01
    日志类型有三种,file,syslog和snmp trap snmptrapd.conf 文件内容及参数 snmptrapd手册:http://www.net-snmp.org/docs/man/snmptrapd.conf.html,http://www.net-snmp.org/wiki/index.php/Snmptrapd 中文翻译...

    SNMP是网络管理领域中事实上的工业标准,并被广泛支持和应用,大多数网络管理系统和平台都是基于SNMP的。SNMP采用UDP协议在管理端和agent之间传输信息, SNMP采用UDP 161端口接收和发送请求,162端口接收trap。 

    网络管理中常用来采集日志数据的方式包括文本方式采集、SNMP Trap方式采集和syslog方式采集等,特殊应用也有一些其他采集方式,如Telnet 采集(远程控制命令采集)、RSR232串口采集等。其中,syslog是最基础最通用的日志方式,对于网络设备,还常使用snmp trap方式产生和收集日志。本文主要介绍snmp trap方式的日志采集及如何转换为syslog日志。

    一、SNMP相关概念

    1. MIB与OID

    SNMP系统包括网络管理系统NMS(Network Management System)、代理进程Agent、被管对象Management object和管理信息库MIB(Management Information Base)四部分组成。

    MIB文件中的变量使用的名字取自ISO和ITU管理的对象标识符(object idenTIfier)名字空间。它是一种分级树的结构。如图所示,第一级有三个节点:ccitt、iso、iso-ccitt。低级的对象ID分别由相关组织分配。一个特定对象的标识符可通过由根到该对象的路径获得。一般网络设备取iso节点下的对象内容,例如名字空间ip结点下名为ipInReceives的MIB变量被指派数字值3,该变量的名字为:iso.org.dod.internet.mgmt.mib.ip.ipInReceives,数字表示(对象标识符OID)为:1.3.6.1.2.1.4.3,当网络管理协议在报文中使用MIB变量时,每个变量名后还要加一个后缀,以作为该变量的一个实例。如ipInReceives的实例数字表示为:1.3.6.1.2.1.4.3.0.  。

    snmp协议详解
    MIB树结构

    进一步,下图给出了NMS系统中SNMP可访问网络设备的对象识别树(OID:Object Identifier)结构。

     

    mib3
    对一个DS1线路状态进行查询的OID设置例子

    2. SNMP的五种消息类型

      SNMP中定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、Set-Request、Trap

    See the source image
    SNMP 五种操作原语及Trap

    3. NET-SNMP与snmp trap

    NET-SNMP 是一种开放源代码的 SNMP 协议实现。它支持 SNMP v1, SNMP v2c 与 SNMP v3,并可以使用 IPV4 及 IPV6 。在 Linux 系统中,net-snmp 是最常用的 SNMP 软件包。Net-snmp 包含了 snmp 实用程序集和完整的 snmp 开发,也包含 SNMP Trap 的所有相关实现。主要提供的命令有:snmpwalk、snmpget、snmpgetnext、snmptrap等,参考https://blog.csdn.net/weixin_30527323/article/details/95253462

    •  一些应用程序可以用来从支持 SNMP 的设备获得数据。其中 snmpget, snmpgetnext 可以支持独立请求,snmpwalk, snmptable, snmpdelta 则用来支持重复请求。
    • snmpset 对支持 SNMP 的设备配置属性。
    • 命令 snmpdf, snmpnetstat, snmpstatus 可以从支持 SNMP 的设备获取特定的信息。
    • snmptranslate 命令将 MIB OIDs 的两种表现形式 ( 数字及文字 ) 相互转换。并显示 MIB 的内容与结构
    • 回应 SNMP 查询的客户端 snmpd. 它集成了大量 SNMP 的模块 . 并可通过动态链接库 , 外部脚本与命令 , 多路 SNMP 技术 (SMUX), 以及可扩客户端协议 (AgentX) 进行扩展 .
    • 接收 SNMP traps 的守护程序 snmptrapd。可以将选定的 SNMP 消息记录到系统日志 syslog,NT 事件日志,或者文本文件中。或是转发到其它的 SNMP 管理程序 , 也可以传给外部的应用程序。

    snmpwalk [APPLICATION OPTIONS] [COMMON OPTIONS] [OID]   #用来取得所有类识别代码 (OID, Object Identifier),取得类为从根类 (root) 开始的全部 MIB 类。
    
    #实例
    snmpwalk -v2c -c public  localhost .1.3.6.1.2.1.1
      -v2c:     使用的是2c的snmp版本,可选1|2c|3
      -c public:community 名为public
      localhost: 代理的地址,这里因为代理运行在本机上,所以可用localhost
      .1.3.6.1.2.1.1:这里查询的是.iso.org.dod.internet.mgmt.mib-2.system,其Oid为.1.3.6.1.2.1.1,
    #其Oid也可使用名称具体操作如下:
    snmpwalk -v2c -c public  localhost system
    #或:
    snmpwalk -v2c -c public  localhost .1.3.6.1.2.1.1

    实例:

    snmpget [OPTIONS] AGENT OID [OID]  #用来查询叶子节点
    
    #实例:使用这个命令使叶子节点要在后面加.0。可后面查询多个OID期间用空格分开
    snmpget -v2c -c public localhost .1.3.6.1.2.1.1.5.0
    
    #其Oid也可使用名称具体操作如下:
    snmpget -v2c -c public localhost .1.3.6.1.2.1.1.5.0
    
    #返回信息如下:
    SNMPv2-MIB::sysName.0 = STRING: ubuntu
    snmpget -v2c -c public localhost sysName
    SNMPv2-MIB::sysName.0 = STRING: ubuntu

    4. snmp trap与日志采集

    SNMP TRAP是基于SNMP MIB的,因为SNMP MIB 是定义了网络设备都有哪些信息可以被收集,哪些trap的触发条件可以被定义,只有符合TRAP触发条件的事件才被发送出去。SNMP中,get/set 操作都是从 NMS 发送到被管理设备的。但SNMP Trap 就是被管理设备主动发送消息给 NMS 的一种机制。SNMP Trap 是 SNMP 的一部分,当被监控段出现特定事件,可能是性能问题,甚至是网络设备接口宕掉等,代理端会给管理站发告警事件。

    生成Trap消息的事件(如系统重启)由Trap代理内部定义,而不是通用格式定义。由于Trap机制是基于事件驱动的,代理只有在监听到故障时才通知管理系统,非故障信息不会通知给管理系统。对于该方式的日志数据采集只能在SNMP下进行,生成的消息格式单独定义,对于不支持 SNMP设备通用性不是很强。通过对 SNMP 数据报文中 Trap 字段值的解释就可以获得一条网络设备的重要信息,由此可见管理进程必须能够全面正确地解释网络上各种设备所发送的Trap数据,这样才能完成对网络设备的 信息监控和数据采集。

    相对syslog而言,SNMP由于网络结构和网络技术的多样性,以及不同厂商管理其网络设备的手段不同,既要能够正确解释公有 Trap,更要保证对私有 Trap 完整正确的解析和应用。导致snmptrap方式面对不同厂商的产品采集日志数据方式需单独进行编程处理,且要全面解释所有日志信息才能有效地采集到日志数据。 由此可见,该采集在日常日志数据采集中通用性要弱于syslog。

    前面介绍Net-snmp中,Net-snmp提供了接收 SNMP traps 的守护程序 snmptrapd(配置文件/etc/snmp/snmptrapd.conf),snmptrapd格式如下:

    snmptrapd [OPTIONS] [LISTENING ADDRESSES]  
    
    -L[efos]
        Specify where logging output should be directed (standard error or output, to a file or via syslog). 

    snmptrapd可以将选定的 SNMP 消息记录到系统日志 syslog,NT 事件日志,或者文本文件中。或是转发到其它的 SNMP 管理程序 , 也可以传给外部的应用程序。通过LOGGING OPTIONS选项详细控制(参考 http://www.net-snmp.org/docs/man/snmpcmd.html):

    LOGGING OPTIONS
    The mechanism and destination to use for logging of warning and error messages can be controlled by passing various parameters to the -L flag.
    
    -Le
        Log messages to the standard error stream. 
    -Lf FILE
        Log messages to the specified file. 
    -Lo
        Log messages to the standard output stream. 
    -Ls FACILITY
        Log messages via syslog, using the specified facility ('d' for LOG_DAEMON, 'u' for LOG_USER, or '0'-'7' for LOG_LOCAL0 through LOG_LOCAL7). 
    
    There are also "upper case" versions of each of these options, which allow the corresponding logging mechanism to be restricted to certain priorities of message. Using standard error logging as an example:
    
    -LE pri
        will log messages of priority 'pri' and above to standard error. 
    -LE p1-p2
        will log messages with priority between 'p1' and 'p2' (inclusive) to standard error. 
    
    For -Lf and -Ls the priority specification comes before the file or facility token. The priorities recognised are:
    
        0 or ! for LOG_EMERG,
        1 or a for LOG_ALERT,
        2 or c for LOG_CRIT,
        3 or e for LOG_ERR,
        4 or w for LOG_WARNING,
        5 or n for LOG_NOTICE,
        6 or i for LOG_INFO, and
        7 or d for LOG_DEBUG. 
    
    Normal output is (or will be!) logged at a priority level of LOG_NOTICE 

    二、SNMPTrap的操作实例

    主要是对配置文件/etc/snmp/snmptrapd.conf进行配置。

    1. 权限控制

    /etc/snmp/snmptrapd.conf中默认的权限设置是:

    authCommunity execute public

    以 authCommunity 开头的一行配置了 snmptrapd 的安全设置,表示可以接收 community 为”public”的 SNMP Trap,并且本进程可以有 log,net 和 execute 的权限。Log 权限表明收到 Trap 之后 snmptrapd 可以记录日志;execute 表明收到 Trap 之后可以执行 traphandle 中所指定的操作。Net 表示 snmptrapd 可以将接收到的 Trap 信息转发到其他的 Receiver 去。(假如需要转发,还需要对给定的 OID 指定以 forward 为开始的处理细节:forward OID|default DESTINATION)

    测试阶段可以关闭授权控制:

    #authCommunity   log,execute,net pulic      #注释掉这行
    disableAuthorization     yes                #关闭授权

    2. 基本的snmp tap收发测试

    启动 snmptrapd(指定config文件的位置)在前台运行,将log信息打印到stdout:

        $snmptrapd -C -c /etc/snmp/snmptrapd.conf -f -Lo

    也可以在后台运行,并将log信息打印到文件中:

        $snmptrapd -C -c /etc/snmp/snmptrapd.conf  -Lf /tmp/trapd.log

    通过snmptrap工具发送一个trap(目标地址是“192.168.2.27:162”),格式如下:

    snmptrap -v [2c|3] [COMMON OPTIONS]        uptime      trap-oid                [OID TYPE VALUE]
    #example:
    snmptrap -v 2c -c public 192.168.2.27:162 "ttime." .1.3.6.1.2.1.1.1.0 SysDesc s "test"
    snmptrap -v 2c -c public 192.168.2.27:162 "" .1.3.6.1.2.1.1.1.0 SysDesc s "test from snmptrap tool."
    snmptrap -v1 -c public 192.168.2.27 .1.3.6.1.4.1.1 156.18.2.27 2 3 1000
    

    查看snmptrapd的log信息,可以看到192.168.2.27发送的trap(前面三条记录,后面两条是防火墙设备的trap信息):

    $snmptrapd -C -c /etc/snmp/snmptrapd.conf -f -Lo
    NET-SNMP version 5.7.2
    
    2020-12-04 14:22:06 mail.hubei.net [UDP: [192.168.2.27]:56666->[192.168.2.27]:162]:
    SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-MIB::sysDescr.0 SNMPv2-MIB::sysDescr = STRING: test
    2020-12-04 15:07:20 mail.hubei.net [UDP: [192.168.2.27]:34068->[192.168.2.27]:162]:
    DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (34624323) 4 days, 0:10:43.23  SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-MIB::sysDescr.0 SNMPv2-MIB::sysDescr = STRING: test from snmptrap tool.
    2020-12-04 15:15:48 mail.hubei.net [192.168.2.27] (via UDP: [192.168.2.27]:37219->[192.168.2.27]:162) TRAP, SNMP v1, community public
            SNMPv2-SMI::enterprises.1 Link Down Trap (3) Uptime: 0:00:10.00
    
    2020-12-04 15:12:47 192.168.247.2(via UDP: [192.168.247.2]:54464->[192.168.2.27]:162) TRAP, SNMP v1, community public
            SNMPv2-SMI::enterprises.15227.1.1.251.2 Enterprise Specific Trap (2) Uptime: 458 days, 22:55:00.19
            SNMPv2-SMI::enterprises.15227.1.1.251.6 = STRING: "serialNo=146d6491ba9074be; deviceName=targe.usernet; sysObjectID=.1.3.6.1.4.1.15227.1.1.1"
    2020-12-04 15:12:48 192.168.247.2(via UDP: [192.168.247.2]:50591->[192.168.2.27]:162) TRAP, SNMP v1, community public
            SNMPv2-SMI::enterprises.15227.1.1.251.4 Enterprise Specific Trap (4) Uptime: 458 days, 22:55:01.21
            SNMPv2-SMI::enterprises.15227.1.1.251.6 = STRING: "serialNo=146d6491ba9074be; deviceName=targe.usernet; sysObjectID=.1.3.6.1.4.1.15227.1.1.1"
    

    3. traphandle

    traphandle default /usr/local/zabbix/bin/snmptrap.sh #处理脚本

    4. snmp trap及traphandle示例收集

    1. perl简单例子:https://my.oschina.net/kcw/blog/483653

    2. python例子:https://www.cnblogs.com/JetpropelledSnake/p/9870336.html,https://cloud.tencent.com/developer/article/1367965

    3. traphanle详解(本地监控磁盘等):https://blog.csdn.net/u014403008/article/details/53883423,https://blog.csdn.net/zym361589736/article/details/4381539

    4. zabbix对接:

    5. nagios:《Nagios XI - SNMP Trap Tutorial》、https://blog.51cto.com/wushank/1157305

    6. snmpinform:  https://www.cnblogs.com/javawebsoa/archive/2013/03/24/2978266.html

    7. 现实的GUI例子:http://www.eyegroup.cc/light_help/configure_alarm/passive_listening/snmp_trap.htm

    freebsd:https://www.xuebuyuan.com/625873.html

    三、其它工具

    1. snmptt

    SNMPTT是用perl写的SNMP trap处理器,使用SNMPTT的变量替换功能,消息可以变的更友好,SNMPTT可以将输出记录到文本日志,NT event 日志,SQL数据库,或者通过外部程序传给Nagios,邮件客户端等。snmptt官方文档:http://www.snmptt.org/docs/snmptt.shtml;参考:http://blog.chinaunix.net/uid-261392-id-2138987.html

    2. windows下的snmptrap

    面向windows系统的:《 SnmpTrap测试与学习》,使用工具《烂泥:TrapGen 使用说明》和SNMP_Trap_Watcher,《比较好用的SNMP Trap工具》提供下载。

    展开全文
  • snmp trap命令接收软件

    热门讨论 2012-08-09 11:10:31
    windows平台下,用于接收snmp协议的trap消息的小软件,可以测试你编写的trap命令是否发送成功了
  • snmp4j 实现snmp trap发送与接收
  • 1.snmptrap与snmptt工作关系 1)snmptrapd 收到网络设备所发出的trap 2)snmptrapd将trap的信息传递给SNMPTT或调用Perl接收器,安装是直接默认即可 3)snmptt或Perl trap接收器信息解析,格式化并将trap写入到指定...
  • SANGFOR_AC_v12.0.13_SNMP TRAP功能测试实施指导书.pdf
  • 我正在尝试从命令行发送带有snmptrap的snmp消息,并且手册不是很清楚。我已成功发送示例消息(10.0.0.1 ==我将消息发送到的地方)snmptrap -v 1 -c private 10.0.0.1 ...
  • Zabbix使用snmptrap方式监控vCenter Server

    千次阅读 2021-11-08 21:44:35
    Zabbix使用snmptrap方式监控vCenter Server 6.5 简介 本人介绍如何通过snmp trap的方式发送vcenter上的告警到zabbix server,并通过zabbix server发送邮件告警通知,配置好后,邮箱收到的告警格式如下 一、前置条件 ...
  • SNMP协议-SNMP TRAP

    千次阅读 2021-01-29 10:40:22
    1、SNMP是一个简单的网络管理协议,起初我也不知道啥玩意,在自己做安全设备配置日志审计服务器时突然发现的,某厂商设备不支持syslog服务器配置,只有snmp的配置,我当即填上相关信息如下图可见,将状态整为开启,...
  • linux snmptrap的发送与接收

    千次阅读 2021-05-09 08:31:00
    linux snmptrap的发送与接收由于需要管理服务器的一些参数,比如CPU使用率,IOwait之类的指标,管理方通过snmpwalk进行五分钟一次对受管服务器的轮询。此类指标为业务指标,是必须了解的一些参数,另需要有告警指标...
  • SNMPv1/SNMPv2 trap 配置以及发送 接收Trap端: ...2. 用命令【snmptrapd -f -Lo】 监听并接收trap ...snmptrap -v 2c -c public {接收端IP} "" 1.3.6.1.4.1.111.115.1.1 SNMPv2-MIB::sysLocation..
  • snmp_trap 协议接收工具

    2020-04-21 11:42:32
    最近调试SNMP协议,要调试设备上的trap发送功能,需要在windows端接收,,也支持Linux和unix,需要java环境,找来找去很辛苦终于找到这款软件,挺不错的
  • SNMP trap方式 建立在简单网络管理协议SNMP上的网络管理,SNMP TRAP是基于SNMP MIB的,因为SNMP MIB 是定义了这个设备都有哪些信息可以被收集,哪些trap的触发条件可以被定义,只有符合TRAP触发条件的事件才被发送...
  • 那么接下来我们对SNMP TRAP这方面的配置进行一下讲解。Cisco snmp配置在IOS的Enable状态下,敲入:config terminal 进入全局配置状态。Cdp run 启用CDPsnmp-server community gsunion ro 配置本路由器的只读字串为g....
  • snmp trap编写

    2020-12-19 20:48:58
    notification.c如下所示,每个30秒发送一个trap给mib browser。#include#include#include/** contains prototypes*/#include"notification.h"/** our initialization routine* (to get called, the function name ...
  • 浅谈 Linux 系统中的 SNMP Trap刘 明2012 年 4 月 06 日发布简介本文讲解 SNMP Trap,在介绍 Trap 概念之前,首先认识一下 SNMP 吧。简单网络管理协议(Simple Network Management Protocol)是一种应用层协议,是TCP/...
  • SNMP Trap调试记录

    2019-12-25 16:20:35
    四、SNMP中预定义的trap 一、Trap与Inform SNMP Inform Requests功能允许路由器向SNMP管理器发送通知请求。 路由器可以在发生特定事件时向SNMP管理器发送通知。例如,代理路由器可能在自身遇到错误情况时向管理...
  • 浅谈Linux中开发SNMP TrapSNMPTrap是一种标准的报告机制,广泛应用在各种...1.SNMP Trap简介SNMP简单网络管理协议(SimpleNetworkManagementProtocol)是一种应用层协议,是TCP/IP协议族的一部分。它使网络设备之间能...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,354
精华内容 4,141
关键字:

snmptrap

友情链接: CA-MOEA_PlatEMO.zip