name: lsfmonitor_usage description: lsfMonitor工具自身的安装、配置、使用、各功能模块说明,覆盖bmonitor/bsample/CLI工具/memPrediction等全部组件 version: 1.0.0 tags: - lsfmonitor - bmonitor - bsample - 使用说明 - seedb - akill - process_tracer - check_issue_reason - show_license_feature_usage - rag_builder
lsfMonitor 工具使用百科
一、项目简介
lsfMonitor 是一款面向 IBM LSF / OpenLava / Volclava HPC 集群的监控工具。核心功能:
- 数据采样(bsample):定期采集作业、队列、主机、负载、利用率、License 等指标,存入 SQLite
- 可视化监控(bmonitor):PyQt5 桌面 GUI,多 Tab 浏览集群全貌
- CLI 工具集:批量杀作业(akill)、查库(seedb)、诊断(check_issue_reason)、进程追踪(process_tracer)等
- AI 助手:内置 LLM 对话,支持执行命令、查 License、查作业历史、搜索文档
- 内存预测(memPrediction):基于 XGBoost 的作业内存用量预测子系统
二、安装与部署
2.1 安装
# 安装 Python 依赖
pip install -r requirements.txt
# 执行安装脚本
python3 install.py [-p PREFIX] [-f] [-m]
| 参数 | 说明 |
|---|---|
-p PREFIX |
安装路径(默认当前目录) |
-f |
强制安装,覆盖已有 config.py |
-m |
同时安装 memPrediction 子系统 |
-c |
清理旧安装(删除 shell 脚本和配置) |
安装脚本会:
- 检查 Python 版本(要求 3.12.12+)
- 在
monitor/bin/和monitor/tools/下生成 shell 包装脚本(设置LSFMONITOR_INSTALL_PATH等环境变量) - 生成默认配置文件
monitor/conf/config.py - 创建
db/数据目录
2.2 升级/打补丁
# 用 patch 工具从新包同步到已有安装
monitor/tools/patch -p /path/to/new/package [-d] [--no-backup]
| 参数 | 说明 |
|---|---|
-p |
新版本包路径(必需) |
-d |
预览模式,不实际修改 |
--no-backup |
跳过备份 |
三、配置文件(config.py)
配置文件路径:{INSTALL_PATH}/monitor/conf/config.py
用户可在 ~/.lsfMonitor/conf/config.py 放置个人覆盖配置(优先级更高)。
核心配置项
| 变量 | 说明 | 示例 |
|---|---|---|
db_path |
SQLite 数据库存储根目录 | /data/lsfMonitor/db |
license_administrators |
License 管理员过滤("all" 表示所有人可见) |
"all" |
lmstat_path |
lmstat 二进制路径 | /path/to/lmstat |
lmstat_bsub_command |
通过 bsub 执行 lmstat 的命令前缀 | "bsub -q normal -Is" |
excluded_license_servers |
排除的 License 服务器(格式 "port@host" 空格分隔) |
"" |
AI 相关配置
| 变量 | 说明 |
|---|---|
ai_api_base_url |
LLM API 地址(OpenAI 兼容格式) |
ai_api_key |
API 密钥 |
ai_model_name |
模型名称或 endpoint ID |
ai_embedding_api_base_url |
Embedding 模型 API 地址(为空则回退到 ai_api_base_url) |
ai_embedding_api_key |
Embedding 模型 API 密钥(为空则回退到 ai_api_key) |
ai_embedding_model_name |
RAG 向量检索用的 embedding 模型 |
ai_dangerous_commands |
需用户确认的危险命令(空格分隔,默认 bkill badmin brestart bstop bresume bswitch rm kill killall shutdown reboot mkfs dd) |
三项 AI 必填:
ai_api_base_url、ai_api_key、ai_model_name均非空时 AI 标签页才可用。
四、数据采样(bsample)
bsample 负责从集群采集数据写入 SQLite,通常由 crontab 定时执行。
4.1 命令格式
monitor/bin/bsample [选项]
4.2 采样选项
| 参数 | 说明 | 对应 LSF 命令 |
|---|---|---|
-j |
采集已完成作业信息 | bjobs -u all -d -UF |
-m |
采集运行中作业内存和idle_factor | bjobs -u all -r -UF |
-q |
采集队列信息 | bqueues |
-qH |
采集队列-主机映射关系 | bqueues -l |
-H |
采集主机状态 | bhosts |
-l |
采集主机负载(ut/tmp/swp/mem) | lsload |
-u |
采集用户作业统计 | bjobs -u all -d -UF |
-U |
采集利用率(slot/cpu/mem) | lsload/bhosts/lshosts |
-UD |
计算并保存日利用率 | 基于 -U 数据统计 |
-A |
生成 AI 集群分析 HTML 报告(需配置 AI) | 大模型调用 |
-c |
按条目上限清理数据库 | — |
4.3 推荐 crontab 配置
3 0 * * * /path/to/monitor/bin/bsample -c # 清理旧数据
10 11,23 * * * /path/to/monitor/bin/bsample -j # 作业历史(一天两次)
*/5 * * * * /path/to/monitor/bin/bsample -m # 作业内存和idle_factor
*/5 * * * * /path/to/monitor/bin/bsample -q # 队列
*/10 * * * * /path/to/monitor/bin/bsample -qH # 队列-主机映射
*/5 * * * * /path/to/monitor/bin/bsample -H # 主机
*/5 * * * * /path/to/monitor/bin/bsample -l # 负载
30 11,23 * * * /path/to/monitor/bin/bsample -u # 用户(一天两次)
*/10 * * * * /path/to/monitor/bin/bsample -U # 利用率
55 23 * * * /path/to/monitor/bin/bsample -UD # 日利用率
5 8 * * * /path/to/monitor/bin/bsample -A # AI集群分析报告(每天一次)
注意:crontab 中需设置 PATH 和 LSF_* 环境变量,否则 bjobs 等命令无法执行。
4.4 数据库结构
数据存储在 {db_path}/{cluster_name}/ 下:
| 路径 | 说明 | 生成命令 |
|---|---|---|
host.db |
主机静态信息 | bsample -H |
job/{date} |
作业历史(json 格式) | bsample -j |
job_data/*.db |
作业内存和idle_factor | bsample -m |
job_mem/*.db |
旧版作业内存用量(已废弃,保留兼容读取) | — |
load.db |
主机负载信息 | bsample -l |
queue.db |
队列 run/pend slot 信息 | bsample -q |
queue_host_mapping.db |
队列-主机映射 | bsample -qH |
user/{date} |
用户作业统计 | bsample -u |
utilization.db |
slot/cpu/mem 利用率 | bsample -U |
utilization_day.db |
按天汇聚的利用率 | bsample -UD |
ai_report/cluster_analysis_*.html |
AI 集群分析报告 | bsample -A |
AI 相关数据存储在 {db_path}/ai/ 下(不按 cluster 分)。
五、GUI 监控(bmonitor)
5.1 启动
monitor/bin/bmonitor [-j JOBID] [-u USER] [-f FEATURE] [-t TAB] [-d] [--disable_license]
| 参数 | 说明 |
|---|---|
-j JOBID |
启动后直接在 JOB 标签页显示指定作业 |
-u USER |
在 JOBS 标签页过滤指定用户的作业 |
-f FEATURE |
在 LICENSE 标签页定位指定 License feature |
-t TAB |
启动时切换到指定标签页(JOB/JOBS/HOSTS/LOAD/USERS/QUEUES/UTILIZATION/LICENSE/AI) |
-d |
启用暗黑模式 |
--disable_license |
禁用 License 检查(加速启动) |
5.2 标签页说明
| 标签页 | 功能 |
|---|---|
| JOB | 单个作业详情查看(bjobs -UF 格式) |
| JOBS | 作业列表浏览,支持按用户/状态/队列筛选 |
| HOSTS | 集群主机状态总览(bhosts 数据) |
| LOAD | 主机负载曲线(ut/tmp/swp/mem 历史趋势) |
| USERS | 用户作业统计(懒加载) |
| QUEUES | 队列状态与详情 |
| UTILIZATION | 集群利用率统计与趋势(slot/cpu/mem,懒加载) |
| LICENSE | EDA License 使用情况与过期时间(懒加载) |
| AI | AI 智能助手对话界面 |
USERS、UTILIZATION、LICENSE 标签页采用懒加载,首次切换时才查询数据。
5.3 菜单栏
| 菜单 | 功能 |
|---|---|
| File | 导出各标签页表格数据、退出 |
| Setup | 启用队列/利用率详情模式 |
| Function | Check Pend/Slow/Fail reason(调用 check_issue_reason 工具) |
| AI | 记录检索(Record Search)、问题分析(Problem Analysis)、记录清理(Record Cleanup) |
| Help | 版本信息、关于 |
六、CLI 工具集
6.1 akill — 批量杀作业
monitor/tools/akill [-j JOBID] [-J NAME] [-c CMD] [-q QUEUE] [-u USER] [-m HOST] [-s TIME]
支持模糊匹配和范围指定(如 -j 10200-10450),多条件组合过滤后批量 bkill。
6.2 seedb — 查看数据库
monitor/tools/seedb -d DATABASE [-t TABLES] [-k KEYS] [-n NUMBER]
查看 lsfMonitor 的 SQLite 数据库内容,支持指定表、列、行数。
6.3 check_issue_reason — 作业异常诊断
monitor/tools/check_issue_reason -j JOBID [-i ISSUE]
PyQt5 GUI,诊断作业 PEND/SLOW/FAIL 的原因,参考 exit_code.yaml 和 term_signal.yaml。
6.4 process_tracer — 进程追踪
monitor/tools/process_tracer [-j JOBID | -p PID]
PyQt5 GUI,显示 LSF 作业或本地进程的进程树。
6.5 show_license_feature_usage — License 用量详情
monitor/tools/show_license_feature_usage -s SERVER -v VENDOR -f FEATURE
PyQt5 GUI,展示指定 License feature 的详细使用信息。
6.6 patch — 升级打补丁
monitor/tools/patch -p PATCH_PATH [-d] [--no-backup]
从新版包同步文件到已有安装,自动处理配置迁移。
6.7 rag_builder — RAG 向量数据库构建
monitor/tools/rag_builder -i FILE [FILE ...] [-o OUTPUT_DIR] [--prefix PREFIX] [--rebuild]
[--compress {flat,sq8,sq6,sq4,pq256,pq128,pq64}]
[-l] [-d DELETE ...] [--chunk_size N] [--chunk_overlap N]
[--batch_size N] [--workers N]
构建和管理 AI 助手使用的 RAG 向量数据库,支持 PDF/txt/md/rst 文档输入,默认追加模式。
七、AI 助手
7.1 功能
AI 标签页内置 LLM 对话助手,具备以下能力(通过 tool-use 实现):
| 工具 | 功能 |
|---|---|
run_command |
在集群上执行 LSF/Linux 命令(有禁止/危险命令分级) |
query_license_info |
查询 EDA License 使用情况(按 feature/user/server) |
query_job_history |
查询历史作业记录(按 job_id/user/queue/status/date) |
search_documentation |
基于 FAISS 的 RAG 文档检索 |
7.2 对话日志
所有对话自动保存到 {db_path}/ai/ai_log.db,按用户分表(conversations_{user})。
通过菜单 AI → Record Search 可检索历史对话,AI → Problem Analysis 可生成分类分析报告。
7.3 经验固化
标记为 solved 的历史对话会自动注入后续相似问题的 system prompt,帮助 AI 参考过往成功案例。
八、memPrediction 内存预测子系统
安装时加 -m 参数启用。提供:
| 组件 | 说明 |
|---|---|
sample.py |
采集训练数据 |
train.py |
XGBoost 模型训练 |
predict.py |
作业内存用量预测 |
report.py |
预测报告生成 |
web_app/ |
Flask 后端 + React 前端 Web 界面 |
九、常见问题
Q: bmonitor 启动很慢?
- 加
--disable_license跳过 License 检查 - USERS/UTILIZATION/LICENSE 标签页是懒加载的,不会拖慢启动
Q: bsample 采集不到数据?
- 确认 LSF 环境已加载(
lsid能正常返回) - 确认
LSFMONITOR_INSTALL_PATH环境变量已设置(用 shell 包装脚本启动即可) - 检查
db_path目录权限
Q: 如何查看历史作业?
- bmonitor JOBS 标签页浏览近期作业
seedb -d job/{date}.db直接查 SQLite- AI 助手中使用
query_job_history工具
Q: 数据库文件太大?
bsample -c按条目上限清理(job_data/ 保留30天数据)- AI 对话记录:菜单 AI → Record Cleanup
Q: AI 助手回答不准确?
- 确认
ai_api_base_url、ai_api_key、ai_model_name配置正确 - 将有用的对话标记为 solved,后续相似问题会自动参考
- 可在
monitor/conf/skills/下添加自定义 skill 扩展 AI 知识
Q: 如何添加自定义 AI skill?
在 {INSTALL_PATH}/monitor/conf/skills/ 下创建子目录,放入 SKILL.md 文件:
---
tags:
- 关键词1
- 关键词2
---
# Skill 正文(会注入到 system prompt)
用户提问包含任意 tag 时,skill 内容会自动注入。
Q: 个人配置如何覆盖全局配置?
将修改后的 config.py 放到 ~/.lsfMonitor/conf/config.py,该文件优先于安装目录下的全局配置。