基于开源软件zabbix实现对处理解释高性能集群整体CPU利用率的监控

2021-10-22 00:37陈涛梁妍曹士炳张卫华
科技信息·学术版 2021年12期

陈涛 梁妍 曹士炳 张卫华

摘要:随着石油勘探地震资料处理、地质综合解释新技术的发展,带来了更大的数据量、更复杂的数学运算等问题,必须借助高性能计算机集群方可解决,而集群的利用率及耗电等使用成本对项目的经济性具有重大影响。通过探索,实现了基于开源软件zabbix对集群CPU利用率的有效监控,可充分利用集群资源,使高性能计算机集群系统运行在最佳状态,提高了作业运算效率并节约成本。

关键词:集群监控;高性能计算集群;CPU利用率;Zabbix

1、引言

在石油地震勘探和开发的过程中,面对勘探目标向复杂地质构造、地层岩性等领域转移,东方物探创新采用了“宽方位、宽频带、高密度”即“两宽一高”三维勘探技术,地震数据的采集量变得越来越大。在与某国家合作的勘探项目中,每天数据量达到2T左右,项目整体数据量达到PB级别,这就需要大规模的高性能计算机(HPC)集群对采集到的数据进行并行处理[1]。

HPC集群,是由高性能计算机节点与存储通过高性能交换机连接,具有较强的运算速度和信息处理能力。通过并行算法和开发相关软件,解决大规模科学问题的计算和海量数据的处理。在石油勘探领域,用于地震勘探资料处理解释的高性能计算集群称之为处理解释集群。

大数据量的作业要求充分利用高性能计算资源,使处理解释集群运行在最佳状态。CPU利用率,正是衡量高性能计算集群运行效率的重要指标。它指的是HPC节点在某一时间点CPU繁忙程度,对于处理解释集群来说,CPU的利用率即是处理解释作业效率的表现,并且在机房中的处理解释集群,其耗电量是成本的很大一部分。因此,有效监控CPU的利用率,在集群中对资源状态的提前预测,对于提高作业运算效率与节约成本是很重要的手段,能够给运维人员提供重要辅助作用[2]。

2、现有集群监控方法

在linux系统上,可以使用TOP命令,查看CPU的利用率,或者使用uptime命令,查看系统负载情况。在现在的处理解释集群中,对集群整体的监控,是通过某处理软件中的监控来实现的,如下图:

如图所示,在该监控界面,可以显示出CPU利用率、内存使用率、swap空间使用率、磁盘读写速度、网络使用情况等。

但是该监控有一定的局限性。首先,该监控仅能显示每一个计算节点的CPU利用率,不能监控统计集群整体的CPU使用状况。更重要的是,其不能记录历史信息,例如一周内、一个月内的集群整体CPU使用状况。若能够得到CPU整体利用率的历史记录,则集群管理人员可以根据当时的存储使用情况、网络流量状态与CPU利用率对当时的处理解释作业进行数据分析,通过多方面的数据对比,改变作业类型参数等,提高作业运行速度,改善作业成果质量。

3、使用第三方软件对集群进行监控

为了实现监控集群整体CPU利用率,我们进行了前期调研工作,有三种方式可以达到目的:

1)从头进行监控系统的研发

2)在现有处理软件监控界面的基础上,提取接口并二次开发该监控

3)使用第三方开源软件

第一种方法需要研究经费与时间,监控任务迫在眉睫,不予考虑。第二种方法需要联系相关处理软件公司对其监控模块进行二次开发,成本太高。经过调研后,决定使用第三方开源软件(zabbix)进行集群部署并根据处理解释集群进行自定义配置、优化。

4、开源软件在处理解释集群的部署及优化

4.1 监控服务器的部署

为了部署监控服务器,我们把机房的一台设备安装RHEL6.10操作系统并使用yum安装zabbix服务器端。

在进行初步的安装配置之后,需要对计算集群进行客户端的安装。当前数据中心一个集群计算节点数在128-256个,总共有20-30个集群,约有5000个计算节点。在安装的过程中,发现随着监控的计算节点越多,服务器端越慢,经过调查分析,这与监控服务器的配置、被监控计算节点监控项配置、zabbix相关配置参数、数据库配置有很大的關系。

4.2 监控服务器的硬件优化

监控服务器作为监控的数据库存储服务器,其数据库所在硬盘的读写速度、内存大小、CPU运算速度等,配置越高越好。

在此次对服务器优化时,为了保证数据库的安全与兼顾数据库读写速度,使用了2块盘做raid1的系统盘,4块盘做raid5的数据库盘。内存由原来的64GB扩大到了256GB。

4.3 Zabbix服务器端参数的配置优化

在zabbix_server.conf中,我们可以配置服务器的各项参数,其中比较重要的是以下几项:

1)StartPollers 此项参数为server的进程数,根据服务器配置,相应调整此参数的值。

2)StartDiscoverers 此项参数为自动发现主机进程数,提高此参数的值,可以更快的批量添加计算节点。

3)StartPingers 此项参数为fping检测进程数,比较耗费CPU和数据连接数,过小容易检测不到在线主机,过大容易对服务器资源造成浪费。

4)StartDBSyncers 此项参数为数据库连接进程数,若太小无法正常写入数据库,太大会增加数据库负载压力。

5)CacheSize 此项参数为缓存大小,根据现有内存大小进行相应变化。

6)TrendCacheSize 此项参数为趋势数据缓存,根据现有内存大小进行相应变化。

4.4 计算节点的配置优化

在默认的模板中,一个计算节点需要监控100+监控项,其中大部分为跟业务无关的监控项,可以去除,以减轻服务器端负载压力。保留必要的CPU、内存、网络状态的监控,其余的监控项(例:每秒系统中断数、最大文件打开数等)可以不去监控。

为了缓解服务器压力,在zabbix组成架构下有一种方式为主动模式。客户端在主动模式下,可在间隔时间内传送数据至服务器,不需要服务器每次过来取数据,从而大大降低获取数据对服務器造成的压力[3]。所以我们选择所有客户端采用主动模式发送数据至服务器。

在监控计算节点个数超过2000时,可以增加代理服务器减轻主服务器压力,通过代理服务器可以轻松增加被监控计算节点的个数。

4.5 数据库的优化

服务器中最重要的组件为数据库,数据库优化是监控正常且高效运行的有力保证。

在默认安装的服务器中,使用mysql数据库,并且使用HouseKeeper作为历史数据保存表[4]。此表在数据库中会越来越大,默认每隔一段时间,清理最早的数据,但是这样每次清理会增大数据库的负载,在清理过程中,其他查询、插入功能会造成卡顿。为了让数据库更高效的运行,我们需要停用HouseKeeper功能,并把数据库的表分区进行了优化。

同时需要修改mysql数据库默认配置,优化数据库参数,需要修改/etc/my.conf文件,重要参数如下:

innodb_file_per_table=1 此项参数为innodb可以把每个表数据单独保存,方便管理也提高了性能。

innodb_log_file_size 此项参数为innodb逻辑日志文件大小,适当增加此参数大小,可以防止如删除历史数据等操作不成功、日志回滚等问题。

innodb_buffer_pool_size 此项参数为innodb缓冲池的大小,如果是单独的数据库服务器,可以配置到总内存的80%,与软件在同一服务器中,配置到40%-60%比较合适。

经过不断地优化配置,找到了适合处理解释集群的监控配置,为以后更大规模的集群监控奠定了基础。

5、针对处理解释集群CPU整体利用率,做自定义监控

部署zabbix服务器后,经过配置即可进行集群计算节点的状态监控,包括CPU、内存、硬盘、网络等。每个计算节点的CPU都可以正常采集,但若想要监控集群整体CPU的利用率,则需要进行相关的自定义监控项配置:

1)添加所有集群主机,并链接默认Linux模板。

2)在模板中,新建监控项:CPU-time-user-nice,Type:Calculated,Key:cpu.compute,Formula:(100-last("system.cpu.util[,idle]")) 。

3)建立主机组,把集群中所有节点加入到主机组中。

4)新建主机,不链接任何模板。

5)在新主机中添加监控项:CPU-time,Type:Zabbix aggregate,Key:grpavg["xxx","Cputime.compute",last,0]

其中第二步,是统计CPU利用率中user与nice占用之和。在各种处理解释软件中,由于软件的不同,导致CPU在部分软件运行时,nice值偏高。为了正确显示CPU利用率,则直接使用100-空闲CPU利用率。

第五步中,利用聚合检测功能,把本组集群的所有节点CPU利用率做平均处理,得到集群整理体用率。

具体监控结果实例如下图:

从上图可以看出,在一个月内,集群整体CPU利用率平均值为64.4%,峰值为97.63%。相关运维人员,可以根据这一个月的CPU利用率去对比近一个月的业务情况,做出合理的作业时间安排,以提高整体集群的利用率。

结束语

Zabbix作为企业级的图形化分布式监控解决方案,具备监控数据采集、存储、告警规则配置以及图形化展示界面的功能。本文通过对zabbix的工作机制进行研究,结合高性能计算机的配置,从功能到部署,实现了对处理解释集群运行状态的实时监控。根据个性化的需求进行开发完善,收集汇总需要的监控信息,对集群整体CPU利用率的监控提供了行之有效的方法,为系统性能优化提供有效帮助,可供参考和借鉴。

参考文献

[1]周光耀,田继东.地震资料处理并行模型研究[J].内蒙古石油化工,2011,37(11):3-4.

[2]盛东浦. 集群监控平台的设计与实现[D].郑州大学,2019.

[3]陈若珠,宋承云.基于分布式网络的监控系统[J].计算机系统应用,2013,22(07):49-52.

[4]马丽娜. 基于Zabbix的集群监控预测平台的设计与实现[D].西安电子科技大学,2018.