功能上,更晚开发的lsfMonitor可以完美兼容openlavaMonitor,且功能更强,可以直接移步 https://my.oschina.net/liyanqing/blog/4694818。
OpenLava是100%免费、开源、兼容IBM® Spectrum LSFTM的工作负载调度器,支持各种高性能计算和分析应用,在各大IC公司被广泛引用。
openlava开源免费,兼容LSF,是IC公司(尤其是中小型IC公司)的福音。但是由于种种原因,开源团队不再进行开发工作,且工具缺少配套的job/resource监控类工具,所以并不易用。以往的工作中,根据openlava使用中的实际需求,我开发过一些openlava辅助类工具,以帮助openlava的工具配置,数据采集,前台监控。出于资源共享的目的,我把数据采集和前台监控的功能采用标准python工具的格式进行了重新开发,命名为openlavaMonitor,开源到了github上,以方便大家下载使用 (地址https://github.com/liyanqing1987/openlavaMonitor)。
下面对工具做一下简单介绍,帮助大家了解。
1. 工具介绍
工具的使用分为两部分: 后台数据采集,前台数据展示。这一部分主要讲一下工具的前台展示部分。
工具为图形界面,包含4个页面,分别展示不同的内容。
1.1 第一个页面为JOB页,主要展示job相关信息。
在Job输入框输入job id,点击Check按钮,可以显示出job的关键信息,job的详细信息,job的memory使用量变化曲线。
其中job的memory使用量变化曲线十分有用,可以用来判断job的资源使用情况,用来debug job crash的原因(很多job crash都跟memory使用过量有关)。
1.2 第二个页面为JOBS页,列出所有job的简要信息。
可以按照job user/job status/queue/host来选择jobs,点击Check按钮可以获取所有符合条件的jobs。默认显示所有queue上RUN的jobs。
下方显示job的基本信息,包括用户/job状态/所在queue/所在host/所用slot/cpuTime/resource设置/内存使用量等。
所有的列,点击表头可排序。
点击job item可以跳转到JOB页面,显示出相关job的信息。
1.3 第三个页面为HOSTS页,列出所有host的简要信息。
可以显示host的基本信息,状态/所属queue/job数目/cpu和memory的使用量等。
所有的列,点击表头可排序。
点击host item可以跳转到JOBS页面,列出host上所有的jobs。
1.4 第四个页面为QUEUES页,主要展示QUEUE相关信息。
左上侧有queue列表和每个queue上RUN/PEND的job数目,点击queue item,右侧或列出queue上最近一段时间RUN/PEND的job数目(每天平均值),下侧会列出queue的具体信息。
queue的一段时间的RUN/PEND的job数目可以帮我了解queue的负载情况,从而动态地调整queue上的资源分配。
2. 安装配置
如果你想使用openlavaMonitor,下面是具体的安装配置过程。
2.1 安装python和openlava
极力建议安装anaconda(3-4.2.0及以上版本),可以解决所有的库依赖。
如果仅安装python,需要安装3.5及以上版本,并且需要手工安装所有依赖库。
openlava的安装请参照我的另一篇博文 openlava-4.0 安装教程(VMware/centos7)
2.2 git clone
将openlavaMonitor的源码从github上clone到本地。如果你的linux不能联网,你也可以Download ZIP包,传到linux端然后解压。
2.3 用root账号拷贝到合适目录,安装
用root账号将安装包拷贝到合适的路径。
采用python3 install.py来安装。(极力推荐使用anaconda3版本的python)
如果你没有安装anaconda,你还需要手工安装所有依赖库(命令如下),如果linux没有联网的话,我只能祝你好运了。
2.4 工具配置
minitor/conf/config.py文件用于做基本配置,可以用来指定数据库存储路径“dbPath”和临时文件存放路径“tempPath”,当然你也可以使用默认值而不做任何更改。
别忘了用root账号把这两个目录的写权限都打开,否则其他用户无法往里面写文件。
2.5 启用数据采集程序
monitor/bin/bsample.py用于采集基本数据。
主程序中需要用到job和queue的基本信息,所以我们至少要启动服务采集这两个信息。
你可以启动bsample.py作为服务程序,按照interval周期一直采集,也可以在crontab中定期启动程序采集信息,我采用后者。
2.6 测试
我们丢两个job,然后采集一下数据,看看效果。
注意,不要用root账号执行,用普通账号丢job。
然后我们临时手工采集一下数据,看一下效果。
启动程序。
已经能看到两个job了。
点击第一个job,看看它的详细信息。
只有一个采样点,所以memory曲线比较单调,不过规律采样后曲线就会好看多了。
再看看host和queue的信息。
因为这是测试用新装的系统,所以只有一个queue和一个host,如果是公司实际的应用环境,信息还是很丰富的。
后记:
这个工具包含了基本的和通用的功能,能够满足openlava的简单应用场景。
实际应用中,欢迎大家基于自身的应用需求对它做改造。我们在实际的应用中也是添加了更多的专有功能的,但是限制于每个公司的IT环境不同,就没有把special的东西放到这个开源工具里面。