设为首页 收藏本站
查看: 1192|回复: 0

[经验分享] ZABBIX运用:zabbix服务器上SNMP协议基本描述

[复制链接]

尚未签到

发表于 2018-1-1 10:18:25 | 显示全部楼层 |阅读模式
  1. SNMP协议版本
  SNMP协议常用的版本有三个,分别对应于SNMP V1、SNMP V2 和 SNMP V3。相对应于这三个SNMP协议版本,在Zabbix系统中对应地使用SNMP协议采集监控数据的方法分别是:SNMP V1 Agent、SNMP V2 Agent和SNMP V3 Agent。
  1.1 SNMP V1版本
  SNMP V1是SNMP协议的第一个版本,它指定了四种核心协议数据单元(Protocol Data Unit,PDU)。分别是GET, 用来获取指定对象的信息;GETNEXT,用来连续获取指定的多个对象的信息;SET,用来设置一个管理对象的信息;TRAP,当管理对象的信息发生变化时,主动向管理站(在我们的监控体系中就是指Zabbix服务器或Zabbix服务器代理)报告这种变化。SNMP V1只使用了一种安全策略,即团体名(community)。团体名和密码类似,即只有能够提供出正确团体名的管理站(例如我们的Zabbix服务器)才能被接受查询或设置。而在SNMP V1版本中,管理站和SNMP代理之间相互发送的PDU都是明文的,这就很容易造成SNMP管理站与代理之间的通信被截取。也正是因为这个原因,在实际应用中,现在一般很少使用SNMP V1进行监控数据的采集,除非我们所监控的主机是比较老的设备,其不支持其他版本的SNMP协议,否则至少应该使用SNMP V2进行监控数据的采集。
  1.2 SNMP V2版本
  SNMP V2是SNMP V1的演进版。它在性能、安全和协议操作等方面对SNMP V1版本做了增加和改进。例如,在SNMP V1版本中计数器只支持32位,而在SNMP V2版本中计数器改进为64位。或许你认为计数器从32位增强为64位跟我们研究的监控系统关系不大。实则不然,这是因为,32位的计数器所能计数的最大数为232,即为4294967296。因此,当用SNMP V1版本的计数器来计数一个1Gb网卡的流量时,该计数器将在约34秒左右就会被重置一次(4294967296×8/1000/1000/1000)。这样,我们数据采集时间间隔就不能设置为一分钟。这是因为,假如系统前一次采集的数据是10,而后一次采集的数据是15,系统可能想当然地认为在这段时间内这块网卡的流量为15-10=5。但是,因为计数器在这前后两次的数据采集间隔的一分钟之内被重置了,所以,实际网卡的流量应为4294967296-10+15=4294967301,而这个数据远远大于被系统错误识别出的数据,因此将导致我们系统采集的数据严重不准确。
  另一方面,SNMP V2版增强了SNMP V1版对协议数据单元的操作。除了新增加了GetBulk和Inform这两个协议操作指令之外,还修改了Get操作指令,使得当一次Get多个对象值,但其中一个或多个对象不存在时,不影响对其余正常存在对象值的获取。换句话说,在SNMP V1版中,如果一次尝试获取多个对象的值,只要有一个对象不存在,则SNMP代理就会返回错误的提示,并且余下对象的查询都将不会继续进行,即使余下的对象在管理信息库中是真实存在的。
  1.3 SNMP V3版本
  SNMP V3版本在SNMP V2版本的基础上增强了安全性和远程配置。主要包括:信息完整性校验,以保证数据包在传送的过程中没有被篡改;放弃了前两个版本中仅依赖团体名认证的方式,而提供了用户和密码认证方式;增加了数据包加密,在SNMP V3版本中,协议数据单元中除了目的地址之外,其余数据在传输过程中都是被加密的,这样避免了被未经授权的用户进行窥探和截取。
  2. 三个版本的区别
  不管是使用SNMP V1、SNMP V2还是使用SNMP V3版本的SNMP协议采集监控数据,其本质上都是利用SNMP协议来采集监控数据。所以,以下我们将SNMP V1 Agent、SNMP V2 Agent和SNMP V3 Agent这三种Zabbix系统里的监控数据采集方法放在一起来讨论,只要明白了上述三种利用SNMP协议采集监控数据的方法中的一种,其他两种利用SNMP协议采集监控数据的方法在原理和方法上都是一样的,没有本质上的区别。
  但是,利用SNMP协议进行监控数据采集的第四种方法--SNMP陷入(即SNMP trap)可能与前面所述的三种利用SNMP协议采集监控数据的方法略有区别。前面讨论的SNMP V1 Agent、SNMP V2 Agent和SNMP V3 Agent这三种利用SNMP协议采集监控数据的方法,都是Zabbix服务器或者Zabbix服务器代理根据监控项目的配置,定期通过SNMP协议查询被监控设备上的对象信息,它是一种被动的数据采集方式。而SNMP陷入则是指当SNMP代理在被监控设备上的某个条件发生时,根据其自身配置向指定的地址和端口发送相应的SNMP信息。与SNMP协议的另外三种监控数据采集方法不同的是,SNMP陷入是一种主动的监控数据采集方式,即由被监控设备主动向Zabbix服务器或Zabbix服务器代理发送要采集的数据。需要注意的是,并不是所有支持SNMP协议采集监控数据的监控项目都可以使用SNMP陷入来采集监控数据。而具体哪些监控项目可以使用SNMP陷入的方法来采集监控数据,则是由被监控设备上的MIB库决定的。一般来说,像硬件状态数据,比如磁盘状态数据、网卡状态数据等,都是可以通过SNMP陷入来采集的。通常,支持SNMP陷入的对象的种类并不是很多,因而可采用SNMP陷入的方法采集监控数据的监控项目的种类通常也不是很多,而通过SNMP协议查询的方法则可以查询到设备中MIB库里所定义的所有对象的信息。因而,在绝大多数的情况下,我们都是使用SNMP协议查询的方法,即使用SNMP V1 Agent、SNMP V2 Agent 和SNMP V3 Agent 这三种方法中的一种来采集监控数据,特别是设备的性能数据通常只能通过SNMP协议查询的方法采集。而SNMP陷入通常用来采集设备或组件的状态数据,如磁盘的在线状态、网络接口的在线状态等。
  3. 什么是SNMPTRAP
  SNMP 协议是用来管理设备的协议,目前SNMP已成为网络管理领域中事实上的工业标准,并被广泛支持和应用,大多数网络管理系统和平台都是基于SNMP的。如果 NMS( 网管系统 ) 需要查询被管理设备的状态,则需要通过 SNMP的get 操作获得设备的状态信息。但由于告警信息一般是由受管服务器进行主动告警,这时候就不能通过管理方主动使用snmpget来进行,而是由受管服务器通过SNMPTRAP进行。
  SNMP trap(SNMP 陷阱):某种入口,到达该入口会使SNMP被管设备主动通知SNMP管理器,而不是等待SNMP管理器的再次轮询。
  SNMP Trap 是 SNMP的一部分,当被监控段出现特定事件,可能是性能问题,甚至是网络设备接口宕掉等,代理端会给管理站发告警事件。假如在特定事件出现的时刻,不是由 Agent 主动通知 NMS,那么 NMS 必须不断地对 Agent 进行轮询。这是非常浪费计算资源的方法,正如人们用中断通知 CPU 数据的到达,而不是让 CPU 进行轮询一样。Trap 通知是更加合理的选择。用一句话来说的话,SNMP Trap 就是被管理设备主动发送消息给 NMS 的一种机制。
  4. SNMPTRAP功能特点
  4.1 事件驱动,第一时间收到设备故障告警
  以事件为驱动,由被监控的主机、网络设备、应用在发生故障时向NMS发送SNMP Trap,通过对接收到的SNMP Trap进行翻译和展现,以最快速度向管理人员发送告警。SNMP Trap不同于SNMP的主动采集,SNMP采集服务器按照固定的时间间隔,由网管系统以询问的方式,采集被监控端性能指标,因此发现被监控端性能问题的快慢取决于采集的频率间隔。而SNMP Trap是以事件为驱动,在被监控端设置陷阱,一旦被监控端设备出现相关问题,立刻发送SNMP Trap,因此能够在最短的时间内发现故障,避免因为设备故障带来的经济损失。
  4.2 提供SNMP Trap的接收,并通过对Trap信息翻译,展现事件
  支持设备,主机和应用的SNMP Trap信息,从被动变为主动,全面监控IT系统。通过对SNMP Trap的翻译和展现,一旦某个IT组件出现问题,可以在短时间之内,即可收到故障信息,满足企业的快速发现问题的需要。
  通过SNMP Trap的接收规则定义,管理员可以过滤非重要设备的Trap信息,也可以过滤被监控设备的非重要故障信息,帮助管理员在第一时间收到真正需要的管理信息。
  4.3 定制SNMP Trap告警规则触发告警,提供多种方式发送告警信息
  用户通过管理端定制需要告警的SNMP Trap信息,针对特定SNMP Trap事件通过邮件、短信、语音、微信等方式向相关人员发送报警,帮助管理人员快速收到IT系统故障信息。
  4.4 支持事件导出
  汇总特定时间内特定SNMP Trap事件,同时可以以Excel格式导出事件数据,便于管理人员对故障信息进行统计和分析。
  4.5 支持各类设备厂家MIB库的导入
  虽然国内各种网络设备都支持SNMP Trap,但是各个厂家的MIB库并不能很好的支持公共标准,因此,很多监控系统都支持私有MIB库的导入,确保能够全面兼容各个厂家设备的SNMP Trap信息。
  5. SNMPTRAP工作流程
  5.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)发送
  5.2 Manager端
  A、配置snmptrapd.conf文件,设置访问权限
  B、将MIB文件导入到mibs文件夹中
  C、用perl等脚本语言编写处理trap的程序
  D、配置snmptrapd.conf文件,添加traphandler项,将不同的TRAP对应到不同的处理程序上
  5.3 流程图
DSC0000.jpg

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-430471-1-1.html 上篇帖子: PPTV的Zabbix监控体系 下篇帖子: zabbix 与 nginx (五)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表