基于操作系统命令和插件技术的服务器设备监视和自动建模
2021-04-30胡信超孔令帅
胡信超,孔令帅
(积成电子股份有限公司,山东济南 250010)
服务器设备的实时状态监视是自动化运维人员保证业务系统正常运行的重要手段。现有的服务器设备监视技术或方法主要有:服务器运行状态指示灯、各厂家提供的单机监视程序、简单操作系统命令、SNMP 协议、插件技术等。
针对几台或十几台服务器设备,简单地安装监视程序、查看运行指示灯或通过SNMP 协议进行运行状态的查询,可以在自动化运维人员的精力掌握范围之内,但是随着不同领域的自动化水平的提高和系统及服务器设备复杂度的增加,仅仅靠上述的几种方法无法有效提升监视效率[1]。
针对现状,提出了一种通过操作系统命令和开源插件的方式对不同类型服务器进行状态监视的方法,同时,为了提高监视效率,采用程序自动化处理的方式对扫描到的新设备进行自动建模,最大程度上减少自动化运维人员的工作量并减少由于人工的参与带来的信息录入不准确的现象[2]。
1 常见服务器设备状态监视方法
1.1 基于服务器运行状态指示灯的设备监视
每一个成熟的服务器产品都会在服务器上设置各种类型的服务器运行状态指示灯,主要有:电源指示灯、硬盘指示灯、网络指示灯等,如果服务器相应组件发生了故障,对应指示灯都会进行状态或颜色的变化。该方法对服务器运行状态的监视最为直观有效,但是带给自动化运维人员的信息量有限,且需要定时到设备机房查看,不仅无法对某些隐藏的状态信息进行查阅,也会浪费运维人员的大量时间和精力。
1.2 基于各厂家提供的单机监视程序
互联网上针对Windows 操作系统有各种类型的单机监视程序,如:鲁大师、CPU-Z 等。该类软件的优点是操作简单且监视信息全面,但是自动化运维人员无法通过网络资源统一汇总所有的服务器设备信息,且在Linux 和Unix 上相应的软件较少,无法达到所有服务器设备运行状态的集中监视。
1.3 简单操作命令的服务器设备状态监视
不同的操作系统都具备各自的状态运行信息查询指令,几乎所有的服务器运行状态信息都可以通过操作命令[3]的方式进行查询,且该方式可以通过网络远程命令,如:ssh、远程桌面等方式进行远程查询,自动化运维人员不需要走到每个服务器面前进行操作,在一定程度上减少了运维人员的体力劳动。
但是由于现场操作系统类型较多,操作命令种类繁杂,对运维人员知识技能的要求相对较高,且不能在同一设备上同时对所有设备进行监管,导致该方式的工作效率大打折扣[4]。
1.4 基于简单网络管理协议(SNMP)的服务器设备状态监视
SNMP 中文名称为简单网络管理协议,专门设计用于对网络节点(服务器、工作站、路由器、交换机等)设备管理的一种标准协议。该协议中的每一种设备运行状态信息都被赋予了一个对象标识符(OID),只要网络管理(NMS)与每一个SNMP 设备(Agent)能够在网络上互通,且通过SNMP 版本和团体字(Community)的验证,即可通过远程的方式获得被监管服务器的实时状态运行信息,如:CPU 使用率、内存使用率、磁盘使用率、网卡/网口状态等[5]。
该方法解决了无法一对多的设备运行状态监管,并且能够监管的数据类型种类较多。但是该方式需要程序开发人员的支持,每一种不同类型的设备,或同一厂家不同型号的设备对应的OID 都有差异,导致程序开发难度增加,并且后期的系统维护水平要求较高,系统维护复杂度较大,自动化运维人员需要进行专业知识和技能培训[6]。
同时SNMP 协议无法完成操作系统自身运行状态信息的获取,如:CPU 使用率TOP10 的进程信息等,无法对服务器进行全方位的状态监视[7]。
1.5 基于Hyperic-Sigar插件的服务器设备状态监视
Hyperic-Sigar 是一个收集系统各项底层信息的工具集,有如下特点:
1)收集信息全面
收集的信息如:CPU、MEM、PROCESS、IOSTAT、NETWORK 等。使用Hyperic-Sigar 完全可以模仿出cpuinfo、meminfo、top、free、ifconfig 等多种Unix 平台和Windows 平台的指令。
2)跨平台
支持的平台包括:Windows 系列(32 系列、IA64 系列、AMD64 系列)、Linux 系列、freeBsd 系列、HPUnix系 列、Sparc/Sparc64/Sun solaris 系 列、macOs 系 列、AIX 系列等。
3)提供的API 接口全面
Hyperic-Sigar 本身由C 语言开发而成,提供了丰富的API 接口,包括:Java,.NET,PERL,PHP,Python。
2 服务器设备监视及自动建模
简单使用上述任何一个方法都无法实现自动化运维人员高效、统一、便捷的服务器运行监视,但是通过对操作系统命令和Hyperic-Sigar 等技术的融合,实现被监管服务器的自动化建模及综合数据的监视,可以在最大限度上减轻自动化运维人员的工作强度和复杂度,实现服务器设备的实时监视。
2.1 服务器模型及实时数据采集
由于Hyperic-Sigar 为第三方插件技术,所以在操作系统命令能够支持的情况下,尽量减少Hyperic-Sigar 的使用,可以最大限度地提高数据采集服务的稳定性和可操控性。
针对Windows[8]、Linux[9]、Unix[10]三大类操作系统,服务模型及运行信息采集命令如表1 所示。
2.2 采集数据整理
针对不同的操作系统,对应表1 的数据采集和不同的后台服务处理后,需要统一生成归一化的可扩展标记语言(XML)[11-12]数据文件,便于数据处理服务的模型分析[13]及实时运行数据的展示。
生成的XML 文件主要为服务器模型及运行信息文件,如图1 所示,详细信息包含了主IP、CPU 数量、内存大小、内存使用率、交换区使用率、IO_WAIT占比、磁盘容量、磁盘整体使用率、磁盘整体读速度、磁盘整体写速度、进程数量、网络连接数。
表1 服务器模型及运行信息采集
服务器磁盘模型[14]及运行信息主要由磁盘分区、磁盘分区名字、每个分区磁盘的总容量、每个磁盘使用率、每个磁盘的读速率、每个磁盘写速率组成,具体内容如图2 所示。
服务器网卡模型及运行信息主要由网卡IP、网卡名字、每个网卡的MAC 信息、每个网卡的最大传输单元、每个网卡接收包的数量、每个网卡收到出错包的数量、每个网卡发送包的数量、每个网卡发送出错包数量、每个网卡发生冲突次数、每个网卡传输队列长度等,具体内容如图3 所示。
服务器进程Top10 信息主要展示占用CPU 使用率前十的进程信息,主要有进程的名字、CPU 使用率、内存信息、进程号、启动时间,具体内容如图4所示。
2.3 数据流程处理
每一个安装完成数据采集代理的服务器,都会定时自动将采集到的模型信息和软硬件运行信息通过socket(ActiveMQ)[15-16]的方式发送到该系统的综合数据处理服务器。
图1 服务器模型及运行信息文件
图2 磁盘模型及运行信息文件
图3 网卡模型及运行信息文件
综合数据处理服务器对所有收集到的设备及操作系统模型及状态运行信息进行统一分析处理。数据文件分析后,如果是新的模型文件,系统将针对具体情况创建服务器模型、磁盘模型、网卡模型和进程信息模型,具体数据流程详见图5。
如有新的服务器需要加入到监视队列,仅需要自动化运维人员将数据采集Agent 部署到该服务器即可,Agent 将自动采集本地服务器模型及运行状态信息给综合数据处理服务器,可以最大限度地简化自动化运维人员的工作流程。
图4 CPU Top10进程信息文件
图5 数据流程图
3 结束语
根据自动化运维人员针对现场繁杂、数量众多的服务器设备监视进行了探讨和梳理,通过试验验证了该方案不仅可以减轻自动化运维人员的工作量,同时可以较全面地对所有常见类型的服务器进行实时监视,为众多的自动化系统安全稳定运行打下了坚实的基础。