提交 0ee7ef8d authored 作者: 陈泽健's avatar 陈泽健

fix(service-monitor): 过滤无效检测值,修复 bash 脚本检测逻辑

- parser.py: 新增 _INVALID_VALUES 过滤 N/A、无法获取、未知等无效值
- 01_system_basic.sh: 修复 check_command 函数不存在,改用 command -v
- 02_cpu_check.sh: 修复 SCHEDULER_RUNQUEUE 取值逻辑,适配新版内核
Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
上级 f0f7c2db
......@@ -117,14 +117,13 @@ check_architecture() {
# 检测系统资源限制
check_ulimit() {
local ulimit_info=""
if check_command ulimit; then
if command -v ulimit &>/dev/null; then
ulimit_info=$(ulimit -a 2>/dev/null | head -20 | tr '\n' ',' | sed 's/,$//')
fi
if [ -n "$ulimit_info" ]; then
output_result "ULIMIT_INFO" "$ulimit_info"
else
output_result "ULIMIT_INFO" "无法获取"
fi
# 无法获取时不输出,让 parser 忽略
}
# 检测内核启动参数
......
......@@ -185,13 +185,16 @@ check_softirqs() {
# 检测CPU调度器运行队列长度
check_scheduler_runqueue() {
local runqueue
runqueue=$(awk '/runnable/ {print $2}' /proc/stat 2>/dev/null)
# 新版内核 /proc/stat 格式变化,尝试多种方式获取
runqueue=$(awk '/^procs_running/ {print $2}' /proc/stat 2>/dev/null)
if [ -z "$runqueue" ]; then
runqueue=$(grep -oP 'runnable\s+\K\d+' /proc/stat 2>/dev/null)
fi
if [ -n "$runqueue" ]; then
output_result "SCHEDULER_RUNQUEUE" "$runqueue"
else
output_result "SCHEDULER_RUNQUEUE" "未知"
fi
# 无法获取时不输出
}
# 检测进程CPU亲和性示例
......
......@@ -36,6 +36,18 @@ _VALUE_STATUS_MAP = {
"严重": CRITICAL, "ERROR": CRITICAL, "异常": CRITICAL, "未运行": CRITICAL,
}
# 无效值/未安装占位符(这些值表示服务未安装或检测失败,不作为正常检测项)
_INVALID_VALUES = {
"", "N/A", "n/a", "NA", "null", "None", "none",
"获取失败", "无法获取", "未知", "未检测", "不支持",
"服务未安装", "容器未运行", "未找到", "不存在",
}
def _is_invalid_value(value: str) -> bool:
"""判断值是否为无效/未安装占位符。"""
return value.strip() in _INVALID_VALUES
@dataclass
class CheckItem:
......@@ -108,6 +120,9 @@ def parse_module_output(raw: str, module_id: str, category: str) -> List[CheckIt
if key.endswith("_LEVEL"):
continue
value = raw_map[key]
# 跳过无效值(服务未安装、检测失败等)
if _is_invalid_value(value):
continue
name = DISPLAY_NAMES.get(key, key)
threshold = THRESHOLDS.get(key, "")
status = _resolve_status(key, value, raw_map)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论