LSF Explorer提供了四张许可证报表,在工作中对许可证管理提供了极大的便利。但是有一个问题就是选择时间范围大了以后,比如一年以上,就会发现要等待很长时间才会显示出路图形。
通过分析Explorer的后端日志发现了原因,Explorer 对每个指标都会单独统计,因此当选择的时间范围比较大时,也就是数据量比较大时,统计速度就会变慢。
有没有在不改变硬件性能的条件下加快速度的办法呢?
答案就是自己定制。
LSF Explorer也提供了定制图表的功能,那么可以使用官方提供的定制方法吗?不能使用,因为官方的定制方法也是把底层的逻辑封装了。
需要仅依据LSF Explorer采集的许可证数据,自己编写数据统计和展示功能。
首先来研究一下LSF Explorer中许可证数据的数据结构。
许可证数据存放在Elastic数据库的flexlm_license_usage*索引中,每月一个索引,以日期为后缀。比如 flexlm_license_usage-202308 就代表8月份的许可证数据。下面就是许可证索引的主要数据字段:
字段名称 | 类型 | 说明 |
lic_feature_name | keyword | 许可证名称 |
lic_vendor_name | keyword | 许可证所属厂商,实际是服务程序名称 |
lic_server_name | keyword | 许可证服务器 |
lic_total | double | 许可证总数量 |
lic_usage | double | 许可证使用量 |
user_name | keyword | 用户名称 |
host_name | keyword | 签出许可证的主机名 |
time_stamp_utc | double | 采样时间戳 |
通过分析许可证索引中的数据,发现其中的数据分为两类,1)一类是许可证的摘要信息,即每个许可证在采样点时的总数量信息;2)另一类是许可证使用的详细信息,即每个许可证在采样点时的每个用户的使用量信息。在进行统计分析时需要区分开,否则会导致统计错误。
此外在进行数据统计分析时,可以利用Elastic DSL的分组聚合功能一次性统计出所有数据指标,这样可以大大节省统计时间。
通过定制方式,从选择许可证后开始计算时间,到完成图形显示后结束计时,速度提升10倍以上。下图就是定制生成的许可证使用统计图。
上面的图形是后端通过Python Elastic DSL 接口从Elastic DB获取统计好的数据,返回到前端JS图形库显示的。