NO.B.0009——>监控SNMP的设备/net-snmp使用/net-snmp轮询获取信息/net-snmp trap的使用

一、SNMP概述:
简单的网络管理协议(SNMP-Simple Network Management Protocol)是一个与网络设备交互的简单方法。该规范是有IETF在1990 年五月发布的RFC 1157中定义的。
目前有SNMPv1、SNMPv2、SNMPv3三种正式版本
 
1.、SNMP管理协议
   SNMP管理协议的5种消息类型
(1)get–request            操作:从代理进程处提取一个或多个参数值。
(2)get-next-request     操作:从代理进程处提取一个或多个参数的下一个参数值。
(3)set-request             操作:设置代理进程的一个或多个参数值。
(4)get-response           操作:返回的一个或多个参数值。这个操作是由代理进程发出的。它是前面3 中操作的响应操作。
(5)trap                         操作:代理进程主动发出的报文,通知管理进程有某些事情发生。
 
2、net-snmp中的oid:是一个唯一的键值对,也叫作对象标识符,它的作用等同于item.key一样、
SNMP主要有三个版本:
SNMPv1:服务器端通过snmpv1协议获取信息时候,需要有个密码验证,大多数厂商出厂默认自带“public”,大多人把这个密码叫做community(社区字符),理解为密码就可以。
SNMPv2:
SNMPv3:
 
snmp主要使用两个端口号:
udp    161:经常用于客户端        === zabbix-agent  10050
udp    162:经常用于服务器端    === zabbix-server 10051
 
snmp MIB:
由于OID像IPv6地址一样,太长的一串数字,我们往往难于记忆,所以出了一个MIB,进行作为一个映射,映射成为人们容易记住的文本。
 
net-snmp 工作方式有两种:
net-snmp轮询:它的工作方式等同于zabbix-agent-passive,意外着他也是被动的接收指令。
net-snmp陷阱(trap):它的工作方式等同于zabbix-agent-active模式,它是主动汇报信息给服务器端。
 
zabbix-agent工作方式有两种:
1、zabbix-agent-active:主动模式,就是zabbix-agent想zabbix-server主动发送信息,
2、zabbix-agent-passive:被动模式,就是zabbix-agent被动的接收zabbix-server指令、
 
二、net-snmp的使用:
zabbix-serer:192.168.1.59
zabbix-client:192.168.1.60
 
net-snmp通过命令行的方式获取:
//通过linux系统和网络设备(Juniper netscreen)
//1、安装net-snmp和net-snmp工具
[root@localhost ~]# yum -y install net-snmp net-snmp-utils  
//2、启动snmpd服务
[root@localhost ~]# systemctl restart snmpd.service  
//3、通过snmpstatus方式进行信息获取
[root@localhost ~]# snmpstatus -v 2c -c public 192.168.1.60 
[UDP: [192.168.1.60]:161->[0.0.0.0]:46349]=>[Linux localhost.localdomain 3.10.0-957.el7.x86_64 
                #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64] Up: 0:00:37.30
Interfaces: 0, Recv/Trans packets: 0/0 | IP: 0/0
//4、通过snmpwalk命令查询设备MIB库的所有信息
[root@localhost ~]# snmpwalk -v 2c -c public 192.168.1.60 | head -n 6  
							// 直通过heah -n 6显示前6条
SNMPv2-MIB::sysDescr.0 = STRING: Linux localhost.localdomain 3.10.0-957.el7.x86_64 
							#1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (413933) 1:08:59.33  
	//DISMAN-EVENT-MIB::sysUpTimeInstance 复制、查询  
	// snmpget -v 2c -c public -On 192.168.1.60DISMAN-EVENT-MIB::sysUpTimeInstance
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: localhost.localdomain   
	// SNMPv2-MIB 映射 sysName.0:UID  SNMPv2-MIB::sysName.0  :OID  
	// SNMPv2-MIB::sysName.0复制查询  
	// snmpget -v 2c -c public -On 192.168.1.60 SNMPv2-MIB::sysName.0
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf) 
[root@localhost ~]# snmpget-v 2c -c public -On 192.168.1.60 DISMAN-EVENT-MIB::sysUpTimeInstance
.1.3.6.1.2.1.1.3.0 = Timeticks: (466687) 1:17:46.87
//5、使用mib的值我去查看OID的准确值
[root@localhost ~]# snmpget -v 2c -c public -On 192.168.1.60 SNMPv2-MIB::sysName.0  
.1.3.6.1.2.1.1.5.0 = STRING: localhost.localdomain	//系统名称的OID
网络设备的配置:
Configuration——>Report.Settings——> SNMP——>Apply——> New Community——>Edit
 
查看接口位置:NetWork——>Interfaces——>List
SNMPv3:唯一标识
//使用snmpv3查询信息:
//1、停止snmpd服务
[root@localhost ~]# systemctl stop snmpd
//2、创建用户名
[root@localhost ~]# net-snmp-create-v3-user -ro zabbix //创建一个用户名为zabbix,并且给它只读权限
Enter authentication pass-phrase:123456789   // 注意:密码设置不能低于8位,否则在获取信息时会报错
Enter encryption pass-phrase:123456789       //输入验证密码短语
                                                         

//3、启动snmpd服务:
[root@localhost ~]# systemctl start snmpd
//4、使用snmpget去获取信息
 
[root@localhost ~]# 
> snmpget -u zabbix -A 123456789 -v 3 -l authNoPriv 192.168.1.60 SNMPv2-MIB::sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu 
Nov 8 23:39:32 UTC 2018 x86_64
 
三、net-snmp轮询获取信息
实例一:如何通过net-snmp轮询查询我们zabbix信息:
添加一台SNMP的主机
如何检测防火墙的流量:
[root@localhost ~]# snmpwalk -v 2c -c public 192.168.1.60 | more
 找到接口的键值

 
 
四、net-snmp-trap介绍:
net snmp客户端使用的是udp     161
net snmp trap 使用是udp           162
net-snmp:它是主动回报信息给我们的服务器,类似于zabbix-agent主动模式
net-snmp trap:主要用于接收那些认为不寻常的一些值,该模式不是对net-snmp轮询的取代。而是对它的补充。
 
使用Net-snmp-trap最常用的两种方式:
1、使用per1 脚本,该方式效率高,配置简单。
2、使用自定义脚本的方式,这种方式效率低下,这种方式效率低下,配置复杂,这是因为有些设备可能不支持per1的模式,只能采用这种方式。
 
项目试验记录:
官方配置教程地址:https://zabbix.org/wiki/Start_with_SNMP_traps_in_Zabbix
net snmp-trap per1的方式配置:
//防火墙开启的状态下打开162端口
[root@localhost ~]# vim /etc/sysconfig/firewalld
firewall-cmd --add-port=162/udp --permanent
firewall-cmd --reload
//重启firewalld.serveice
[root@localhost ~]# systemctl restart firewalld.service 
//1、安装所需的工具包(在我们的zabbix服务器上安装trap工具包):
[root@localhost ~]# yum install -y net-snmp-utils net-snmp-perl net-snmp
https://cdn.zabbix.com/zabbix/sources/stable/4.0/zabbix-4.0.25.tar.gz
//2、通过wget下载zabbix源码包: 
[root@localhost ~]# wget https://cdn.zabbix.com/zabbix/sources/stable/4.0/zabbix-4.0.25.tar.gz
//3、解压缩zabbix安装包:
[root@localhost ~]# tar -zxvf zabbix-4.0.25.tar.gz
//4、从源码包复制脚本,并授予可执行权限
[root@localhost ~]# cp ./zabbix-4.0.25/misc/snmptrap/zabbix_trap_receiver.pl /usr/bin/
[root@localhost ~]# chmod +x /usr/bin/zabbix_trap_receiver.pl 
//5、设置trap接收者和社区名字(就是snmp的密码)
[root@localhost ~]# vim /etc/snmp/snmptrapd.conf
authCommunity execute public
perl do "/usr/bin/zabbix_trap_receiver.pl";
//6、编辑zabbix-server的配置文件,开启snmp的trap
[root@localhost ~]# vim /etc/zabbix/zabbix_server.conf    
StartSNMPTrapper=1
#SNMPTrapperFile=/var/log/snmptrap/snmptrap.log    //注释掉
SNMPTrapperFile=/tmp/zabbix_traps.tmp  
 			//该路径包括文件名必须要与/usr/bin/zabbix_trap_receiver.pl中的设置文件名一致(如下)
[root@localhost ~]#  cat   /usr/bin/zabbix_trap_receiver.pl    
$SNMPTrapperFile = '/tmp/zabbix_traps.tmp';   
//7、重启zabbix-server
[root@localhost ~]# systemctl restart zabbix-server.service
//8、启动snmptrapd服务,并设置开机自启动
[root@localhost ~]# systemctl start snmptrapd.service
[root@localhost ~]# systemctl enable snmptrapd.service
//9、在客户端测试:
[root@localhost ~]# snmptrap -v 1 -c 
> public 192.168.1.59 '.1.3.6.1.6.3.1.1.5.4' '0.0.0.0' 6 33 '55' .1.3.6.1.6.3.1.1.5.4 s "ens33"
//若发送成功之后,需在server端检查trap文件的接收位置:
[root@localhost ~]# cat /tmp/zabbix_traps.tmp 
12:22:27 2020/10/27 ZBXTRAP 192.168.1.105
receivedfrom                   UDP: [192.168.1.105]:51913->[192.168.1.59]:162
 
配置教程:
 
案例一:在客户端发送如下命令进行测试:
//发送带有test字符消息:
[root@localhost ~]# snmptrap -Ci -v 2c -c  public 192.168.1.59 "" 
> "NET-SNMP-MIB::netSnmpExperimental" NET-SNMP-MIB::netSnmpExperimental s "test"
 
//在server端查看有无抓取到数据:
[root@localhost ~]# tail -f  /tmp/zabbix_traps.tmp 
//OR
[root@localhost ~]# tail -f /var/log/zabbix/zabbix_server.log    //都可以查到实时日志信息
DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (14924885) 1 day, 17:27:28.85
SNMPv2-MIB::snmpTrapOID.0      type=6  value=OID: NET-SNMP-MIB::netSnmpExperimental
NET-SNMP-MIB::netSnmpExperimental type=4  value=STRING: "test"
有问题:就是发送的消息词不显示。
我们选择字符的时候只能限定255个。超过255个会自动截取。
可以获取完整的值test
 
 
实例二:
//client使用some other trp测试
[root@localhost ~]# snmptrap -Ci -v 2c -c  public 192.168.1.59 "" 
> "NET-SNMP-MIB::netSnmpExperimental" NET-SNMP-MIB::netSnmpExperimental s "some other trp"
//server收到数据:
[root@localhost ~]# tail -f  /tmp/zabbix_traps.tmp 
DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (15182717) 1 day, 18:10:27.17
SNMPv2-MIB::snmpTrapOID.0      type=6  value=OID: NET-SNMP-MIB::netSnmpExperimental
NET-SNMP-MIB::netSnmpExperimental type=4  value=STRING: "some other trp"
而我们的最新数据数据不会发生变化。没有完整test字符获取不到信息。
 
实例三:
他不会抓取字符,只要是你发过来的,我都会获取信息:
//使用some other trap来测试
[root@localhost ~]# snmptrap -Ci -v 2c -c  public 192.168.1.59 "" 
> "NET-SNMP-MIB::netSnmpExperimental" NET-SNMP-MIB::netSnmpExperimental s "some other trap"
 
//使用some other tr来测试
 [root@localhost ~]# snmptrap -Ci -v 2c -c  public 192.168.1.59 "" 
> "NET-SNMP-MIB::netSnmpExperimental" NET-SNMP-MIB::netSnmpExperimental s "some other tr"
//d都是可以获取数据,不会筛选字符
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

<wiz_marker id="wiz-painter-root" style="">

 

 



posted on   yanqi_vip  阅读(333)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示