snmp trap配置
一、trap的用途
TRAP是提供从代理进程到管理站的异步报告机制。
为了使管理站能够及时而又有效地对被管理设备进行监控,同时又不过分增加网络的通信负载,必须使用陷入(TRAP)制导的轮讯过程。代理进程负责在必要时 向管理站报告异常事件,得到异常事件的报告后,管理站可以查询有关的代理,以便得到更具体的信息,对事件的原因做进一步的分析
二、trap的工作流程
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的环境配置
在manager端建立/etc/snmp/snmptrapd.conf(我的机器上是这个,不同机器不同,可能有的放在/etc/snmp,/usr/local/share/snmp/下,视不同情况慢慢实验),加入以下一行:
A) authcommunity 设置所有用户的访问权限:可执行,记录,传递
这条指令指明以“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.
B) 若想对接收到的信息进行处理,可以使用traphandle,示例如上图:
test.pl的内容:
Perl代码
#!/usr/bin/perl
use strict;
my $file="file.trap";
open(HANDOUT,">>./$file");
while(<STDIN>)
{
print HANDOUT "$_";
}
第一个参数为从snmptrapd接收的OID,第二个参数为调用的程序。
四、命令方式的过程
1.在manager端用命令snmptrapd -d -f -Lo启动snmptrapd来监听162端口
-a ignore authentication failure traps
-c FILE read FILE as a configuration file
-C do not read the default configuration files
-d dump sent and received SNMP packets
-f do not fork from the shell
-n use numeric addresses instead of attempting hostname lookups (no DNS)
-t Prevent traps from being logged to syslog
-O <OUTOPTS> toggle options controlling output display
-L <LOGOPTS> toggle options controlling where to log to
e: log to standard error
o: log to standard output
n: don't log at all
f file: log to the specified file
s facility: log to syslog (via the specified facility)
例:snmptrapd -d -f -Lo
snmptrapd -C -c /etc/snmp/snmptrapd.conf -Lf /tmp/trapd.log
2.然后在agent端输入命令:
版本1:snmptrap -v 1 [COMMON OPTIONS] [-Ci] enterprise-oid agent generic-trap specific-trap uptime [OID TYPE VALUE]...
版本2:snmptrap -v [2c|3] [COMMON OPTIONS] [-Ci] uptime trap-oid [OID TYPE VALUE]...
格式:命令 版本 -c 共同体 管理机 Enterprise-OID snmp代理地址 陷阱类型 oid 时间 1.3.6.1.9.9.44.1.2.1 i 12 1.3.4.1.2.3.1 s aaa(被发送参数的OID 数据类型 值 被发送参数OID 。。。。。)
数据类型: i 整形 u 无符号型 c COUNTER32 s 字符串 x 16进制字符串 d 10进制字符串 n 空对象 o 对象ID t 计时器 a IP地址 b 比特
generic-trap:包括7种, 分别是:0 coldStart 1 warmStart 2 linkDown 3 linkUp 4 authenticationFailure 5 egpNeighborLoss 6 enterpriseSpecific
例: snmptrap -v1 -c public *.*.*.* .1.3.6.1.4.1.1 192.168.2.125 2 3 1000 1.3.6.1.9.9.44.1.2.1 i 12 1.3.4.1.2.3.1 s zzz
snmptrap -v 2c -c public *.*.*.* "" .1.3.6.1.4.1.2021.251.1 sysLocation.0 s "longtengfei"
五、处理自定义trap
(参考http://www.net-snmp.org/wiki/index.php/TUT:snmptrap)
编写两个mib文件,包括snmp1和snmp2两种trap
Snmp1的mib:TRAP-TEST-MIB.txt
TRAP-TEST-MIB DEFINITIONS ::= BEGIN IMPORTS ucdExperimental FROM UCD-SNMP-MIB; demotraps OBJECT IDENTIFIER ::= { ucdExperimental 990 } demo-trap TRAP-TYPE STATUS current ENTERPRISE demotraps VARIABLES { sysLocation } DESCRIPTION "This is just a demo" ::= 17 END
Snmp2的mib:NOTIFICATION-TEST-MIB.txt
NOTIFICATION-TEST-MIB DEFINITIONS ::= BEGIN IMPORTS ucdavis FROM UCD-SNMP-MIB; demonotifs OBJECT IDENTIFIER ::= { ucdavis 991 } demo-notif NOTIFICATION-TYPE STATUS current OBJECTS { sysLocation } DESCRIPTION "Just a test notification" ::= { demonotifs 17 } END 然后放入到mibs文件夹中
在agent端敲入命令:
snmptrap -v 2c -c public 192.168.213.64:162 "" NOTIFICATION-TEST-MIB::demo-notif SNMPv2-MIB::sysLocation.0 s "just here"
manager端输出:
Received 96 bytes from UDP: [192.168.213.64]:32808
0000: 30 5E 02 01 01 04 06 70 75 62 6C 69 63 A7 51 02 0^.....public.Q.
0016: 04 17 27 54 32 02 01 00 02 01 00 30 43 30 10 06 ..'T2......0C0..
0032: 08 2B 06 01 02 01 01 03 00 43 04 03 F0 3A 1A 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 87 5F 11 30 15 06 08 2B 06 01 .....e._.0...+..
0080: 02 01 01 06 00 04 09 6A 75 73 74 20 68 65 72 65 .......just here
192.168.213.64 [UDP: [192.168.213.64]:32808]: Trap , DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (66075162) 7 days, 15:32:31.62, SNMPv2-MIB::snmpTrapOID.0 = OID: UCD-SNMP-MIB::ucdavis.991.17, SNMPv2-MIB::sysLocation.0 = STRING: just here
sh: log_it: command not found
其中just here就是我们想要的结果
六、 让agent自动产生trap
配置agent的snmpd.conf,配置如下:
trapsink *.*.*.*:162 public
trap2sink *.*.*.*:162 public
authtrapenable 1
rwuser administrator
iquerySecName administrator
linkUpDownNotifications yes
defaultMonitors yes
#Process checks
proc sendmail 10 1
#disk checks
disk / 100000
#Check for loads
load 5 5 5
#CPU usage
notificationEvent userCPU ssCpuRawUser
notificationEvent sysCPU ssCpuRawSystem
monitor -r 60 -e userCPU "User CPU use percentage" ssCpuRawUser > 100
monitor -r 60 -e sysCPU "System CPU use percentage" ssCpuRawSystem > 100
#Memory usage
notificationEvent memTotalTrap memTotalReal memTotalSwap
notificationEvent memAvailTrap memAvailReal memAvailSwap memTotalFree
monitor -r 10 -e memTotalTrap "Total memory" memTotalReal < 1000000000000
monitor -r 10 -e memAvailTrap "Available memory" memTotalFree < 1000000000000
指令简介:
·#号后为内容注释。
·trapsink: 指明信息发送的snmptrapd地址,1版本。
·trap2sink:指明信息发送的snmptrapd地址,2c版本。
·authtrapenable:决定是否发送身份验证失败信息。1为发送,2为不发送。
·rwuser:建立读写权限用户。
·iquerySecName:指定内部查询用户名。
·linkUpDownNotifications:在建立断开链接的时候发送通知。
·defaultMonitors:打开默认监视项。其中包括进程,磁盘等的监视,必须打开此项,否则进程,磁盘等的监视信息不会被发出。
·proc:监视指定进程,当进程数不在指定的范围时将特定标志位置1,但是不会发出trap信号,需要打开defaultMonitors,由其发送trap信号。
·disk:监视磁盘剩余空间,当剩余空间小于指定值时将特定标志位置1,同proc。
·load:系统负载,指定1,5,15分钟的系统负载,超过阈值后处理方法同proc。
·notificationEvent:自定义通知事件。
·monitor:监视指定事件。
七、程序方式
思路:让一个程序监控设备,如果设备产生了发送trap的条件,那么就编写一条snmptrap命令,新建一个进程将其发送出去。
本demo模拟这一过程,每2秒钟发送一条trap,用到的是上面最后一条命令:
snmptrap -v 1 -c public localhost:162 TRAP-TEST-MIB::demotraps localhost 2 0 "" IF-MIB::ifIndex i 1
manager端trap处理程序不变,mib不变。
Mytrap.c:
#include
#include
int main()
{
while(1){
int pid ;
int status;
if( (pid = fork()) == 0){
execl("/usr/bin/snmptrap","snmptrap","-v","1","-c","public","localhost:162","TRAP-TEST-MIB::demotraps","localhost","2","0","\"\"","IF-MIB::ifIndex","i","1",NULL);
printf("snmptrap\n");
return 0;
}
else if (pid
perror("fork:");
}
else{
printf("send a trap\n");
sleep(2);
}
}
return 0;
}
snmp trap配置相关推荐
- zabbix snmp trap 监控
I hate snmptrap!!! ################## snmptrap server端的配置 snmptrap server运行在zabbix server或proxy上 mkd ...
- 使用Zabbix的SNMP trap监控类型监控设备的一个例子
转载来源 :使用Zabbix的SNMP trap监控类型监控设备的一个例子 :https://www.jianshu.com/p/aa795afdf655 介绍 本文以监控绿盟设备为例. 1.登录被监 ...
- snmp trap 如何在浏览器中_SNMP Trap的功能介绍
前面我们已经对SNMP协议有所了解了,随着对这个协议的了解,我们也发现,它的更能更为强大.其中包括了多种协议的支持.那么今天我们就来详细介绍一下SNMP Trap的具体内容.那么什么是SNMP Tra ...
- GBase 8a的SNMP Trap 告警
统一监控提供SNMP Trap推送接口,当平台发现发现某个集群节点发生异常的时候,统一监控主动通过SNMP Trap方式把异常信息推送给第三方应用,这样第三方应用就可以实现对集群状态的统一监控.该功能 ...
- snmp trap发送及接收
在进行winsnmp及其它snmp api进行snmp开发时,基本上都会有一个接收trap的功能.对于初学者来说,即使了解了不少snmp的知识,但如果没有亲自实现出结果,对它的理解还是有欠缺的.snm ...
- SNMP Trap的session问题
1.前言 最近遇到了个问题,SNMPv3 Trap上报,在snmp agent侧修改了用户密码,管理站mibbroswer上没有修改trap用户的密码,仍然可接收到trap上报消息.通过Wiresha ...
- 华为HCNA之SNMP基础配置实验
导语: SNMP 是专门设计用于在 IP 网络管理网络节点(服务器.工作站.路由器.交换机及HUBS等)的一种标准协议,它是一种应用层协议. SNMP 使网络管理员能够管理网络效能,发现并解决网络问题 ...
- 【Zabbix-SNMP trap】使用Zabbix的SNMP trap监控类型监控设备的一个例子
本文以监控绿盟设备为例. 1.登录被监控的设备的管理系统,配置snmptrap地址指向zabbix服务器或代理服务器. snmptrap地址也叫陷阱. 2.配置或关闭防火墙,并验证是否能在zabbix ...
- SNMP TRAP发包工具
导语 日志审计系统需要具备多种采集方式,其中SNMP TRAP就是其中的主流,随着互联网快速发展,安全产品.网络产品等等产品层出不穷,日志审计系统所需要解析的产品种类也逐级增加,日志样本多样性成为了解 ...
- mib browser无法接收snmp trap消息解决
1. 检查snmp服务器是否正确的配置了trap消息且正确发送出来: net-snmp采用修改配置文件的方式如下: trap2sink 192.168.1.123:162 public 这里的ip地址 ...
最新文章
- electron调用python_在Electron app中运行python脚本
- BNN领域开山之作——不得错过的训练二值化神经网络的方法
- struts iterator 标签 之 indexId
- 计算机操作系统32跟64区别是什么,32位和64位计算机操作系统之间的区别32位和64位win7系统之间的区别...
- 硕博士生参加学术会议重要吗?如何选择?注意什么?
- 爬虫系列---Scrapy框架学习
- iOS开发之share第三方登录以及分享
- 矩形变弧度角_科普时光 | 下颌角手术需要咬肌切除吗?
- 剑指offer、把二叉树打印成多行(python)
- 使用itertools建立词表
- 职业经验分享之我是如何转行成为数据分析师的
- 什么是SysWow64,什么是System32
- 使用LabVIEW进行物体追踪图像处理分析
- linux的iso镜像文件,linux系统安装iso文件方法
- Mysql自定义函数:身份证号码的真实性判定
- 1046错误mysql_数据库实例:如何解决mysql 1046错误
- 仙气满满的霍尊竟然这么皮?自爆体重已经突破……
- 深入浅出计算机组成原理20-面向流水线的指令设计(上):一心多用的现代CPU
- access制作卡片_(2020年编辑)Access入门教程大全
- CSS基础(样式声明、引用(行内样式、内部样式、外部样式、导入样式)、样式优先级)
热门文章
- 【数字信号调制】基于matlab 16QAM信号调制解调【含Matlab源码 2050期】
- 学习日记——FPGA入门基础
- Java中native方法的使用
- PTA-Python题库(浙大版Python程序设计教材对应练习) 题解索引
- Visual C++ 2010 Express 下载及安装教程
- NoteExpress 3.2下载
- 【LwM2M】LwM2M相关的开源项目
- 我的世界神级种子Java_《我的世界》值得收藏的10个“神级种子”,最难找的遗迹都在这!...
- Mac的反编译工具一:otool (objdump工具的OSX对应工具)。
- 在大多数情况下病毒入侵计算机系统以后,网络支付与安全练习题库