曾爱斌
(中海油信息科技有限公司,广东 深圳 518000 )
随着信息化的深入发展,企业积累了大量的信息系统和设备,如何对这些系统进行运维,使其实现效益最大化的目标就成为相关工作的重点。目前,国内大多数企业主要通过运维人员面对面或者远程访问服务器开展针对信息系统的运维工作,然而该方法较为原始且易出现人为误差。如果没有网络设备统一管理状态,就需要网络管理人员手动查看,不仅会增加工作量,而且还会引发过度浪费人力资源的问题[1]。综上所述,该文以自动化运维技术的作用、分类以及应用为核心,通过技术、应用和编写对Python自动化运维进行全面分析,从而实现有效提升工作效率、信息检索效率和用户网络安全效率等目标。该文希望通过Python自动化运维技术为提升各方面的效率提供新的途径和科学依据[2]。
Python是目前已经被全世界广泛使用的一种解释型、高级和通用的编程语言,它支持多种编程泛型,例如函数式、指令式以及反射式等。Python最早开始于20世纪80年代,是ABC语言的迭代产品,具有简单易学、运行速度快以及跨平台等特点。从21世纪开始,Python凭借自身的特色和优势呈现逐年递增的发展趋势,已被广泛用于许多行业和领域中。在第三方库的支持下(尤其许多优秀的运维相关组件),Python可以在企业信息系自动化运维方面发挥重要作用。
Python作为新的编程语言,虽然已经被广泛应用,但是该编程语言优、缺点并存,下面将具体介绍Python语言的优、缺点及发展现状。
Python具有以下3个优点:1) 语法比传统编程语言简单。与传统C/C++、Java以及C#等编程语言相比,Python对代码格式的要求低,还具备简单、免费、兼容性强、用途广泛以及易学习等特点,因此在学习、操作和应用过程中无须用户花费太多精力。2) 免费开源。开源意味源代码是开放式的,所有用户不需要支付任何费用就可以查看、修改以及使用源代码,也无须担心版权问题。3) 可扩展性强。Python语言拥有丰富的模块,覆盖了文件I/O、GUI、网络编程、数据库访问以及文本操作等大部分应用场景[3]。
Python具有以下2个缺点:1) 运行速度慢。解释型语言的通病之一就是运行速度慢,一方面是因为它在运行的同时也在翻译 “源代码”;另一方面,Python作为高级语言,屏蔽了许多底层细节,因此工作时会消耗大量资源。2) 代码加密困难。Python运行程序不是将源代码编译成可执行的程序,而是直接运行源代码,因此存在源码加密困难的问题。
经过不断发展,Python的排名已由2020年的第三升至2021年的第一(表1),这表明Python作为新的编程语言已经超越传统语言(呈上升趋势),而传统的C/C++、Java以及C++等语言的排名呈下降的趋势。
表1 Python在TIOBE榜单的排名
首先,与其他程序语言相比,Python语言变化率低、增长率高(同比最高),为2000—2021年间各大编程语言的最优发展趋势(见表1)。其次,Python的语法不仅简洁,而且在强大的第三方程序库的支持下,其已被应用到各领域中,是目前的主流编程语言之一[4]。
自动化运维是通过运维工具或平台实现IT基础设施及业务应用日常任务处理和运维流程的自动化,以期提高效率、降低风险,并促进运维组织的成熟和各种能力的升级。网络自动化运维内容主要包括日常任务处理、运维流程以及能力升级,具体情况如图1所示。
自动化运维并不是孤立地建设和运行,需要“自动化”、“配置管理”以及“监控”三者相辅相成,即三者之间既相互独立又相互联系,最好的方法是共同建设、共同迭代。
自动化运维分为面向基础架构的自动化、面向应用的自动化以及面向业务的自动化。而面向基础架构的自动化主要指基础设施即服务(IASS)和平台即服务(PAAS),这个类别的自动化建设目标是降低运维人员的工作量。面向应用的自动化的对象以类(类指模板,一个模板中存在多个函数供使用)和对象(调用被包装在内的函数)为单位,应用中包括各类基础架构资源。面向业务的自动化是IT自动化的最终目标,归根结底是为IT服务。
图1 网络自动化运维图
自动化运维的作用如下:1) 提高运维效率。手动开展运维工作会消耗大量的劳力及财力。自动化运维可以实现批量操作的目标,从而显著地提高效率和水平。2) 减少错误。即使最谨慎的人也会犯错,尤其是面对重复的工作。通过运维自动化工具来完成相关工作可以降低错误率。3) 减少财务支出,效率最大化。运维专家们可以通过运维自动化将精力集中在更复杂、更有战略意义的业务问题。通过自动化可以减少员工数量和财务支出,实现效率最大化的目标。4) 提高满意度。自动化运维工具帮助IT运维高效支持业务发展,为内部和外部客户提供高水平支持。5) 显著降低成本。当出现系统中断、人为错误以及重复工作等情况时,会付出高昂的费用和代价,而自动化运维可以有效地降低相关成本。
在https://www.Python.org/downloads/ 下载适合系统的Python,在软件安装完毕后,需要修改环境变量。具体步骤为在 “系统变量”PATH路径下添加“C:Python27”
在https://pypi.Python.org/pypi/psutil 下载适合系统的psutil。在安装前,需要先注册Python2.7,否则会报错。因此,该文先对脚本register.py进行编辑注册,详细代码如下。
要监控脚本在其他Windows 上的运行情况,就需要安装Python环境,可以将监控脚本打包成exe程序发布,当需要运行该Python脚本时,通过单击脚本exe程序就可以使用程序内置代码、函数信息执行计算数据的任务。
首先,安装打包程序py2exe-0.6.9.win32-py2.7.exe。在网页(http://sourceforge.net/)中找到相应的版本下载打包程序,下载后直接安装即可。
其次,编写一个简单的编译脚本,脚本如下。
setup_py2exe.py
from distutils.core import setup
Import py2exe
Setup(console=[“monitor.py"])
再次,打包 。进入命令行窗口,在setup_py2exe.py所在的目录运行Python setup_py2exe.py py2exe。运行后会在当前目录生成2个文件夹(build和disk),不需要关注build文件夹,只需要重点关注dist文件夹,dist文件夹里面会产生monitor.exe及其他文件,而monitor.exe就是所需要运行的exe程序,如果要运行相关脚本内容、获取内容,那么仅需要对dist文件夹发布的内容进行读取、解译。将dist文件夹发布到其他Windows机器后,直接运行monitor.exe有可能会报错“由于应用程序配置不正确,应用程序未能启动”。这是因为py2exe打包的程序需要9.0.21022.8版本的MSVCR90.DLL,可以从网上下载并将其放到dist目录下一起发布。另外,除了9.0.21022.8版本的MSVCR90.DLL外,还需要将Microsoft.VC90.CRT.manifest文件放在dist目录下。
其中,该文相关Microsoft.VC90.CRT.manifest脚本代码如下。
<assembly xmlns="urn:schemas microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable> </noInheritable>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8"
processorArchitecture="x86" publicKeyToken="1fc8b3b9 a1e18e3b"></assemblyIdentity>
<file name="msvcr90.d11" />
</assembly>
最后,完成上述操作后,再次将dist目录发布到其他Windows服务器上,当需要通过monitor.exe程序进行操作时,须进入dist目录,通过运行相关monitor.exe程序完成计算内容。
经过不断发展,Python在第三方库及各程序员的帮助下,已经成为目前最受欢迎的编程语言之一。 Python具有简单、灵活以及功能强大等优势,已经成功应用到运维领域。该文通过读取磁盘利用率案例对网络自动化运维进行介绍。而在实际工作中,运维者可以根据自己的需求以及对未来网络的自动化运维场景的应用需求开发更多的运维工具。借助Python语言打造服务于网络运维的Python网络自动化运维技术,摆脱技术对网络自动化运维的限制,从而提高网络自动化运维技术。