-
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
更多相关内容 -
linux snmptrap的发送与接收
2021-05-09 08:31:00linux snmptrap的发送与接收由于需要管理服务器的一些参数,比如CPU使用率,IOwait之类的指标,管理方通过snmpwalk进行五分钟一次对受管服务器的轮询。此类指标为业务指标,是必须了解的一些参数,另需要有告警指标...linux snmptrap的发送与接收
由于需要管理服务器的一些参数,比如CPU使用率,IOwait之类的指标,管理方通过snmpwalk进行五分钟一次对受管服务器的轮询。
此类指标为业务指标,是必须了解的一些参数,另需要有告警指标信息。
但由于告警信息一般是由受管服务器进行主动告警,这时候就不能通过管理方主动使用snmpwalk来进行,而是由受管服务器通过snmptrap进行。
以下是对双方进行snmptrap的一些设置。
首先是管理方,需要先配置snmptrapd.conf,可以将之放在与snmpd.conf同一个路径下,在我本地环境下为(/etc/snmp/snmptrapd.conf)
配置代码:
Conf代码
authcommunity execute,log,net public
traphandle .1.3.6.1.4.1.2021.251.1 /root/traptest/test.pl
其中authcommunity是为了设置所有用户的访问权限:可执行,记录,传递。
设置traphandle(即收到.1.3.6.1.4.1.2021.251.1类OID信息时,执行test.pl)。
test.pl的内容:
Perl代码
#!/usr/bin/perl
use strict;
my $file="file.trap";
open(HANDOUT,">>./$file");
while()
{
print HANDOUT "$_";
}
然后输入命令:
Linux代码
snmptrapd -c /etc/snmp/snmptrapd.conf
将此配置文件设置为默认配置文件,并启动snmptrapd进程:
Linux代码
# snmptrapd -d -f -Lo
在受管方,使用命令:
Linux代码
snmptrap -v 2c -c public 10.0.0.214:162 "" .1.3.6.1.4.1.2021.251.1 sysLocation.0 s "this is test"
而后在管理方会接收到如下信息:
Linux代码
Received 98 bytes from UDP: [221.176.14.88]:58750
0000: 30 60 02 01 01 04 06 70 75 62 6C 69 63 A7 53 02 0`.....public.S.
0016: 04 1B CE 4F F1 02 01 00 02 01 00 30 45 30 10 06 ...O.......0E0..
0032: 08 2B 06 01 02 01 01 03 00 43 04 28 8D B0 5B 30 .+.......C.(..[0
0048: 18 06 0A 2B 06 01 06 03 01 01 04 01 00 06 0A 2B ...+...........+
0064: 06 01 04 01 8F 65 81 7B 01 30 17 06 08 2B 06 01 .....e.{.0...+..
0080: 02 01 01 06 00 04 0B 6C 6F 6E 67 74 65 6E 67 66 .......this is test
0096: 65 69
2012-07-16 10:44:17 [UDP: [221.176.14.88]:58750]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (680374363) 78 days, 17:55:43.63 SNMPv2-MIB::snmpTrapOID.0 = OID: UCD-SNMP-MIB::ucdStart SNMPv2-MIB::sysLocation.0 = STRING: this is test
至此,最简单的snmptrap的发送与接收就完成了。
-
linux c 基于netsnmp写的trap服务器
2021-01-28 14:59:58linux下基于netsnmp写的trap服务器,纯C代码,可解析出trap发送方的地址及trap消息内容,可直接编译和测试。编译方法为: gcc trap.c -lnetsnmp -
linux snmptrap的发送与接收。
2012-07-16 11:43:23需求是这样的。 由于需要管理服务器的一些参数,...但由于告警信息一般是由受管服务器进行主动告警,这时候就不能通过管理方主动使用snmpwalk来进行,而是由受管服务器通过snmptrap进行。 以下是对双方进行...需求是这样的。
由于需要管理服务器的一些参数,比如CPU使用率,IOwait之类的指标,管理方通过snmpwalk进行五分钟一次对受管服务器的轮询。
此类指标为业务指标,是必须了解的一些参数,另需要有告警指标信息。
但由于告警信息一般是由受管服务器进行主动告警,这时候就不能通过管理方主动使用snmpwalk来进行,而是由受管服务器通过snmptrap进行。
以下是对双方进行snmptrap的一些设置。
首先是管理方,需要先配置snmptrapd.conf,可以将之放在与snmpd.conf同一个路径下,在我本地环境下为(/etc/snmp/snmptrapd.conf)
配置代码:
authcommunity execute,log,net public
traphandle .1.3.6.1.4.1.2021.251.1 /root/traptest/test.pl
其中authcommunity是为了设置所有用户的访问权限:可执行,记录,传递。
设置traphandle(即收到.1.3.6.1.4.1.2021.251.1类OID信息时,执行test.pl)。
test.pl的内容:
#!/usr/bin/perl
use strict;
my $file="file.trap";
open(HANDOUT,">>./$file");
while(<STDIN>)
{
print HANDOUT "$_";
}
然后输入命令:
snmptrapd -c /etc/snmp/snmptrapd.conf
将此配置文件设置为默认配置文件,并启动snmptrapd进程:
# snmptrapd -d -f -Lo
在受管方,使用命令:
snmptrap -v 2c -c public *.*.*.* "" .1.3.6.1.4.1.2021.251.1 sysLocation.0 s "longtengfei"
而后在管理方会接收到如下信息:
Received 98 bytes from UDP: [221.176.14.88]:58750
0000: 30 60 02 01 01 04 06 70 75 62 6C 69 63 A7 53 02 0`.....public.S.
0016: 04 1B CE 4F F1 02 01 00 02 01 00 30 45 30 10 06 ...O.......0E0..
0032: 08 2B 06 01 02 01 01 03 00 43 04 28 8D B0 5B 30 .+.......C.(..[0
0048: 18 06 0A 2B 06 01 06 03 01 01 04 01 00 06 0A 2B ...+...........+
0064: 06 01 04 01 8F 65 81 7B 01 30 17 06 08 2B 06 01 .....e.{.0...+..
0080: 02 01 01 06 00 04 0B 6C 6F 6E 67 74 65 6E 67 66 .......longtengf
0096: 65 69 ei
2012-07-16 10:44:17 <UNKNOWN> [UDP: [221.176.14.88]:58750]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (680374363) 78 days, 17:55:43.63 SNMPv2-MIB::snmpTrapOID.0 = OID: UCD-SNMP-MIB::ucdStart SNMPv2-MIB::sysLocation.0 = STRING: longtengfei
至此,最简单的snmptrap的发送与接收就完成了。 -
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
- 先定义Trap的MIB对象,然后借由mib2c和相应的框架代码配置文件,“mib2c.notify.conf”,生成Trap框架代码。
其生成的框架代码:
- 注册Trap对象
- 绑定对象发送列表
- 最后调用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。-
在net-snmp安装目录下新建snmptrapd.conf文件,使用以下路径:/usr/local/share/snmp/snmptrapd.conf。
-
在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. -
若想对接收到的信息进行处理,可以使用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。 -
浅谈 Linux 系统中的 SNMP Trap
2020-12-19 20:49:03浅谈 Linux 系统中的 SNMP Trap刘 明2012 年 4 月 06 日发布简介本文讲解 SNMP Trap,在介绍 Trap 概念之前,首先认识一下 SNMP 吧。简单网络管理协议(Simple Network Management Protocol)是一种应用层协议,是TCP/... -
linux下的SNMP设置(snmp get/set/trap)
2022-06-09 13:46:49SNMP 和 SNMP Trap 测试接收端环境的配置 -
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 中文翻译... -
脚本模拟测试SnmpTrap 事件发送
2020-04-22 16:44:57输入snmptrap 后输出相关使用命令,即保证服务安装正常。 (2)编写脚本 使用for 循环 + 自定义函数实现。需要注意的是,自定义函数一定要先定义,linux 脚本不同于java 语言,函数如果不先定义,先写for 循环... -
Linux的SNMP安装和配置
2010-12-15 11:04:48Linux下SNMP的安装与配置 1. 确保Linux主机已经安装了SNMP服务 [root@Tekview Net-SNMP]# rpm -qa | grep snmp net-snmp-libs-5.3.2.2-5.el5 net-snmp-5.3.2.2-5.el5 net-snmp-utils-5.3.2.2-5.el5 如果没有,那么... -
snmp_trap 协议接收工具
2020-04-21 11:42:32最近调试SNMP协议,要调试设备上的trap发送功能,需要在windows端接收,,也支持Linux和unix,需要java环境,找来找去很辛苦终于找到这款软件,挺不错的 -
snmp trap安装配置
2018-04-12 17:49:21配置备注:配置文件路径, /etc/snmp/snmptrapd.conf在snmpwalk介绍及其用法一文中,介绍过net-snmp的snmpwalk的用法,殊不知,net-snmp还有trap的命令程序,可以用来测试snmp的trap方法(包括inform方法)。... -
Linux 系统中的 SNMP Trap及常用OID
2018-04-16 11:23:25浅谈 Linux 系统中的 SNMP Trap转载:http://www.ibm.com/developerworks/cn/linux/l-cn-snmp/本文讲解 SNMP Trap,在介绍 Trap 概念之前,首先认识一下 SNMP 吧。简单网络管理协议(Simple Network Management ... -
snmptrap 命令解析
2015-09-18 11:55:40# snmptrap -v 2c -c public 10.10.12.219 "aaa" 1.3.6.1.4.1.2345 SNMPv2-MIB::sysLocation.0 s "just here" snmptrap 命令 -v 2c Snmp协议版本 -c public 共同体 10.10.12. -
用net-snmp的api实现trap接收,windows+linux
2020-12-17 07:00:13用net-snmp的c apis实现trap的接收,类似于snmptrapd工具的实现,但是更为简单。 -
linux snmp安装配置
2021-05-09 01:40:041. 安装:yum -y install net-snmp* (主要安装net-snmp net-snmp-devel net-snmp-utils net-snmp-libs 组件)yum -y install lm_sensors (用于监控主板,CPU的工作电压,风扇转速、温度等数据。)2. 配置:主配置文件: ... -
@Zabbix配置snmptrap及使用snmptt解析格式化输出
2022-04-25 16:25:391.snmptrap与snmptt工作关系 1)snmptrapd 收到网络设备所发出的trap 2)snmptrapd将trap的信息传递给SNMPTT或调用Perl接收器,安装是直接默认即可 3)snmptt或Perl trap接收器信息解析,格式化并将trap写入到指定... -
snmp trap 与snmp相关介绍、安装、命令以及Trap的发送与接收java实现
2022-04-16 14:52:57snmp trap 与snmp SNMP简单概述 1.1、什么是Snmp SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议"。SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于... -
linux配置snmp v2
2021-05-16 10:03:33转载自:http://blog.chinaunix.net/uid-451-id-3337559.html1 安装常用工具用包安装就行了yum install net-snmp-utils net-snmpchkconfig snmpd on2 配置snmpdvi /etc/snmp/snmpd.confrocommunity ... -
snmp trap配置
2016-12-23 12:03:11一、trap的用途 TRAP是提供从代理进程到管理站的异步报告机制。 为了使管理站能够及时而又有效地对被管理设备进行监控,同时又不过分增加网络的通信负载,必须使用陷入(TRAP)制导的轮讯过程。代理进程负责在必要... -
Logstash_snmp与Logstash_snmptrap日志采集配置说明
2022-04-07 14:04:53Logstash_input_snmptrap:被动采集方式,安全设备通过snmp发送日志过来,被动采集 关键字 团体名(communitystring):对于客户端相当于密码,默认为public,需要自行需改。 OID(对象标识符),是SNMP代理提供... -
(转)浅谈 Linux 系统中的 SNMP Trap
2020-12-19 20:49:04原文:https://www.ibm.com/developerworks/cn/linux/l-cn-snmp/index.html简介本文讲解 SNMP Trap,在介绍 Trap 概念之前,首先认识一下 SNMP 吧。简单网络管理协议(Simple Network Management Protocol)是一种应用... -
linux snmp 配置
2021-05-16 13:26:071、确保Linux主机已经安装了snmp服务[root@idc ~]# rpm -qa |grep snmpnet-snmp-libs-5.1.2-11.EL4.7net-snmp-5.1.2-11.EL4.7如果没有,那么放入Linux安装盘找到snmp的rpm包进行安装,或者到网上搜索适合自己Linux... -
针对开发 SNMP Trap的总结
2020-12-19 20:49:08本文详细介绍了SNMPTrap的基本概念,以及Linux下面net-snmp对SNMPTrap的开发与应用。1.SNMPTrap简介SNMP简单网络管理协议(SimpleNetworkManagementProtocol)是一种应用层协议,是TCP/IP协议族的一部分。它使网络设备... -
centos6.5 yum安装测试SNMP和SNMPtrap,然后trap生成到文件里
2018-07-17 16:44:11yum 安装snmp(前提本机虚拟机能连网) 先查看本机是否安装snmp rpm -qa|grep snmp 如果存在自带的,可以删掉 yum -y remove xxx(xxx代表rpm查到的软件包) 安装 yum -y install net-snmp-* (安装所有) 启动 ...