|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

莫问天涯路几重,轻衫侧帽且从容。这篇文章主要讲述|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|相关的知识,希望能为你提供帮助。
一、SNMP概述:

### --- SNMP概述:~~~简单的网络管理协议(SNMP-Simple Network Management Protocol) ~~~是一个与网络设备交互的简单方法。该规范是有IETF在1990 年五月发布的RFC 1157中定义的。 ~~~目前有SNMPv1、SNMPv2、SNMPv3三种正式版本

### --- SNMP管理协议 ### --- SNMP管理协议的5种消息类型### --- get–request ~~~操作:从代理进程处提取一个或多个参数值。### --- get-next-request ~~~操作:从代理进程处提取一个或多个参数的下一个参数值。

### --- set-request ~~~操作:设置代理进程的一个或多个参数值。### --- get-response ~~~操作:返回的一个或多个参数值。这个操作是由代理进程发出的。它是前面3 中操作的响应操作。### --- trap ~~~操作:代理进程主动发出的报文,通知管理进程有某些事情发生。

### --- net-snmp中的oid:是一个唯一的键值对,也叫作对象标识符,它的作用等同于item.key一样、 ### --- SNMP主要有三个版本:### ---SNMPv1: ~~~服务器端通过snmpv1协议获取信息时候,需要有个密码验证,大多数厂商出厂默认自带“public”,大多人把这个密码叫做community(社区字符),理解为密码就可以。 ### ---SNMPv2: ### ---SNMPv3:

### --- snmp主要使用两个端口号: ~~~udp161:经常用于客户端=== zabbix-agent10050 ~~~udp162:经常用于服务器端=== zabbix-server 10051### --- snmp MIB: ~~~由于OID像IPv6地址一样,太长的一串数字,我们往往难于记忆,所以出了一个MIB, ~~~进行作为一个映射,映射成为人们容易记住的文本。

### --- net-snmp 工作方式有两种:### --- net-snmp轮询: ~~~它的工作方式等同于zabbix-agent-passive,意外着他也是被动的接收指令。### --- net-snmp陷阱(trap): ~~~它的工作方式等同于zabbix-agent-active模式,它是主动汇报信息给服务器端。

### --- zabbix-agent工作方式有两种:### --- zabbix-agent-active: ~~~主动模式,就是zabbix-agent想zabbix-server主动发送信息,### --- zabbix-agent-passive: ~~~被动模式,就是zabbix-agent被动的接收zabbix-server指令、

二、net-snmp的使用:
### --- net-snmp的使用:~~~zabbix-serer:192.168.1.59 ~~~zabbix-client:192.168.1.60 ~~~net-snmp通过命令行的方式获取:

### --- 通过linux系统和网络设备(Juniper netscreen) ### --- 安装net-snmp和net-snmp工具[root@localhost ~]# yum -y install net-snmp net-snmp-utils

### --- 启动snmpd服务 [root@localhost ~]# systemctl restart snmpd.service ### --- 通过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

### --- 通过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:UIDSNMPv2-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

### --- 使用mib的值我去查看OID的准确值[root@localhost ~]# snmpget -v 2c -c public -On 192.168.1.60 SNMPv2-MIB::sysName.0//系统名称的OID .1.3.6.1.2.1.1.5.0 = STRING: localhost.localdomain

三、网络设备的配置:
### --- 网络设备的配置:Configuration——> Report.Settings——> SNMP——> Apply——> New Community——> Edit

|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片
|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片
|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片
查看接口位置:NetWork——> Interfaces——> List
|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片

SNMPv3:唯一标识
|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片
四、使用snmpv3查询信息:
### --- 使用snmpv3查询信息: ### --- 停止snmpd服务[root@localhost ~]# systemctl stop snmpd

### --- 创建用户名 [root@localhost ~]# net-snmp-create-v3-user -ro zabbix// 创建一个用户名为zabbix,并且给它只读权限 Enter authentication pass-phrase:123456789// 注意:密码设置不能低于8位,否则在获取信息时会报错 Enter encryption pass-phrase:123456789// 输入验证密码短语

### --- 启动snmpd服务: [root@localhost ~]# systemctl start snmpd ### --- 使用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轮询获取信息~~~如何通过net-snmp轮询查询我们zabbix信息: ~~~添加一台SNMP的主机

|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片
|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片
### --- net-snmp轮询获取信息如何检测防火墙的流量: ### --- 找到接口的键值[root@localhost ~]# snmpwalk -v 2c -c public 192.168.1.60 | more

|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片
|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片
|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片
|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片
二、net-snmp-trap介绍:
### --- net-snmp-trap介绍:~~~net snmp客户端使用的是udp161 ~~~net snmp trap 使用是udp162 ~~~net-snmp:它是主动回报信息给我们的服务器,类似于zabbix-agent主动模式 ~~~net-snmp trap:主要用于接收那些认为不寻常的一些值,该模式不是对net-snmp轮询的取代。而是对它的补充。

### --- 使用Net-snmp-trap最常用的两种方式: ~~~使用per1 脚本,该方式效率高,配置简单。 ~~~使用自定义脚本的方式,这种方式效率低下,这种方式效率低下,配置复杂,这是因为有些设备可能不支持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

### --- 安装所需的工具包(在我们的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

### --- 通过wget下载zabbix源码包: [root@localhost ~]# wget https://cdn.zabbix.com/zabbix/sources/stable/4.0/zabbix-4.0.25.tar.gz### --- 解压缩zabbix安装包: [root@localhost ~]# tar -zxvf zabbix-4.0.25.tar.gz### --- 从源码包复制脚本,并授予可执行权限 [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

### --- 设置trap接收者和社区名字(就是snmp的密码) [root@localhost ~]# vim /etc/snmp/snmptrapd.conf authCommunity execute public perl do "/usr/bin/zabbix_trap_receiver.pl"; ### --- 编辑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;

### --- 重启zabbix-server [root@localhost ~]# systemctl restart zabbix-server.service ### --- 启动snmptrapd服务,并设置开机自启动 [root@localhost ~]# systemctl start snmptrapd.service [root@localhost ~]# systemctl enable snmptrapd.service

### --- 在客户端测试: [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 receivedfromUDP: [192.168.1.105]:51913-> [192.168.1.59]:162

三、配置教程:
|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片

|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片

案例二:
### --- 在客户端发送如下命令进行测试:### --- 发送带有test字符消息: [root@localhost ~]# snmptrap -Ci -v 2c -cpublic 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=https://www.songbingjia.com/android/Timeticks: (14924885) 1 day, 17:27:28.85 SNMPv2-MIB::snmpTrapOID.0type=6value=OID: NET-SNMP-MIB::netSnmpExperimental NET-SNMP-MIB::netSnmpExperimental type=4value=STRING:"test"

### --- 有问题:就是发送的消息词不显示。~~~我们选择字符的时候只能限定255个。超过255个会自动截取。

|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片

|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片

~~~可以获取完整的值test

|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片

案例三:
### --- client使用some other trp测试[root@localhost ~]# snmptrap -Ci -v 2c -cpublic 192.168.1.59 "" "NET-SNMP-MIB::netSnmpExperimental" NET-SNMP-MIB::netSnmpExperimental s "some other trp"

### --- server收到数据: ### --- 而我们的最新数据数据不会发生变化。没有完整test字符获取不到信息。 [root@localhost ~]# tail -f/tmp/zabbix_traps.tmp DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=https://www.songbingjia.com/android/Timeticks: (15182717) 1 day, 18:10:27.17 SNMPv2-MIB::snmpTrapOID.0type=6value=OID: NET-SNMP-MIB::netSnmpExperimental NET-SNMP-MIB::netSnmpExperimental type=4value=STRING:"some other trp"

实例四:他不会抓取字符,只要是你发过来的,我都会获取信息:
|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片

### --- 使用some other trap来测试 [root@localhost ~]# snmptrap -Ci -v 2c -cpublic 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 -cpublic 192.168.1.59 "" "NET-SNMP-MIB::netSnmpExperimental" NET-SNMP-MIB::netSnmpExperimental s "some other tr" ### --- d都是可以获取数据,不会筛选字符

|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|

文章图片

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warmd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor 【|NO.Z.00022|——————————|MonitorIng|——|Zabbix&监控SNMP设备&net-snmp轮询.V8|——|V001|】

    推荐阅读