汪永宁,母俐丽
(1.淮南职业技术学院,安徽 淮南 232001;2.北京化工大学 北方学院信息学院,北京 065201)
笔者通过与数十家中小企业的IT运维人员进行沟通,总结出中小型企业IT运维工作的普遍共性有:运维人员少,经验不足;运维工作内容全面,实际工作量大;运维系统支撑资金少。要在以上困境中,让运维人员“轻松运维”,对于企业IT运行状况“运筹帷幄、决胜千里”,最好的方案应该是让企业实现IT运维自动化,解放运维人员的劳动力,那又如何实现运维自动化呢?笔者认为,解决问题的核心应是“技术”。下面将介绍一些容易实现和实施的技术来帮助企业实现运维自动化。
数据的采集是IT运维工作的根本,只有完成了数据的撷取,才可以通过数据来了解企业IT系统运行的状况,才能够进行分析、预防故障的发生、处理故障以及进行系统的升级、优化工作。在此给大家介绍三种数据采集技术。
2.1.1 SNMP技术
SNMP,就是简单网络管理协议(Simple Network Management Protocol)的简称。目前共有3个版本:SNMPv1、SNMPv2c、SNMPv3。现在大多数设备基本上都支持这3个版本,以SNMPv2c最为常见,3个版本的约定细节可以分别查看RFC1157、RFC1901、RFC2571技术文档。
要利用SNMP来采集数据,首先要使被采集端设备和采集端设备都要支持SNMP协议,对于WINDOWS操作系统就是在【控制面板】中“添加或删除程序”,在“Windows组件”中,勾选并双击“管理和监控工具”,最后勾选中“简单网络管理协议”;而对于LINUX系统建议通过yum install net-snmp进行安装;而对于网络设备,如交换机、路由器来说主要是通过命令行或是WEB管理中启动SNMP,并设置读写团体字就可以了。
如,获取WINDOWS主机的CPU利用率:
说明CPU的利用率分别为23%和14%。
2.1.2 通过WMIC撷取WINDOWS系统的数据
WMI(Windows Management Instrumentation)是Windows管理规范是Windows管理系统的核心,WMIC提供了从命令行接口和批命令脚本执行系统管理的支持,为WMI名称空间提供了一个强大的、友好的命令行接口。
下面是在WINDOWS系统下通过WMIC撷取远程主机进程数据的示例:
2.1.3 通过脚本(linuxshell、perl、php、bat)进行数据采集
有些数据是不能通过snmp或是WMIC方式取得的,要求运维人员通过脚本来实现,可以采用linux的shell脚本、Perl脚本、或是PHP脚本程序来实现。如要采集监控机到远程主机的网络延时,就可以写个脚本通过PING指令向目标主机发送ICMP数据包,通过返回的结果来获取数据。
如:(一个简单的Perl脚本)
还有,如要采集apache服务器的状态、mysql数据库服务器的运行状态参数等,都可以通过脚本来实现。
系统以及应用的日志,是在运维中预知故障、定位故障、分析故障的主要信息之一,所以运维管理系统中,日志信息是不可或缺的一部分。
目前,Linux系统常用有 syslog、syslog-ng、rsyslog三种日志管理系统。其中syslog是老版本Linux系统默认的日志守护进程。而在许多新的LINUX系列发布版本中,如CentOS6.0、Ubuntu10,都用rsyslog替换了原有的syslog。对于syslog-ng所实现的功能基本上rsyslog都可以实现,所以建议使用syslog和rsyslog。
Rsyslog主要功能有:可以通过UPD和TCP来接收远程主机日志;实现自身系统日志管理以及作为日志中心服务器管理远程主机日志;支持多种数据库,mysql、oracle等,将日志发送到数据库中;丰富的日志过滤处理规则语法。
2.3.1 利用RRDTOOL存储和展现数据
RRDtool代表 “Round Robin Database tool”,其实是一种存储数据的方式,使用固定大小的空间来存储数据,在一段时间后,当所有的空间都存满了数据,就又从头开始存放。其特点为:
(1)RRDtool可以进行数据存储,但同时RRDtool又允许创建图表,其他的数据库只能存储数据,不能创建图表。
(2)RRDtool的每个rrd文件的大小是固定的,而普通的数据库文件的大小是随着时间而增加的。
(3)其他数据库只是被动的接受数据,RRDtool可以对收到的数据进行计算,例如前后两个数据的变化程度(rate of change),并存储该结果。
(4)RRDtool要求定时获取数据,其他数据库则没有该要求。
图1就是利用RRDtool绘制出的一个LINUX服务器负载(Load)的图形:
图1 LINUX服务器负载(Load)图
2.3.2 利用PHP开发简单的网页展现数据
Php是开放源代码、免费的、具有跨平台性的高效率开发语言、并且有图像管理功能,可以将用SNMP、WMI、脚本以及Rsyslog取得的数据存入Mysql后,用PHP进行图表的输出,可以说是实现IT运维低成本运维的一个好语言工具。在此,列出几个可以用PHP结合mysql的开发的IT运维中提高工作效率的功能。
(1)IP地址管理
通过页面Form表单提供数据,之后写入数据数据库,最后用php对IP地址进行管理,可以对其进行增加、编辑、删除、回收、导入、导出到EXCEL等操作,还可以实现对IP地址的使用进行历史记录的查询。
(2)故障记录统计分析
利用php结合mysql对运营维护中的故障进行记录,并且可以按时间段对故障记录进行不同故障级别、不同故障类别的统计分析,并以柱形图、饼形图的方式直观展现分析结果。帮助IT运维分析故障、总结问题、积累经验。
(3)IT设备资产管理
帮助企业实现个人计算机、服务器、网络设备、各种信息产品的IT资产信息化管理,简化企业对于资产配置、设备维保、资产盘点方面的统计工作,可以快速地查询IT设备品牌配置、故障维修的情况,实现合理的配置资源,为后期采购决策提供有力的参考数据,通过将IT资产信息与人、物、财、场地等资源的结合,使得高效率的资产管理和企业运营得以实现。
(4)运维知识库管理
通过运维知识库管理,可以按企业自身业务特点不断地积累运维经验知识库。在运维过程中,运维人员将自己处理事件的方法和步骤添加到知识库中作为知识共享,当其他人再遇到此类事件后能够找到参考的解决方案,提高解决问题的效率。系统提供对经验知识点的详细分类,具备方便、高效的搜索功能,避免知识流失,减少故障处理转交率,降低运维成本,以实现快速响应IT服务的需求。
2.4.1 常用的报警方式有三种
报警系统客户端。值班人员在客户机上安装、运行客户端程序,当监视参数异变时,客户机在发出音响同时弹出画面。
短信方式,GSM模块通过RS232接入报警系统服务器。系统在产生报警信息时系统向值班人员移动电话发送短信息报告当前的报警内容,提醒注意处理。
电话查询/通知方式,系统通过调制解调器接入普通电话拨入/拨出装置,用以实现远程语音报警/远程语音查询功能。系统在产生报警信息时,自动拨打值班人员电话用语音通知所发生的事件;对于报警系统所监视的信息,可通过拨打专线电话查询所有信息。
2.4.2 通过脚本以及接口实现告警
对于告警功能的实现,目前采用EMAIL、短信方式、MSN方式告警基本上就已经可以满足告警通告的需求。
利用发EMAIL告警,可以通过PHP类代码来实现,也可以利用SHELL脚本来发送告警邮件,下面是用sendmail来发送告警邮件的简单示例:
对于手机短信告警,可以利用短信猫或是飞信的WEB接口,通过curl或是WEB表单提交参数来实现,同样还有MSN告警,也可以利用其WEB接口来实现。
在IT运维工作中,运维信息数据的采集、分析处理、日志的管理、数据的展示、故障的告警以及运维的辅助性功能,都可以通过脚本或是现在的一些免费的程序来简化运维人员工作,只要企业的IT运维人员可以积极拓展思路,80%的工作都可以通过程序开完成。