提交 65258f35 authored 作者: 陈泽健's avatar 陈泽健

feat(scripts): 优化中间件检测功能支持多架构,claude code增加prd的skill执行。

- 将FastDFS检测脚本按架构分离为check_fdfs_x86.sh和check_fdfs_arm.sh
- 更新PowerShell脚本自动检测远程服务器架构并上传对应检测脚本
- 重构MQTT检测函数,支持使用内置工具包和容器内命令两种模式
- 添加ARM64架构服务器配置支持,新增云端ARM架构服务器信息
- 优化NTP检测的日志输出处理,避免空输出导致的错误
- 更新相关文档中的架构支持说明和脚本部署要求
上级 bb2efe4a
...@@ -5,7 +5,8 @@ ...@@ -5,7 +5,8 @@
"Bash(dir \"E:\\\\GithubData\\\\ubains-module-test\\\\自动化部署脚本\\\\x86架构\\\\新统一平台\" /s /b)", "Bash(dir \"E:\\\\GithubData\\\\ubains-module-test\\\\自动化部署脚本\\\\x86架构\\\\新统一平台\" /s /b)",
"Bash(powershell -NoProfile -Command \"$content = Get-Content ''C:\\\\PycharmData\\\\ubains-module-test\\\\AuxiliaryTool\\\\ScriptTool\\\\远程更新程序\\\\remote_program_update.ps1'' -Raw -Encoding UTF8; $utf8BOM = New-Object System.Text.UTF8Encoding $true; [System.IO.File]::WriteAllText\\(''C:\\\\Users\\\\EDY\\\\Desktop\\\\test\\\\remote_program_update.ps1'', $content, $utf8BOM\\)\")", "Bash(powershell -NoProfile -Command \"$content = Get-Content ''C:\\\\PycharmData\\\\ubains-module-test\\\\AuxiliaryTool\\\\ScriptTool\\\\远程更新程序\\\\remote_program_update.ps1'' -Raw -Encoding UTF8; $utf8BOM = New-Object System.Text.UTF8Encoding $true; [System.IO.File]::WriteAllText\\(''C:\\\\Users\\\\EDY\\\\Desktop\\\\test\\\\remote_program_update.ps1'', $content, $utf8BOM\\)\")",
"Bash(dir \"C:\\\\PycharmData\\\\ubains-module-test\\\\AuxiliaryTool\\\\ScriptTool\\\\ServiceSelfInspection\")", "Bash(dir \"C:\\\\PycharmData\\\\ubains-module-test\\\\AuxiliaryTool\\\\ScriptTool\\\\ServiceSelfInspection\")",
"Bash(git checkout -- \"AuxiliaryTool/ScriptTool/远程更新程序/program_update.sh\" \"AuxiliaryTool/ScriptTool/远程更新程序/remote_program_update.ps1\")" "Bash(git checkout -- \"AuxiliaryTool/ScriptTool/远程更新程序/program_update.sh\" \"AuxiliaryTool/ScriptTool/远程更新程序/remote_program_update.ps1\")",
"Bash(ls -la \"C:\\\\PycharmData\\\\ubains-module-test\\\\.claude\\\\skills\\\\prd\"\" 2>/dev/null || echo \"Not found \")"
] ]
} }
} }
# PRD 工作流 Skill
用于管理 PRD 需求文档和执行计划文档的工作流工具。
## /prd plan <需求文档路径>
解析 PRD 需求文档,生成执行计划文档。
**功能:**
- 读取指定的 PRD 需求文档
- 分析需求内容,提取关键任务和验收标准
- 生成对应的执行计划文档
**输出:**
- 执行计划文档命名为:`<需求文档名>_计划执行.md`
- 保存位置:与需求文档相同目录
**示例:**
```
/prd plan "Docs/PRD/服务自检/_PRD_服务自检需求文档.md"
```
**执行步骤:**
1. 读取需求文档
2. 分析需求内容(项目背景、执行目标、任务模块、配置要求、验收标准)
3. 生成执行计划文档(包含:执行概述、任务分解与实施计划、验收标准、测试计划、风险评估、实施记录、后续工作、附录)
4. 显示生成的执行计划文档路径和摘要
---
## /prd code <执行计划文档路径>
解析执行计划文档,生成或更新代码。
**功能:**
- 读取指定的执行计划文档
- 分析任务分解和实施步骤
- 根据计划生成或更新对应的代码文件
**示例:**
```
/prd code "Docs/PRD/服务自检/_PRD_服务自检需求文档_计划执行.md"
```
**执行步骤:**
1. 读取执行计划文档
2. 分析实施计划(任务分解、脚本文件、代码位置、配置参数、验收标准)
3. 检查现有代码
4. 生成或更新代码(新增功能、修改功能、遵循代码规范、添加注释)
5. 验证并输出修改摘要
**安全规则:**
- 不修改文件路径以外的任何文件
- 遵循现有代码风格和命名规范
- 添加必要的错误处理
- 不引入安全漏洞
---
## 文档命名规范
| 类型 | 命名格式 | 示例 |
|------|----------|------|
| 需求文档 | `_PRD_<模块名>_<子模块>.md` | `_PRD_服务自检需求文档_中间件检测优化.md` |
| 执行计划文档 | `<需求文档名>_计划执行.md` | `_PRD_服务自检需求文档_中间件检测优化_计划执行.md` |
## 工作流
```
需求文档 (_PRD_*.md)
↓ /prd plan
执行计划文档 (*_计划执行.md)
↓ /prd code
代码实现
```
#!/bin/bash
# verify_arm_fastdfs.sh
echo "=== ARM服务器FastDFS验证 ==="
echo "部署模式: 单容器 (Tracker+Storage)"
echo "容器名称: utracker3"
echo "网络模式: Host网络"
echo ""
CONTAINER="utracker3"
CLIENT_CONF="/etc/fdfs/client.conf"
# 1. 检查服务状态
echo "1. 检查FastDFS服务状态:"
echo " 容器内进程:"
docker exec "$CONTAINER" ps aux | grep -E "(fdfs|nginx)" | grep -v grep
echo ""
# 2. 检查端口
echo "2. 检查端口监听:"
PORTS=("22122" "23000" "8888")
for port in "${PORTS[@]}"; do
if netstat -tln | grep -q ":$port "; then
PROCESS=$(netstat -tlnp | grep ":$port " | awk '{print $7}' | cut -d'/' -f2)
echo " ✅ 端口 $port 正在监听 (进程: $PROCESS)"
else
echo " ❌ 端口 $port 未监听"
fi
done
echo ""
# 3. 检查配置文件
echo "3. 检查配置文件:"
if docker exec "$CONTAINER" test -f "$CLIENT_CONF"; then
echo " ✅ $CLIENT_CONF 存在"
echo " 当前配置:"
echo " tracker_server:"
docker exec "$CONTAINER" grep "tracker_server" "$CLIENT_CONF" | grep -v "^#"
echo " storage_server:"
docker exec "$CONTAINER" grep -E "^(store_path|group_name)" "$CLIENT_CONF" | grep -v "^#"
else
echo " ❌ $CLIENT_CONF 不存在"
fi
echo ""
# 4. 测试上传功能
echo "4. 测试文件上传功能:"
# 创建测试文件
TEST_FILE="/tmp/fastdfs_arm_test_$(date +%s).txt"
echo "ARM FastDFS Test - $(date)" > "$TEST_FILE"
ORIGINAL_MD5=$(md5sum "$TEST_FILE" | awk '{print $1}')
echo " 测试文件: $TEST_FILE (MD5: $ORIGINAL_MD5)"
# 复制到容器
if docker cp "$TEST_FILE" "$CONTAINER:/tmp/" 2>/dev/null; then
CONTAINER_FILE="/tmp/$(basename "$TEST_FILE")"
echo " ✅ 文件已复制到容器"
# 执行上传
echo " 执行上传命令..."
UPLOAD_RESULT=$(docker exec "$CONTAINER" fdfs_upload_file "$CLIENT_CONF" "$CONTAINER_FILE" 2>&1)
if [[ $? -eq 0 ]] && [[ -n "$UPLOAD_RESULT" ]] && [[ "$UPLOAD_RESULT" == group* ]]; then
echo " ✅ 上传成功!"
echo " 文件ID: $UPLOAD_RESULT"
# 测试下载
echo " 执行下载测试..."
DOWNLOAD_RESULT=$(docker exec "$CONTAINER" fdfs_download_file "$CLIENT_CONF" "$UPLOAD_RESULT" "/tmp/downloaded_arm.txt" 2>&1)
if [[ $? -eq 0 ]]; then
echo " ✅ 下载成功"
# 验证完整性
DOWNLOADED_MD5=$(docker exec "$CONTAINER" md5sum "/tmp/downloaded_arm.txt" 2>/dev/null | awk '{print $1}' || echo "")
if [[ "$ORIGINAL_MD5" == "$DOWNLOADED_MD5" ]]; then
echo " ✅ 文件完整性验证通过"
echo ""
echo "🎉 ARM服务器FastDFS验证成功!"
echo ""
echo "验证结果汇总:"
echo " ✓ Tracker服务正常 (端口:22122)"
echo " ✓ Storage服务正常 (端口:23000)"
echo " ✓ 文件上传功能正常"
echo " ✓ 文件下载功能正常"
echo " ✓ 文件完整性验证通过"
else
echo " ❌ 文件完整性验证失败"
echo " 原始MD5: $ORIGINAL_MD5"
echo " 下载MD5: $DOWNLOADED_MD5"
fi
# 清理
docker exec "$CONTAINER" rm -f "/tmp/downloaded_arm.txt" 2>/dev/null
else
echo " ❌ 下载失败: $DOWNLOAD_RESULT"
fi
else
echo " ❌ 上传失败: $UPLOAD_RESULT"
# 尝试其他方法
echo " 尝试使用fdfs_test命令:"
docker exec "$CONTAINER" fdfs_test "$CLIENT_CONF" upload "$CONTAINER_FILE" 2>&1 | tail -5
fi
# 清理容器文件
docker exec "$CONTAINER" rm -f "$CONTAINER_FILE" 2>/dev/null
else
echo " ❌ 无法复制文件到容器"
fi
# 清理本地文件
rm -f "$TEST_FILE" 2>/dev/null
# 5. HTTP访问测试
echo ""
echo "5. HTTP访问测试:"
if netstat -tln | grep -q ":8888 "; then
SERVER_IP=$(hostname -I | awk '{print $1}')
if [[ -n "$UPLOAD_RESULT" ]] && [[ "$UPLOAD_RESULT" == group* ]]; then
# 构建URL
FILE_URL="http://${SERVER_IP}:8888/$UPLOAD_RESULT"
echo " 测试URL: $FILE_URL"
# 测试访问
HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 3 "$FILE_URL" 2>/dev/null || echo "timeout")
if [[ "$HTTP_STATUS" == "200" ]]; then
echo " ✅ HTTP访问成功 (状态码: 200)"
# 获取文件内容验证
CONTENT=$(curl -s --connect-timeout 3 "$FILE_URL" 2>/dev/null | head -c 30)
echo " 文件内容预览: $CONTENT..."
elif [[ "$HTTP_STATUS" == "timeout" ]]; then
echo " ⚠️ HTTP访问超时"
else
echo " ⚠️ HTTP访问异常 (状态码: $HTTP_STATUS)"
fi
else
echo " ℹ️ 没有文件ID,跳过HTTP测试"
fi
else
echo " ⚠️ HTTP服务(8888端口)未运行"
fi
echo ""
echo "=== 验证完成 ==="
...@@ -71,7 +71,7 @@ if [[ $? -eq 0 ]] && [[ -n "$UPLOAD_RESULT" ]] && [[ "$UPLOAD_RESULT" == group* ...@@ -71,7 +71,7 @@ if [[ $? -eq 0 ]] && [[ -n "$UPLOAD_RESULT" ]] && [[ "$UPLOAD_RESULT" == group*
echo "6. 可选HTTP访问测试:" echo "6. 可选HTTP访问测试:"
# 获取访问URL # 获取访问URL
FILE_PATH=$(echo "$UPLOAD_RESULT" | sed 's|group1|/group1|') FILE_PATH=$(echo "$UPLOAD_RESULT" | sed 's|group1|/group1|')
echo " 访问URL: http://服务器IP:8888$FILE_PATH" echo " 访问URL: https://服务器IP$FILE_PATH"
else else
echo " ✗ 文件完整性验证失败" echo " ✗ 文件完整性验证失败"
......
#!/bin/bash
# ARM64 mosquitto 便携版 v1.4.15
DIR="$(cd "$(dirname "$0")" && pwd)"
export LD_LIBRARY_PATH="$DIR/lib:$LD_LIBRARY_PATH"
CMD="$1"
shift
case "$CMD" in
sub|subscribe)
exec "$DIR/mosquitto_sub" "$@"
;;
pub|publish)
exec "$DIR/mosquitto_pub" "$@"
;;
version|--version|-v)
echo "mosquitto version 1.4.15 running on libmosquitto 1.4.15."
echo "系统: Ubuntu 18.04 ARM64 (aarch64)"
echo "架构: $(uname -m)"
;;
test)
echo "=== ARM64 mosquitto v1.4.15 测试 ==="
export LD_LIBRARY_PATH="$DIR/lib:$LD_LIBRARY_PATH"
echo "1. 可执行性测试:"
echo " mosquitto_sub 帮助信息:"
"$DIR/mosquitto_sub" --help 2>&1 | grep "mosquitto_sub version" | head -1
echo -e "\n2. 连接测试:"
TEST_TOPIC="test/arm64/v1_$(date +%s)"
echo " 测试主题: $TEST_TOPIC"
echo " 启动订阅 (3秒)..."
"$DIR/mosquitto_sub" -h localhost -t "$TEST_TOPIC" -v &
PID=$!
sleep 1
echo " 发布测试消息..."
"$DIR/mosquitto_pub" -h localhost -t "$TEST_TOPIC" -m "ARM64 v1.4.15 测试消息"
sleep 2
kill $PID 2>/dev/null
echo " 测试完成"
echo -e "\n3. 文件验证:"
echo " 可执行文件:"
[ -x "mosquitto_sub" ] && echo " ✅ mosquitto_sub" || echo " ❌ mosquitto_sub"
[ -x "mosquitto_pub" ] && echo " ✅ mosquitto_pub" || echo " ❌ mosquitto_pub"
echo " 依赖库: $(ls -1 lib/ 2>/dev/null | wc -l) 个文件"
;;
help|--help|-h|*)
echo "ARM64 mosquitto-clients 便携版"
echo "版本: 1.4.15 (Ubuntu 18.04 仓库版本)"
echo "架构: aarch64"
echo "协议: MQTT v3.1/3.1.1"
echo ""
echo "用法: $0 [sub|pub|version|test|help]"
echo ""
echo "示例:"
echo " $0 sub -h localhost -t 'test/#' -v"
echo " $0 pub -h localhost -t 'test' -m '消息内容'"
echo " $0 version"
echo " $0 test"
echo ""
echo "注意:"
echo " 1. 必须使用此包装器或设置 export LD_LIBRARY_PATH=./lib"
echo " 2. 这是较旧的 1.4.15 版本"
echo " 3. 支持 MQTT v3.1/3.1.1 协议"
;;
esac
#!/bin/bash
echo "ARM64 mosquitto 便携版验证脚本"
echo "==============================="
echo "1. 系统架构验证:"
ARCH=$(uname -m)
echo " 当前架构: $ARCH"
if [ "$ARCH" = "aarch64" ]; then
echo " ✅ 匹配 ARM64 架构"
else
echo " ⚠ 架构不匹配 (应为 aarch64)"
fi
echo -e "\n2. 文件完整性验证:"
export LD_LIBRARY_PATH="./lib:$LD_LIBRARY_PATH"
echo " 可执行文件:"
for file in mqtt mosquitto_sub mosquitto_pub; do
if [ -f "$file" ]; then
if [ -x "$file" ]; then
size=$(ls -lh "$file" | awk '{print $5}')
echo " ✅ $file ($size)"
else
echo " ❌ $file (无执行权限)"
chmod +x "$file" 2>/dev/null && echo " 已修复权限"
fi
else
echo " ❌ $file (不存在)"
fi
done
echo -e "\n3. 依赖库验证:"
if [ -d "lib" ]; then
LIB_COUNT=$(ls -1 lib/ 2>/dev/null | wc -l)
if [ "$LIB_COUNT" -gt 0 ]; then
echo " ✅ 依赖库目录存在,包含 $LIB_COUNT 个文件"
# 检查关键库
echo " 关键库检查:"
IMPORTANT_LIBS=(
"ld-" # 动态链接器
"libc.so" # C 库
"libpthread.so" # 线程库
"libssl.so" # SSL 库
"libcrypto.so" # 加密库
"libmosquitto.so" # MQTT 库
"libcares.so" # DNS 库
)
MISSING=0
for pattern in "${IMPORTANT_LIBS[@]}"; do
if ls lib/${pattern}* 2>/dev/null | grep -q .; then
echo " ✅ $pattern"
else
echo " ⚠ 未找到: $pattern"
MISSING=$((MISSING + 1))
fi
done
if [ "$MISSING" -eq 0 ]; then
echo " ✅ 所有关键库都存在"
else
echo " ⚠ 缺少 $MISSING 个关键库"
fi
else
echo " ❌ 依赖库目录为空"
fi
else
echo " ❌ 依赖库目录不存在"
fi
echo -e "\n4. 功能验证:"
echo " 版本信息:"
./mqtt version
echo -e "\n 连接测试 (2秒):"
TEST_TOPIC="verify_$(date +%s)"
echo " 测试主题: $TEST_TOPIC"
timeout 2 ./mqtt sub -h localhost -t "$TEST_TOPIC" -v &
PID=$!
sleep 1
echo " 发布测试消息..."
./mqtt pub -h localhost -t "$TEST_TOPIC" -m "ARM64便携版验证消息"
sleep 1
kill $PID 2>/dev/null
echo " 连接测试完成"
echo -e "\n5. 运行测试:"
echo " 运行完整测试..."
./mqtt test 2>&1 | tail -10
echo -e "\n6. 最终状态:"
echo " 目录: $(pwd)"
echo " 总大小: $(du -sh . | cut -f1)"
echo " 文件数: $(find . -type f | wc -l)"
echo "==============================="
echo "验证结果:"
if [ -x "mqtt" ] && [ -f "mosquitto_sub" ] && [ -d "lib" ] && [ "$(ls -1 lib/ 2>/dev/null | wc -l)" -gt 5 ]; then
echo "✅ ARM64 便携版验证通过"
echo " 可以使用: ./mqtt [命令]"
else
echo "❌ 验证失败,请检查以上问题"
fi
# _PRD_服务自检需求文档_中间件检测优化 # _PRD_服务自检需求文档_中间件检测优化
> 版本:V1.8 > 版本:V2.0
> 更新日期:2026-02-03 > 更新日期:2026-02-03
> 适用范围:服务自检脚本 - 中间件连接检测功能 > 适用范围:服务自检脚本 - 中间件连接检测功能
> 来源:提取自《服务自检需求文档》4.18节 > 来源:提取自《服务自检需求文档》4.18节
...@@ -483,14 +483,16 @@ docker exec umysql mysqladmin -u root -p"dNrprU&2S" status ...@@ -483,14 +483,16 @@ docker exec umysql mysqladmin -u root -p"dNrprU&2S" status
**检测目标:** 验证FastDFS服务的连接状态、文件上传下载功能及数据完整性 **检测目标:** 验证FastDFS服务的连接状态、文件上传下载功能及数据完整性
**检测脚本:** `AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs.sh` **检测脚本:**
- x86架构:`AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs_x86.sh`
- ARM架构:`AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs_arm.sh`
**部署要求:** **部署要求:**
| 部署方式 | 说明 | | 部署方式 | 说明 |
|----------|------| |----------|------|
| PowerShell (远程SSH) | 自动上传:脚本会自动检测并上传 `check_fdfs.sh` 到目标服务器 | | PowerShell (远程SSH) | 自动上传:脚本会自动检测服务器架构并上传对应的 `check_fdfs_x86.sh``check_fdfs_arm.sh` 到目标服务器 |
| Shell (本地执行) | 手动部署:需确保 `check_fdfs.sh``check_server_health.sh` 在同一目录 | | Shell (本地执行) | 手动部署:需确保 `check_fdfs_x86.sh`/`check_fdfs_arm.sh``check_server_health.sh` 在同一目录 |
| 降级处理 | 如果脚本不存在,自动降级为简单的 `fdfs_test` 检测 | | 降级处理 | 如果脚本不存在,自动降级为简单的 `fdfs_test` 检测 |
**配置参数:** **配置参数:**
...@@ -526,9 +528,11 @@ docker exec umysql mysqladmin -u root -p"dNrprU&2S" status ...@@ -526,9 +528,11 @@ docker exec umysql mysqladmin -u root -p"dNrprU&2S" status
| 6 | 完整性验证 | MD5校验原始文件和下载文件 | MD5值一致 | | 6 | 完整性验证 | MD5校验原始文件和下载文件 | MD5值一致 |
| 7 | 清理临时文件 | 删除容器和本地测试文件 | 清理完成 | | 7 | 清理临时文件 | 删除容器和本地测试文件 | 清理完成 |
**check_fdfs.sh 脚本说明:** **check_fdfs 脚本说明(按架构分离):**
**脚本路径:** `AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs.sh` **脚本路径:**
- x86架构:`AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs_x86.sh`
- ARM架构:`AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs_arm.sh`
**脚本特性:** **脚本特性:**
- 自动检测容器状态(ustorage/utracker) - 自动检测容器状态(ustorage/utracker)
...@@ -538,6 +542,7 @@ docker exec umysql mysqladmin -u root -p"dNrprU&2S" status ...@@ -538,6 +542,7 @@ docker exec umysql mysqladmin -u root -p"dNrprU&2S" status
- HTTP访问URL提示 - HTTP访问URL提示
- 自动清理临时文件 - 自动清理临时文件
- 彩色输出和结构化报告 - 彩色输出和结构化报告
- 按服务器架构分离(x86/ARM)
**主要执行步骤:** **主要执行步骤:**
...@@ -553,11 +558,13 @@ docker exec umysql mysqladmin -u root -p"dNrprU&2S" status ...@@ -553,11 +558,13 @@ docker exec umysql mysqladmin -u root -p"dNrprU&2S" status
**执行命令示例:** **执行命令示例:**
```bash ```bash
# 直接执行(使用默认配置) # 直接执行(使用默认配置,根据架构选择)
./check_fdfs.sh ./check_fdfs_x86.sh # x86架构
./check_fdfs_arm.sh # ARM架构
# 指定容器名 # 指定容器名
STORAGE_CONTAINER=ustorage TRACKER_CONTAINER=utracker ./check_fdfs.sh STORAGE_CONTAINER=ustorage TRACKER_CONTAINER=utracker ./check_fdfs_x86.sh
STORAGE_CONTAINER=ustorage TRACKER_CONTAINER=utracker ./check_fdfs_arm.sh
# 手动执行FastDFS检测(容器方式) # 手动执行FastDFS检测(容器方式)
docker exec ustorage fdfs_upload_file /etc/fdfs/client.conf /tmp/test.txt docker exec ustorage fdfs_upload_file /etc/fdfs/client.conf /tmp/test.txt
...@@ -748,7 +755,12 @@ mosquitto 便携版 - 完整验证(含详细过程) ...@@ -748,7 +755,12 @@ mosquitto 便携版 - 完整验证(含详细过程)
- 相关脚本: - 相关脚本:
- `check_server_health.ps1` - `check_server_health.ps1`
- `check_server_health.sh` - `check_server_health.sh`
- `mqtt_test_x86/` - MQTT便携式检测工具集 - `mqtt_test_x86/` - MQTT便携式检测工具集(x86架构)
- `mqtt_test_arm/` - MQTT便携式检测工具集(ARM架构)
- `check_redis.sh` - Redis完整检测脚本
- `check_mysql.sh` - MySQL完整检测脚本
- `check_fdfs_x86.sh` - FastDFS完整检测脚本(x86架构)
- `check_fdfs_arm.sh` - FastDFS完整检测脚本(ARM架构)
### 6.2 版本历史 ### 6.2 版本历史
...@@ -766,6 +778,14 @@ mosquitto 便携版 - 完整验证(含详细过程) ...@@ -766,6 +778,14 @@ mosquitto 便携版 - 完整验证(含详细过程)
| V1.8 | 2026-02-03 | 补充FastDFS检测完整功能描述(check_fdfs.sh脚本说明) | | V1.8 | 2026-02-03 | 补充FastDFS检测完整功能描述(check_fdfs.sh脚本说明) |
| V1.8 | 2026-02-03 | 新增FastDFS文件下载和完整性验证功能描述 | | V1.8 | 2026-02-03 | 新增FastDFS文件下载和完整性验证功能描述 |
| V1.8 | 2026-02-03 | 扩展FastDFS检测验收标准 | | V1.8 | 2026-02-03 | 扩展FastDFS检测验收标准 |
| V1.9 | 2026-02-03 | 重构FastDFS检测函数,参考MQTT检测函数结构 |
| V1.9 | 2026-02-03 | 添加check_fdfs.sh脚本自动上传功能(PowerShell) |
| V1.9 | 2026-02-03 | 实现完整的上传、下载、完整性验证检测流程 |
| V2.0 | 2026-02-03 | 补充mqtt_test_arm ARM64架构工具支持 |
| V2.0 | 2026-02-03 | 更新架构支持说明,标记ARM64为已准备状态 |
| V2.1 | 2026-02-03 | FastDFS检测脚本按架构分离(check_fdfs_x86.sh/check_fdfs_arm.sh) |
| V2.1 | 2026-02-03 | 更新代码根据架构自动选择对应的检测脚本 |
| V2.1 | 2026-02-03 | 更新PowerShell脚本自动检测远程架构并上传对应脚本 |
### 6.3 规范文档 ### 6.3 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md` - 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
...@@ -813,6 +833,23 @@ mosquitto 便携版 - 完整验证(含详细过程) ...@@ -813,6 +833,23 @@ mosquitto 便携版 - 完整验证(含详细过程)
- PowerShell脚本在检测到脚本不存在时自动上传并执行完整检测 - PowerShell脚本在检测到脚本不存在时自动上传并执行完整检测
- Shell脚本需手动部署在同一目录,不支持自动上传 - Shell脚本需手动部署在同一目录,不支持自动上传
**V1.8 (2026-02-03)**
- 补充FastDFS检测完整功能说明(check_fdfs.sh脚本)
- 新增FastDFS文件下载和完整性验证功能描述
- 扩展FastDFS检测验收标准
**V1.9 (2026-02-03)**
- 重构FastDFS检测函数,参考MQTT检测函数结构
- 添加check_fdfs.sh脚本自动上传功能(PowerShell)
- 实现完整的上传、下载、完整性验证检测流程
- 优化脚本检测和降级处理逻辑
**V2.0 (2026-02-03)**
- 补充mqtt_test_arm ARM64架构工具支持
- 更新架构支持说明,标记ARM64为已准备状态
- 新增mqtt_test_arm工具详情说明
- 说明便携式工具包作为备用方案使用
**V1.2 (2026-02-03)** **V1.2 (2026-02-03)**
- 补充MQTT检测脚本执行流程说明(区分ps1/sh) - 补充MQTT检测脚本执行流程说明(区分ps1/sh)
- 新增检测结果记录格式示例 - 新增检测结果记录格式示例
......
# _PLAN_计划执行文档_中间件检测优化 # _PLAN_计划执行文档_中间件检测优化
> 版本:V1.8 > 版本:V2.0
> 创建日期:2026-02-03 > 创建日期:2026-02-03
> 更新日期:2026-02-03 > 更新日期:2026-02-03
> 适用范围:服务自检脚本 - 中间件连接检测功能 > 适用范围:服务自检脚本 - 中间件连接检测功能
...@@ -127,9 +127,9 @@ mqtt_test_x86/ ...@@ -127,9 +127,9 @@ mqtt_test_x86/
| 架构类型 | 架构标识 | 工具目录 | 状态 | | 架构类型 | 架构标识 | 工具目录 | 状态 |
|----------|----------|----------|------| |----------|----------|----------|------|
| x86_64 | x86_64, amd64 | mqtt_test_x86/ | ✅ 已准备 | | x86_64 | x86_64, amd64 | mqtt_test_x86/ | ✅ 已准备 |
| ARM64 | aarch64, arm64 | mqtt_test_arm/ | ⚠️ 需准备 | | ARM64 | aarch64, arm64 | mqtt_test_arm/ | ✅ 已准备 |
> **注意**:当前代码库中仅包含 `mqtt_test_x86` 目录。如需支持ARM架构服务器,需另行准备 `mqtt_test_arm` 目录(包含ARM版本的mosquitto二进制文件和依赖库)。 > **注意**:便携式工具包作为备用方案。当前脚本默认使用容器内的 mosquitto 工具进行检测,便携式工具包仅在某些特殊情况下使用(如容器内工具不可用时)。
#### 检测结果记录 #### 检测结果记录
...@@ -439,14 +439,15 @@ docker exec umysql mysqladmin -u root -p"dNrprU&2S" status ...@@ -439,14 +439,15 @@ docker exec umysql mysqladmin -u root -p"dNrprU&2S" status
验证FastDFS服务的连接状态、文件上传下载功能及数据完整性。 验证FastDFS服务的连接状态、文件上传下载功能及数据完整性。
#### 检测脚本 #### 检测脚本
`AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs.sh` - x86架构:`AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs_x86.sh`
- ARM架构:`AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs_arm.sh`
#### 部署要求 #### 部署要求
| 部署方式 | 说明 | | 部署方式 | 说明 |
|----------|------| |----------|------|
| PowerShell (远程SSH) | 自动上传:脚本会自动检测并上传 `check_fdfs.sh` 到目标服务器 | | PowerShell (远程SSH) | 自动上传:脚本会自动检测服务器架构并上传对应的 `check_fdfs_x86.sh``check_fdfs_arm.sh` 到目标服务器 |
| Shell (本地执行) | 手动部署:需确保 `check_fdfs.sh``check_server_health.sh` 在同一目录 | | Shell (本地执行) | 手动部署:需确保 `check_fdfs_x86.sh`/`check_fdfs_arm.sh``check_server_health.sh` 在同一目录 |
| 降级处理 | 如果脚本不存在,自动降级为简单的 `fdfs_test` 检测 | | 降级处理 | 如果脚本不存在,自动降级为简单的 `fdfs_test` 检测 |
#### 配置要求 #### 配置要求
...@@ -485,9 +486,10 @@ docker exec umysql mysqladmin -u root -p"dNrprU&2S" status ...@@ -485,9 +486,10 @@ docker exec umysql mysqladmin -u root -p"dNrprU&2S" status
#### 代码位置 #### 代码位置
**check_fdfs.sh脚本位置:** **check_fdfs脚本位置(按架构分离):**
``` ```
AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs.sh AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs_x86.sh (x86/x86_64架构)
AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs_arm.sh (ARM/ARM64架构)
``` ```
**关键代码位置:** **关键代码位置:**
...@@ -506,11 +508,13 @@ AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs.sh ...@@ -506,11 +508,13 @@ AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs.sh
#### 执行命令示例 #### 执行命令示例
```bash ```bash
# 直接执行(使用默认配置) # 直接执行(使用默认配置,根据架构自动选择)
./check_fdfs.sh ./check_fdfs_x86.sh # x86架构
./check_fdfs_arm.sh # ARM架构
# 指定容器名 # 指定容器名
STORAGE_CONTAINER=ustorage TRACKER_CONTAINER=utracker ./check_fdfs.sh STORAGE_CONTAINER=ustorage TRACKER_CONTAINER=utracker ./check_fdfs_x86.sh
STORAGE_CONTAINER=ustorage TRACKER_CONTAINER=utracker ./check_fdfs_arm.sh
# 手动执行FastDFS检测(容器方式) # 手动执行FastDFS检测(容器方式)
# 上传文件 # 上传文件
...@@ -659,6 +663,13 @@ md5sum /tmp/test.txt /tmp/downloaded.txt ...@@ -659,6 +663,13 @@ md5sum /tmp/test.txt /tmp/downloaded.txt
| 1.4.0 | 2026-02-03 | 版本号修正,与V1.3.1内容一致 | Claude | | 1.4.0 | 2026-02-03 | 版本号修正,与V1.3.1内容一致 | Claude |
| 1.5.0 | 2026-02-03 | 优化部署要求说明,区分PowerShell自动上传和Shell手动部署 | Claude | | 1.5.0 | 2026-02-03 | 优化部署要求说明,区分PowerShell自动上传和Shell手动部署 | Claude |
| 1.5.0 | 2026-02-03 | 更新check_server_health.ps1实现自动上传check_redis.sh和check_mysql.sh | Claude | | 1.5.0 | 2026-02-03 | 更新check_server_health.ps1实现自动上传check_redis.sh和check_mysql.sh | Claude |
| 1.6.0 | 2026-02-03 | 修复Redis密码特殊字符问题,使用脚本参数传递方式 | Claude |
| 1.6.0 | 2026-02-03 | 优化远程目录检测逻辑,使用which命令优先检测 | Claude |
| 1.7.0 | 2026-02-03 | 重构FastDFS检测函数,参考MQTT检测函数结构 | Claude |
| 1.7.0 | 2026-02-03 | 添加check_fdfs.sh脚本自动上传功能(PowerShell) | Claude |
| 1.7.0 | 2026-02-03 | 实现完整的上传、下载、完整性验证检测流程 | Claude |
| 1.8.0 | 2026-02-03 | 补充mqtt_test_arm ARM架构工具支持 | Claude |
| 1.8.0 | 2026-02-03 | 更新架构支持说明,标记ARM64为已准备状态 | Claude |
### 6.2 文件修改记录 ### 6.2 文件修改记录
...@@ -666,6 +677,11 @@ md5sum /tmp/test.txt /tmp/downloaded.txt ...@@ -666,6 +677,11 @@ md5sum /tmp/test.txt /tmp/downloaded.txt
|------|----------|----------| |------|----------|----------|
| check_server_health.ps1 | 约80行 | MQTT主题订阅检测、FastPNG测试文件 | | check_server_health.ps1 | 约80行 | MQTT主题订阅检测、FastPNG测试文件 |
| check_server_health.sh | 约70行 | MQTT主题订阅检测、FastPNG测试文件 | | check_server_health.sh | 约70行 | MQTT主题订阅检测、FastPNG测试文件 |
| check_redis.sh | 约5行 | 添加命令行参数支持,密码转义修复 |
| check_mysql.sh | 新增 | MySQL完整检测脚本 |
| check_fdfs_x86.sh / check_fdfs_arm.sh | 新增 | FastDFS完整检测脚本(按架构分离,上传+下载+完整性验证) |
| check_server_health.ps1 | 约150行 | Redis/MySQL/FastDFS脚本自动上传功能集成 |
| check_server_health.sh | 约100行 | Redis/MySQL/FastDFS脚本检测和降级处理 |
### 6.3 完成状态 ### 6.3 完成状态
...@@ -688,6 +704,14 @@ md5sum /tmp/test.txt /tmp/downloaded.txt ...@@ -688,6 +704,14 @@ md5sum /tmp/test.txt /tmp/downloaded.txt
| 执行计划文档更新(部署要求) | ✅ 完成 | 2026-02-03 | | 执行计划文档更新(部署要求) | ✅ 完成 | 2026-02-03 |
| PowerShell脚本自动上传功能实现 | ✅ 完成 | 2026-02-03 | | PowerShell脚本自动上传功能实现 | ✅ 完成 | 2026-02-03 |
| 文档优化(区分自动上传和手动部署) | ✅ 完成 | 2026-02-03 | | 文档优化(区分自动上传和手动部署) | ✅ 完成 | 2026-02-03 |
| FastDFS检测函数重构 | ✅ 完成 | 2026-02-03 |
| check_fdfs.sh脚本集成 | ✅ 完成 | 2026-02-03 |
| FastDFS完整检测流程实现 | ✅ 完成 | 2026-02-03 |
| FastDFS完整检测流程实现 | ✅ 完成 | 2026-02-03 |
| PRD文档更新(FastDFS检测) | ✅ 完成 | 2026-02-03 |
| 执行计划文档更新(FastDFS检测) | ✅ 完成 | 2026-02-03 |
| mqtt_test_arm 工具准备 | ✅ 完成 | 2026-02-03 |
| 文档更新(ARM架构支持) | ✅ 完成 | 2026-02-03 |
| 测试验证 | ⏳ 待执行 | - | | 测试验证 | ⏳ 待执行 | - |
--- ---
...@@ -729,7 +753,7 @@ md5sum /tmp/test.txt /tmp/downloaded.txt ...@@ -729,7 +753,7 @@ md5sum /tmp/test.txt /tmp/downloaded.txt
| MQTT | uemqx | 1883 | - | - | mosquitto | | MQTT | uemqx | 1883 | - | - | mosquitto |
| Redis | uredis | 6379 | - | dNrprU&2S | check_redis.sh / redis-cli | | Redis | uredis | 6379 | - | dNrprU&2S | check_redis.sh / redis-cli |
| MySQL | umysql | 3306 | root | dNrprU&2S | check_mysql.sh / mysqladmin | | MySQL | umysql | 3306 | root | dNrprU&2S | check_mysql.sh / mysqladmin |
| FastDFS | ustorage/utracker | - | - | - | check_fdfs.sh / fdfs_upload_file | | FastDFS | ustorage/utracker | - | - | - | check_fdfs_x86.sh / check_fdfs_arm.sh / fdfs_upload_file |
### 8.2.1 mqtt_test_x86 工具详情 ### 8.2.1 mqtt_test_x86 工具详情
...@@ -756,9 +780,38 @@ md5sum /tmp/test.txt /tmp/downloaded.txt ...@@ -756,9 +780,38 @@ md5sum /tmp/test.txt /tmp/downloaded.txt
- 支持离线环境 - 支持离线环境
- 提供完整验证脚本 - 提供完整验证脚本
### 8.2.2 check_fdfs.sh 工具详情 ### 8.2.2 mqtt_test_arm 工具详情
**工具路径:** `AuxiliaryTool/ScriptTool/ServiceSelfInspection/mqtt_test_arm/`
**文件清单:**
| 文件 | 说明 |
|------|------|
| mqtt | 包装器脚本,统一命令入口 |
| mosquitto_sub | MQTT订阅客户端二进制(ARM64) |
| mosquitto_pub | MQTT发布客户端二进制(ARM64) |
| verify.sh | 完整验证脚本 |
| lib/ld-linux-aarch64.so.1 | 动态链接器 |
| lib/libc.so.6 | libc库 |
| lib/libssl.so.1.1 | OpenSSL SSL库 |
| lib/libcrypto.so.1.1 | OpenSSL加密库 |
| lib/libmosquitto.so.1 | MQTT客户端库 |
| lib/libcares.so.2 | c-ares DNS解析库 |
| lib/libpthread.so.0 | pthread线程库 |
| lib/libdl.so.2 | 动态链接库 |
**工具特性:**
- 无需安装,解压即用
- 包含所有依赖库
- 支持离线环境
- 提供完整验证脚本
### 8.2.3 check_fdfs 工具详情(按架构分离)
**工具路径:** `AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs.sh` **工具路径:**
- x86架构:`AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs_x86.sh`
- ARM架构:`AuxiliaryTool/ScriptTool/ServiceSelfInspection/check_fdfs_arm.sh`
**功能清单:** **功能清单:**
...@@ -818,9 +871,10 @@ docker exec umysql mysqladmin -u root -p"dNrprU&2S" ping ...@@ -818,9 +871,10 @@ docker exec umysql mysqladmin -u root -p"dNrprU&2S" ping
# MySQL检测(获取运行状态) # MySQL检测(获取运行状态)
docker exec umysql mysqladmin -u root -p"dNrprU&2S" status docker exec umysql mysqladmin -u root -p"dNrprU&2S" status
# FastDFS检测(使用check_fdfs.sh脚本 # FastDFS检测(使用check_fdfs脚本,根据架构选择
cd AuxiliaryTool/ScriptTool/ServiceSelfInspection cd AuxiliaryTool/ScriptTool/ServiceSelfInspection
./check_fdfs.sh ./check_fdfs_x86.sh # x86架构
./check_fdfs_arm.sh # ARM架构
# FastDFS检测(容器方式 - 上传) # FastDFS检测(容器方式 - 上传)
docker exec ustorage fdfs_upload_file /etc/fdfs/client.conf /tmp/test.txt docker exec ustorage fdfs_upload_file /etc/fdfs/client.conf /tmp/test.txt
...@@ -905,3 +959,17 @@ docker exec ustorage md5sum /tmp/test.txt /tmp/downloaded.txt ...@@ -905,3 +959,17 @@ docker exec ustorage md5sum /tmp/test.txt /tmp/downloaded.txt
- 扩展集成测试,添加FastDFS完整检测场景 - 扩展集成测试,添加FastDFS完整检测场景
- 更新命令速查,添加check_fdfs.sh命令示例 - 更新命令速查,添加check_fdfs.sh命令示例
- 同步PRD文档V1.8版本内容 - 同步PRD文档V1.8版本内容
**V2.0 (2026-02-03)**
- 补充mqtt_test_arm ARM64架构工具支持
- 更新架构支持说明,标记ARM64为已准备状态
- 新增mqtt_test_arm工具详情说明(8.2.2节)
- 调整check_fdfs.sh工具详情章节编号为8.2.3
- 同步PRD文档V2.0版本内容
**V1.9 (2026-02-03)**
- 重构FastDFS检测函数,参考MQTT检测函数结构
- 添加check_fdfs.sh脚本自动上传功能(PowerShell)
- 实现完整的上传、下载、完整性验证检测流程
- 优化脚本检测和降级处理逻辑
- 同步PRD文档V1.9版本内容
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论