用SNMP协议实现系统监控
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用SNMP协议实现系统监控
作者王基立系统监测的基本概念及分类:
a.系统监测的概述:
如何对现有IT架构的整体以及细节运行情况进行科学、系统和高效地监测是目前各企业运维和管理部门一项非常重要的工作内容。随着当前企业IT环境中服务器、应用数量和类型的不断地增加,运维部门需要通过科学和高效的手段尽可能详细、实时和准确地获取整个架构中具体到每个服务器、每个系统甚至每个应用程序工作的细节,并且会对所获取到的原始数据进行分析、绘图和统计,以便为后续的性能调优、建构调整以及各类型排错建立参考依据。
常见的监测对象基本上涵盖了IT运行环境的方方面面,包括机房环境、硬件、网络等,而每一个方面所涉及的监测项目则种类繁多。例如对硬件环境的监测中,所涵盖内容就会包括服务器的工作温度、风扇转速等指标;针对系统环境的监测,将包括基本的操作系统运行环境,如CPU、内存、I/O、存储空间使用状况、网络吞吐量、进程数量和状态等情况;针对具体的应用情况,涉及监测的内容可能会更多,而且也会有很多专门针对应用的指标。
除了监测的内容需要尽量全面之外,同时我们还希望所使用的监测解决方案能够灵活和具备更多扩展功能。例如有效地支持IT架构的变化和扩展,在监测量增加的情况下能够尽可能少地占用资源,拥有强大的事件通知机制等等。
今天本文所涉及的内容,主要是针对操作系统以及软件环境的监测,而且尤其是针对Linux操作系统的运行情况监测。尽管目前有很多的商用软件以及解决方案来实现相关的功能,但是实际上我们也有很多开源的解决方案可以起到相同的作用,而且效果也非常不错。下面的内容中,我们将会对这些解决方案的实现方法进行详细描述。
b.基于Linux上系统监测的基本原理以及种类:
在Linux系统上的系统监测所采用的方式基本上有两种:
第一种,通过SNMP协议结合数据采集软件来实现:
这种方法所涉及的架构一般包括两部分,其中一部分是被监测服务器,另外一部分则是网管工作站。至于实现方法具体来说就是在Linux服务器上启动SNMP
简单网络管理协议的进程snpmd来动态提供服务器在软件甚至硬件各方面的运行参数,这样服务器就成为了一个被监测的节点。然后在其他的网管工作站上的客户端软件应该具备两个功能:采集SNMP数据以及汇总统计信息。在绝大多数情况下,网管工作站上的监测软件都会基于Web页面方式提供系统运行状态图,而且涵盖了各种运行指标。同时新的状态信息能够动态更新到Web页面。
这种类型的监测所获得的数据格式标准而且全面,配置简单,所以从综合监测的角度看是一个不错的方案。
第二种,通过编写脚本调用系统状态监测的命令,并结合数据采集软件来实现:
在某些情况下SNMP协议的配置会相对比较麻烦,而且获取SNMP信息往往需要考虑选择不同的监测软件。从另外一个角度讲,其实Linux操作系统本身就提供了很多非常好用的状态获取工具,如sar(可实现多个指标的监测),iostat (专用于I/O使用率监测),vmstat(专用于cpu和内存使用情况监测)以及free 命令等工具。这些工具都可以通过结合系统任务计划以及自编脚本进行周期性调用,这就给监测提供了相当的便利。因为可以将这些命令嵌入到脚本中以周期性生成系统监测软件所需要的数据,最终一样可以通过这些数据结合绘图软件绘制出直观的统计图。这种类型的监测所获得的信息更加灵活和精确,对于一些熟悉脚本编程的用户来说,使用起来更是得心应手。
另外采用这种方式的情况下,利用命令监测可以无限制扩展,用户可以通过各种管道来获得和定制自己的监测脚本。
所以综上所述,这两种监测方案各有优势。因此我们会在下文中针对两种方案各提供一些案例和操作方法由易到难分别进行说明和演示。
各种系统监测手段在企业中部署和实现方法:
a.snmp协议的配置以及在Linux下和Windows上的测试方法:
首先我们来介绍一下第一种方法,即通过SNMP协议和数据采集软件来实现的系统运行监测方案。因为在相当多的情况下绝大多数企业都倾向于选择通过SNMP来获取服务器运行的各种信息,毕竟因为SNMP协议是业界实现监测的重要标准。
因此我们花点时间来介绍一下SNMP协议的基本概念以及工作原理。
简单网络管理协议SNMP是一种广泛用于监测网络设备(计算机、路由器)甚至其他设备(例如UPS)的网络协议,也是专门设计用于在IP网络管理网络节点(包括服务器、工作站、路由器、交换机及HUBS 等)的一种标准,属于应用层协议。SNMP使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长。通过SNMP 接收随机消息(及事件报告),网络管理系统将获知网络出现的各种问题。
SNMP 管理的网络有三个主要组成部分:被管理的设备(Managed Device)、代理(Agent)和网络管理系统(Network Management Station即NMS)。
被管理的设备是一个网络节点,包含ANMP代理并处在管理网络之中,有时也称为网络单元,用于收集并存储网络信息,通过SNMP、NMS能得到这些信息。被管理的设备可能是路由器、访问服务器,交换机和网桥、HUBS、主机或打印机等。
SNMP代理是被管理设备上的一个网络管理软件模块。SNMP代理拥有本地的相关管理信息,并将他们转换成与SNMP兼容的格式。
NMS运行应用程序以实现监测被管理设备。此外,NMS还为网络管理提供了大量的处理程序及必须的储存资源。任何受管理的网络至少需要一个或多个NMS。
目前,SNMP有3种不同的版本:SNMPv1、SNMPv2和SNMPv3。第1版和第2版没有太大差距,但SNMPv2是增强版本,包含了其他协议操作。前两种snmp 协议主要使用基于团体名称(community)的方式来实现网管工作站对代理的访问认证,与前两种相比SNMPv3则包含更多安全机制和远程配置手段,在认证方面可以使用基于某种对称和非对称加密协议来加密的用户名和密码来实现网管
工作站对代理的访问认证。而且为解决不同SNMP版本间的不兼容问题,
RFC3584定义了三者共存策略。
另外SNMP协议包括了四种基本的动作:
Get:
如果网络管理系统需要获得被监测的设备信息,则会执行get动作。
GetNext:
如果要获得的某个项目信息是一个项目列表中多个项目之一,网络管理系统会执行getnext获得相关所有项目信息。
Set:
网络管理系统使用set命令来改变被管理项目的某个值。
Trap:
如果被管理设备需要通知网络管理系统某些信息,需要执行trap命令。
最后需要说明的一点是在Red Hat Enterprise Linux中已经提供了SNMP相关的所有软件包,在这些软件包中提供了全部的MIB信息,信息文件存储于
/usr/share/snmp/mibs。所谓MIB是关于某个设备层次化的数据库(Management Information Base)。而且对于这个设备的每个值都采用唯一的Object Identifier
即OID表示,OID格式包括可用名称,前缀或者数字。