提交 41e1fdb3 authored 作者: 陈泽健's avatar 陈泽健

fix(add): 输出AI远程自动化部署需求文档,调整服务自检脚本以及增加文件权限修复操作。

上级 8dad45fa
......@@ -143,7 +143,6 @@ $Global:UjavaServices = @{
"gateway" = "ubains-gateway.jar"
"system" = "ubains-modules-system.jar"
"meeting2.0" = "ubains-meeting-inner-api-1.0-SNAPSHOT.jar"
"meeting3.0" = "ubains-meeting-inner-api-1.0-SNAPSHOT.jar"
"mqtt" = "ubains-meeting-mqtt-1.0-SNAPSHOT.jar"
"quartz" = "ubains-meeting-quartz-1.0-SNAPSHOT.jar"
"message" = "ubains-meeting-message-scheduling-1.0-SNAPSHOT.jar"
......@@ -253,7 +252,6 @@ $NewPlatformLogs = @(
@{ Name = "gatway_log.out"; RemotePath = "/data/services/api/auth/auth-sso-gatway/log.out" },
@{ Name = "system_log.out"; RemotePath = "/data/services/api/auth/auth-sso-system/log.out" },
@{ Name = "对内2.0_ubains-INFO-AND-ERROR.log"; RemotePath = "/data/services/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log" },
@{ Name = "对内3.0_ubains-INFO-AND-ERROR.log"; RemotePath = "/data/services/api/java-meeting/java-meeting3.0/logs/ubains-INFO-AND-ERROR.log" },
@{ Name = "对外服务_ubains-INFO-AND-ERROR.log"; RemotePath = "/data/services/api/java-meeting/java-meeting-extapi/logs/ubains-INFO-AND-ERROR.log" },
@{ Name = "信息调度_ubains-INFO-AND-ERROR.log"; RemotePath = "/data/services/api/java-meeting/java-message-scheduling/logs/ubains-INFO-AND-ERROR.log" },
@{ Name = "MQTT_ubains-INFO-AND-ERROR.log"; RemotePath = "/data/services/api/java-meeting/java-mqtt/logs/ubains-INFO-AND-ERROR.log" },
......@@ -1097,62 +1095,104 @@ function Test-MQTTConnection-Shell {
$results = @()
# Redis检测结果
# Redis检测结果(包含详细信息)
if ($data.redis) {
$redisStatus = $data.redis.status
$icon = if ($redisStatus -eq "running") { "[运行]" } else { "[停止]" }
$redisSuccess = ($redisStatus -eq "running")
# 构建详细信息字符串
$redisDetails = ""
if ($redisSuccess) {
$version = if ($data.redis.version) { $data.redis.version } else { "unknown" }
$memory = if ($data.redis.memory) { $data.redis.memory } else { "N/A" }
$clients = if ($data.redis.clients) { $data.redis.clients } else { "0" }
$redisDetails = "Redis服务完全正常(连接+读写+删除+信息采集) | 容器: $($data.redis.container) | 端口: $($data.redis.port) | 版本: $version | 内存: $memory | 连接数: $clients"
Write-Log -Level "INFO" -Message " $icon Redis ($($data.redis.container):$($data.redis.port)): $redisStatus | 版本: $version | 内存: $memory | 连接: $clients"
} else {
$redisDetails = if ($redisStatus -eq "stopped") { "容器未运行" } elseif ($redisStatus -eq "not_found") { "容器不存在" } else { "连接失败" }
Write-Log -Level "INFO" -Message " $icon Redis ($($data.redis.container):$($data.redis.port)): $redisStatus"
}
$results += [PSCustomObject]@{
Check = "Redis连接 ($($data.redis.container):$($data.redis.port))"
Check = "Redis连接检测"
Status = if ($redisSuccess) { "正常" } else { "异常" }
Details = if ($redisSuccess) { "运行中" } else { "未运行" }
Details = $redisDetails
Success = $redisSuccess
}
}
# MySQL检测结果
# MySQL检测结果(包含详细信息)
if ($data.mysql) {
$mysqlStatus = $data.mysql.status
$icon = if ($mysqlStatus -eq "running") { "[运行]" } else { "[停止]" }
$mysqlSuccess = ($mysqlStatus -eq "running")
# 构建详细信息字符串
$mysqlDetails = ""
if ($mysqlSuccess) {
$version = if ($data.mysql.version) { $data.mysql.version } else { "unknown" }
$mysqlDetails = "MySQL连接正常 | 容器: $($data.mysql.container) | 端口: $($data.mysql.port) | 版本: $version"
Write-Log -Level "INFO" -Message " $icon MySQL ($($data.mysql.container):$($data.mysql.port)): $mysqlStatus | 版本: $version"
} else {
$mysqlDetails = if ($mysqlStatus -eq "stopped") { "容器未运行" } elseif ($mysqlStatus -eq "not_found") { "容器不存在" } else { "连接失败" }
Write-Log -Level "INFO" -Message " $icon MySQL ($($data.mysql.container):$($data.mysql.port)): $mysqlStatus"
}
$results += [PSCustomObject]@{
Check = "MySQL连接 ($($data.mysql.container):$($data.mysql.port))"
Check = "MySQL连接检测"
Status = if ($mysqlSuccess) { "正常" } else { "异常" }
Details = if ($mysqlSuccess) { "运行中" } else { "未运行" }
Details = $mysqlDetails
Success = $mysqlSuccess
}
}
# EMQX检测结果
# EMQX检测结果(包含详细信息)
if ($data.emqx) {
$emqxStatus = $data.emqx.status
$icon = if ($emqxStatus -eq "running") { "[运行]" } else { "[停止]" }
$emqxSuccess = ($emqxStatus -eq "running")
# 构建详细信息字符串
$emqxDetails = ""
if ($emqxSuccess) {
$dashboardPort = if ($data.emqx.dashboard_port) { $data.emqx.dashboard_port } else { "N/A" }
$emqxDetails = "MQTT服务连接正常 | 容器: $($data.emqx.container) | 端口: $($data.emqx.port) | Dashboard: $dashboardPort"
Write-Log -Level "INFO" -Message " $icon EMQX ($($data.emqx.container):$($data.emqx.port)): $emqxStatus | Dashboard: $dashboardPort"
} else {
$emqxDetails = if ($emqxStatus -eq "stopped") { "容器未运行" } elseif ($emqxStatus -eq "not_found") { "容器不存在" } else { "连接失败" }
Write-Log -Level "INFO" -Message " $icon EMQX ($($data.emqx.container):$($data.emqx.port)): $emqxStatus"
}
$results += [PSCustomObject]@{
Check = "MQTT/EMQX连接 ($($data.emqx.container):$($data.emqx.port))"
Check = "MQTT/EMQX连接检测"
Status = if ($emqxSuccess) { "正常" } else { "异常" }
Details = if ($emqxSuccess) { "运行中" } else { "未运行" }
Details = $emqxDetails
Success = $emqxSuccess
}
}
# FastDFS检测结果
# FastDFS检测结果(包含详细信息)
if ($data.fastdfs) {
$fastdfsStatus = $data.fastdfs.status
$icon = if ($fastdfsStatus -eq "running") { "[运行]" } else { "[停止]" }
$fastdfsSuccess = ($fastdfsStatus -eq "running")
# 构建详细信息字符串
$fastdfsDetails = ""
if ($fastdfsSuccess) {
$network = if ($data.fastdfs.network) { $data.fastdfs.network } else { "unknown" }
$fastdfsDetails = "FastDFS存储服务正常 | 容器: $($data.fastdfs.container) | 网络模式: $network"
Write-Log -Level "INFO" -Message " $icon FastDFS ($($data.fastdfs.container)): $fastdfsStatus | 网络: $network"
} else {
$fastdfsDetails = if ($fastdfsStatus -eq "stopped") { "服务未运行" } elseif ($fastdfsStatus -eq "not_found") { "容器不存在" } else { "检测失败" }
Write-Log -Level "INFO" -Message " $icon FastDFS ($($data.fastdfs.container)): $fastdfsStatus"
}
$results += [PSCustomObject]@{
Check = "FastDFS存储 ($($data.fastdfs.container))"
Check = "FastDFS存储检测"
Status = if ($fastdfsSuccess) { "正常" } else { "异常" }
Details = if ($fastdfsSuccess) { "运行中" } else { "未运行" }
Details = $fastdfsDetails
Success = $fastdfsSuccess
}
}
......@@ -1781,7 +1821,7 @@ function Invoke-RemoteFilePermissionFix {
Invoke-SSHCommand -HostName $Server.IP -User $Server.User -Pass $Server.Pass -Port $Server.Port -Command $cmd | Out-Null
# 上传issue_handler.sh
$uploadResult = Upload-ShellScript -Server $Server -ScriptName "issue_handler.sh" -RemotePath $remoteDir -ScriptDir "问题处理"
$uploadResult = Upload-ShellScript -Server $Server -ScriptName "issue_handler.sh" -RemotePath $remoteDir
if (-not $uploadResult) {
Write-Log -Level "ERROR" -Message "[PERM] 上传修复脚本失败"
......@@ -1833,7 +1873,6 @@ function Check-FilePermissions {
"/data/services/api/auth/auth-sso-gatway/run.sh",
"/data/services/api/auth/auth-sso-system/run.sh",
"/data/services/api/java-meeting/java-meeting2.0/run.sh",
"/data/services/api/java-meeting/java-meeting3.0/run.sh",
"/data/services/api/java-meeting/java-meeting-extapi/run.sh",
"/data/services/api/java-meeting/java-message-scheduling/run.sh",
"/data/services/api/java-meeting/java-mqtt/run.sh",
......@@ -1956,7 +1995,7 @@ function Check-FilePermissions {
}
}
return @{ Summary = $summaryText; Lines = lines }
return @{ Summary = $summaryText; Lines = $lines }
}
# ================================
......
......@@ -239,7 +239,6 @@ declare -A UJAVA_SERVICES=(
["gateway"]="ubains-gateway.jar"
["system"]="ubains-modules-system.jar"
["meeting2.0"]="ubains-meeting-inner-api-1.0-SNAPSHOT.jar"
["meeting3.0"]="ubains-meeting-inner-api-1.0-SNAPSHOT.jar"
["mqtt"]="ubains-meeting-mqtt-1.0-SNAPSHOT.jar"
["quartz"]="ubains-meeting-quartz-1.0-SNAPSHOT.jar"
["message"]="ubains-meeting-message-scheduling-1.0-SNAPSHOT.jar"
......@@ -296,8 +295,6 @@ test_ujava_services() {
if [[ -n "$container" ]]; then
if [[ "$svc" == "meeting2.0" ]]; then
n="$(count_proc_in_container "$container" "$jar" "| grep 'java-meeting2.0'")"
elif [[ "$svc" == "meeting3.0" ]]; then
n="$(count_proc_in_container "$container" "$jar" "| grep 'java-meeting3.0'")"
else
n="$(count_proc_in_container "$container" "$jar")"
fi
......@@ -306,8 +303,6 @@ test_ujava_services() {
if [[ "$n" -eq 0 ]]; then
if [[ "$svc" == "meeting2.0" ]]; then
n="$(count_proc_host "$jar" "| grep 'java-meeting2.0'")"
elif [[ "$svc" == "meeting3.0" ]]; then
n="$(count_proc_host "$jar" "| grep 'java-meeting3.0'")"
else
n="$(count_proc_host "$jar")"
fi
......@@ -315,8 +310,6 @@ test_ujava_services() {
else
if [[ "$svc" == "meeting2.0" ]]; then
n="$(count_proc_host "$jar" "| grep 'java-meeting2.0'")"
elif [[ "$svc" == "meeting3.0" ]]; then
n="$(count_proc_host "$jar" "| grep 'java-meeting3.0'")"
else
n="$(count_proc_host "$jar")"
fi
......@@ -837,7 +830,7 @@ check_file_permissions() {
local targets=()
if [[ "$platform" == "new" ]]; then
targets+=( "/data/services/api/auth/auth-sso-auth/run.sh" "/data/services/api/auth/auth-sso-gatway/run.sh" "/data/services/api/auth/auth-sso-system/run.sh"
"/data/services/api/java-meeting/java-meeting2.0/run.sh" "/data/services/api/java-meeting/java-meeting3.0/run.sh" "/data/services/api/java-meeting/java-meeting-extapi/run.sh"
"/data/services/api/java-meeting/java-meeting2.0/run.sh" "/data/services/api/java-meeting/java-meeting-extapi/run.sh"
"/data/services/api/java-meeting/java-message-scheduling/run.sh" "/data/services/api/java-meeting/java-mqtt/run.sh" "/data/services/api/java-meeting/java-quartz/run.sh"
"/data/services/api/start.sh" "/data/services/scripts/*.sh"
"/data/third_party/paperless/run.sh" "/data/third_party/paperless/start.sh"
......@@ -1255,7 +1248,6 @@ _cfgip_list_files_new() {
_cfgip_add_glob_files "/data/services/api/auth/auth-sso-gatway/config" yml yaml properties js json conf
_cfgip_add_glob_files "/data/services/api/auth/auth-sso-system/config" yml yaml properties js json conf
_cfgip_add_glob_files "/data/services/api/java-meeting/java-meeting2.0/config" yml yaml properties js json conf
_cfgip_add_glob_files "/data/services/api/java-meeting/java-meeting3.0/config" yml yaml properties js json conf
_cfgip_add_glob_files "/data/services/api/java-meeting/java-meeting-extapi/config" yml yaml properties js json conf
_cfgip_add_glob_files "/data/services/api/java-meeting/java-message-scheduling/config" yml yaml properties js json conf
_cfgip_add_glob_files "/data/services/api/java-meeting/java-mqtt/config" yml yaml properties js json conf
......@@ -2784,7 +2776,6 @@ export_logs() {
if [[ "$platform" == "new" ]]; then
# 1) ujava 主日志(ps1:/data/services/api/java-meeting/java-meeting2.0/log.out 等)
copy_if_exists "/data/services/api/java-meeting/java-meeting2.0/log.out" "$export_dir/java-meeting2.0_log.out" || true
copy_if_exists "/data/services/api/java-meeting/java-meeting3.0/log.out" "$export_dir/java-meeting3.0_log.out" || true
copy_if_exists "/data/services/api/java-meeting/java-meeting-extapi/log.out" "$export_dir/java-meeting-extapi_log.out" || true
copy_if_exists "/data/services/api/java-meeting/java-message-scheduling/log.out" "$export_dir/java-message-scheduling_log.out" || true
copy_if_exists "/data/services/api/java-meeting/java-mqtt/log.out" "$export_dir/java-mqtt_log.out" || true
......@@ -2800,7 +2791,6 @@ export_logs() {
copy_if_exists "/data/services/logs/auth-sso-system/ubains-INFO-AND-ERROR.log" "$export_dir/auth-sso-system_ubains-INFO-AND-ERROR.log" || true
copy_if_exists "/data/services/logs/java-meeting2.0/ubains-INFO-AND-ERROR.log" "$export_dir/java-meeting2.0_ubains-INFO-AND-ERROR.log" || true
copy_if_exists "/data/services/logs/java-meeting3.0/ubains-INFO-AND-ERROR.log" "$export_dir/java-meeting3.0_ubains-INFO-AND-ERROR.log" || true
copy_if_exists "/data/services/logs/java-meeting-extapi/ubains-INFO-AND-ERROR.log" "$export_dir/java-meeting-extapi_ubains-INFO-AND-ERROR.log" || true
copy_if_exists "/data/services/logs/java-message-scheduling/ubains-INFO-AND-ERROR.log" "$export_dir/java-message-scheduling_ubains-INFO-AND-ERROR.log" || true
copy_if_exists "/data/services/logs/java-mqtt/ubains-INFO-AND-ERROR.log" "$export_dir/java-mqtt_ubains-INFO-AND-ERROR.log" || true
......
......@@ -300,7 +300,6 @@ declare -A UJAVA_SERVICES=(
["gateway"]="ubains-gateway.jar"
["system"]="ubains-modules-system.jar"
["meeting2.0"]="ubains-meeting-inner-api-1.0-SNAPSHOT.jar"
["meeting3.0"]="ubains-meeting-inner-api-1.0-SNAPSHOT.jar"
["mqtt"]="ubains-meeting-mqtt-1.0-SNAPSHOT.jar"
["quartz"]="ubains-meeting-quartz-1.0-SNAPSHOT.jar"
["message"]="ubains-meeting-message-scheduling-1.0-SNAPSHOT.jar"
......@@ -357,8 +356,6 @@ test_ujava_services() {
if [[ -n "$container" ]]; then
if [[ "$svc" == "meeting2.0" ]]; then
n="$(count_proc_in_container "$container" "$jar" "| grep 'java-meeting2.0'")"
elif [[ "$svc" == "meeting3.0" ]]; then
n="$(count_proc_in_container "$container" "$jar" "| grep 'java-meeting3.0'")"
else
n="$(count_proc_in_container "$container" "$jar")"
fi
......@@ -367,8 +364,6 @@ test_ujava_services() {
if [[ "$n" -eq 0 ]]; then
if [[ "$svc" == "meeting2.0" ]]; then
n="$(count_proc_host "$jar" "| grep 'java-meeting2.0'")"
elif [[ "$svc" == "meeting3.0" ]]; then
n="$(count_proc_host "$jar" "| grep 'java-meeting3.0'")"
else
n="$(count_proc_host "$jar")"
fi
......@@ -376,8 +371,6 @@ test_ujava_services() {
else
if [[ "$svc" == "meeting2.0" ]]; then
n="$(count_proc_host "$jar" "| grep 'java-meeting2.0'")"
elif [[ "$svc" == "meeting3.0" ]]; then
n="$(count_proc_host "$jar" "| grep 'java-meeting3.0'")"
else
n="$(count_proc_host "$jar")"
fi
......@@ -898,7 +891,7 @@ check_file_permissions() {
local targets=()
if [[ "$platform" == "new" ]]; then
targets+=( "/data/services/api/auth/auth-sso-auth/run.sh" "/data/services/api/auth/auth-sso-gatway/run.sh" "/data/services/api/auth/auth-sso-system/run.sh"
"/data/services/api/java-meeting/java-meeting2.0/run.sh" "/data/services/api/java-meeting/java-meeting3.0/run.sh" "/data/services/api/java-meeting/java-meeting-extapi/run.sh"
"/data/services/api/java-meeting/java-meeting2.0/run.sh" "/data/services/api/java-meeting/java-meeting-extapi/run.sh"
"/data/services/api/java-meeting/java-message-scheduling/run.sh" "/data/services/api/java-meeting/java-mqtt/run.sh" "/data/services/api/java-meeting/java-quartz/run.sh"
"/data/services/api/start.sh" "/data/services/scripts/*.sh"
"/data/third_party/paperless/run.sh" "/data/third_party/paperless/start.sh"
......@@ -1316,7 +1309,6 @@ _cfgip_list_files_new() {
_cfgip_add_glob_files "/data/services/api/auth/auth-sso-gatway/config" yml yaml properties js json conf
_cfgip_add_glob_files "/data/services/api/auth/auth-sso-system/config" yml yaml properties js json conf
_cfgip_add_glob_files "/data/services/api/java-meeting/java-meeting2.0/config" yml yaml properties js json conf
_cfgip_add_glob_files "/data/services/api/java-meeting/java-meeting3.0/config" yml yaml properties js json conf
_cfgip_add_glob_files "/data/services/api/java-meeting/java-meeting-extapi/config" yml yaml properties js json conf
_cfgip_add_glob_files "/data/services/api/java-meeting/java-message-scheduling/config" yml yaml properties js json conf
_cfgip_add_glob_files "/data/services/api/java-meeting/java-mqtt/config" yml yaml properties js json conf
......@@ -2724,7 +2716,6 @@ export_logs() {
if [[ "$platform" == "new" ]]; then
# 1) ujava 主日志(ps1:/data/services/api/java-meeting/java-meeting2.0/log.out 等)
copy_if_exists "/data/services/api/java-meeting/java-meeting2.0/log.out" "$export_dir/java-meeting2.0_log.out" || true
copy_if_exists "/data/services/api/java-meeting/java-meeting3.0/log.out" "$export_dir/java-meeting3.0_log.out" || true
copy_if_exists "/data/services/api/java-meeting/java-meeting-extapi/log.out" "$export_dir/java-meeting-extapi_log.out" || true
copy_if_exists "/data/services/api/java-meeting/java-message-scheduling/log.out" "$export_dir/java-message-scheduling_log.out" || true
copy_if_exists "/data/services/api/java-meeting/java-mqtt/log.out" "$export_dir/java-mqtt_log.out" || true
......@@ -2740,7 +2731,6 @@ export_logs() {
copy_if_exists "/data/services/logs/auth-sso-system/ubains-INFO-AND-ERROR.log" "$export_dir/auth-sso-system_ubains-INFO-AND-ERROR.log" || true
copy_if_exists "/data/services/logs/java-meeting2.0/ubains-INFO-AND-ERROR.log" "$export_dir/java-meeting2.0_ubains-INFO-AND-ERROR.log" || true
copy_if_exists "/data/services/logs/java-meeting3.0/ubains-INFO-AND-ERROR.log" "$export_dir/java-meeting3.0_ubains-INFO-AND-ERROR.log" || true
copy_if_exists "/data/services/logs/java-meeting-extapi/ubains-INFO-AND-ERROR.log" "$export_dir/java-meeting-extapi_ubains-INFO-AND-ERROR.log" || true
copy_if_exists "/data/services/logs/java-message-scheduling/ubains-INFO-AND-ERROR.log" "$export_dir/java-message-scheduling_ubains-INFO-AND-ERROR.log" || true
copy_if_exists "/data/services/logs/java-mqtt/ubains-INFO-AND-ERROR.log" "$export_dir/java-mqtt_ubains-INFO-AND-ERROR.log" || true
......
......@@ -96,11 +96,9 @@ check_java_service() {
# 容器内检测
location="容器内"
# meeting2.0和meeting3.0需要额外路径过滤
# meeting2.0需要额外路径过滤
if [ "$service_name" = "meeting2.0" ]; then
count=$(docker_exec "$CONTAINER" "ps aux | grep -v grep | grep '$jar_file' | grep 'java-meeting2.0' | wc -l")
elif [ "$service_name" = "meeting3.0" ]; then
count=$(docker_exec "$CONTAINER" "ps aux | grep -v grep | grep '$jar_file' | grep 'java-meeting3.0' | wc -l")
else
count=$(docker_exec "$CONTAINER" "ps aux | grep -v grep | grep '$jar_file' | wc -l")
fi
......@@ -108,8 +106,6 @@ check_java_service() {
# 宿主机检测
if [ "$service_name" = "meeting2.0" ]; then
count=$(check_process_count "$jar_file" "java-meeting2.0")
elif [ "$service_name" = "meeting3.0" ]; then
count=$(check_process_count "$jar_file" "java-meeting3.0")
else
count=$(check_process_count "$jar_file")
fi
......@@ -138,7 +134,7 @@ output_json() {
json_array_start "services"
local first=true
local service_names=("auth" "gateway" "system" "meeting2.0" "meeting3.0" "mqtt" "quartz" "message")
local service_names=("auth" "gateway" "system" "meeting2.0" "mqtt" "quartz" "message")
for svc in "${service_names[@]}"; do
local jar_file="${JAVA_SERVICES[$svc]}"
......@@ -176,7 +172,7 @@ output_text() {
echo "平台类型: $PLATFORM"
echo ""
local service_names=("auth" "gateway" "system" "meeting2.0" "meeting3.0" "mqtt" "quartz" "message")
local service_names=("auth" "gateway" "system" "meeting2.0" "mqtt" "quartz" "message")
for svc in "${service_names[@]}"; do
local jar_file="${JAVA_SERVICES[$svc]}"
......
......@@ -106,7 +106,6 @@ function Test-NewPlatformIPs {
"/data/services/api/auth/auth-sso-gatway/config",
"/data/services/api/auth/auth-sso-system/config",
"/data/services/api/java-meeting/java-meeting2.0/config",
"/data/services/api/java-meeting/java-meeting3.0/config",
"/data/services/api/java-meeting/java-meeting-extapi/config",
"/data/services/api/java-meeting/java-message-scheduling/config",
"/data/services/api/java-meeting/java-mqtt/config",
......@@ -326,7 +325,6 @@ function Test-NewPlatformConsole {
"/data/services/api/auth/auth-sso-gatway/config",
"/data/services/api/auth/auth-sso-system/config",
"/data/services/api/java-meeting/java-meeting2.0/config",
"/data/services/api/java-meeting/java-meeting3.0/config",
"/data/services/api/java-meeting/java-meeting-extapi/config",
"/data/services/api/java-meeting/java-message-scheduling/config",
"/data/services/api/java-meeting/java-mqtt/config",
......
......@@ -64,7 +64,6 @@ $script:NewPlatformLogs = @(
@{ Name = "gatway_log.out"; RemotePath = "/data/services/api/auth/auth-sso-gatway/log.out" },
@{ Name = "system_log.out"; RemotePath = "/data/services/api/auth/auth-sso-system/log.out" },
@{ Name = "对内2.0_ubains-INFO-AND-ERROR.log"; RemotePath = "/data/services/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log" },
@{ Name = "对内3.0_ubains-INFO-AND-ERROR.log"; RemotePath = "/data/services/api/java-meeting/java-meeting3.0/logs/ubains-INFO-AND-ERROR.log" },
@{ Name = "对外服务_ubains-INFO-AND-ERROR.log"; RemotePath = "/data/services/api/java-meeting/java-meeting-extapi/logs/ubains-INFO-AND-ERROR.log" },
@{ Name = "信息调度_ubains-INFO-AND-ERROR.log"; RemotePath = "/data/services/api/java-meeting/java-message-scheduling/logs/ubains-INFO-AND-ERROR.log" },
@{ Name = "MQTT_ubains-INFO-AND-ERROR.log"; RemotePath = "/data/services/api/java-meeting/java-mqtt/logs/ubains-INFO-AND-ERROR.log" },
......
......@@ -82,7 +82,7 @@ function Test-UjavaServices {
.DESCRIPTION
检测 ujava 容器中是否存在特定进程。支持在容器内或宿主机上检测。
通过精确匹配方式检测,支持 meeting2.0 和 meeting3.0 两种版本。
通过精确匹配方式检测,支持 meeting2.0 版本。
.PARAMETER Server
服务器信息哈希表,包含 IP、User、Pass、Port 等连接信息
......@@ -154,10 +154,6 @@ function Test-UjavaServices {
# meeting2.0 需要匹配路径中包含 java-meeting2.0
$checkCmd = "docker exec $ContainerName ps aux 2>/dev/null | grep -v grep | grep '$jarFileName' | grep 'java-meeting2.0' | wc -l"
}
elseif ($serviceName -eq "meeting3.0") {
# meeting3.0 需要匹配路径中包含 java-meeting3.0
$checkCmd = "docker exec $ContainerName ps aux 2>/dev/null | grep -v grep | grep '$jarFileName' | grep 'java-meeting3.0' | wc -l"
}
else {
# 其他服务直接匹配jar文件名
$checkCmd = "docker exec $ContainerName ps aux 2>/dev/null | grep -v grep | grep '$jarFileName' | wc -l"
......@@ -168,9 +164,6 @@ function Test-UjavaServices {
if ($serviceName -eq "meeting2.0") {
$checkCmd = "ps aux 2>/dev/null | grep -v grep | grep '$jarFileName' | grep 'java-meeting2.0' | wc -l"
}
elseif ($serviceName -eq "meeting3.0") {
$checkCmd = "ps aux 2>/dev/null | grep -v grep | grep '$jarFileName' | grep 'java-meeting3.0' | wc -l"
}
else {
$checkCmd = "ps aux 2>/dev/null | grep -v grep | grep '$jarFileName' | wc -l"
}
......@@ -195,9 +188,6 @@ function Test-UjavaServices {
if ($serviceName -eq "meeting2.0") {
$checkCmd = "ps aux 2>/dev/null | grep -v grep | grep '$jarFileName' | grep 'java-meeting2.0' | wc -l"
}
elseif ($serviceName -eq "meeting3.0") {
$checkCmd = "ps aux 2>/dev/null | grep -v grep | grep '$jarFileName' | grep 'java-meeting3.0' | wc -l"
}
else {
$checkCmd = "ps aux 2>/dev/null | grep -v grep | grep '$jarFileName' | wc -l"
}
......
......@@ -24,7 +24,6 @@
```
- 添加后的效果:
- ```ignorelang
location ~* ^/exapi/(swagger-ui|doc\.html|swagger-resources|v2/api-docs|v3/api-docs|webjars) {
return 403;
}
......
# 远程自动化部署_需求文档
## 相关资料要求
### 部署包路径
- ARM架构:\\192.168.9.9\发布版本\03服务器部署\临时使用-新统一平台\ARM部署包-请勿使用
- X86架构:\\192.168.9.9\发布版本\03服务器部署\临时使用-新统一平台\X86部署包\全量版
### 目标服务器
- X86架构服务器:192.168.5.52 root Ubains@123
- ARM架构服务器:192.168.9.76 root Ubains@123
### 部署文档
- X86部署文档路径:"\\192.168.9.9\发布版本\03服务器部署\临时使用-新统一平台\X86部署包\新统一平台自动化部署操作指导.docx"
- ARM部署文档路径:"\\192.168.9.9\发布版本\03服务器部署\临时使用-新统一平台\ARM部署包-请勿使用\新统一平台自动化部署操作指导.docx"
## 授权文件
- X86-5.52授权文件路径:"\\192.168.9.9\发布版本\03服务器部署\临时使用-新统一平台\测试授权文件-请勿使用\5.52授权文件\license.zip"
- ARM-9.76授权文件路径:"\\192.168.9.9\发布版本\03服务器部署\临时使用-新统一平台\测试授权文件-请勿使用\9.76授权文件\license.zip"
### 相关服务路径
- 预定对外服务宿主机日志路径:/data/services/api/java-meeting/java-meeting-extapi/logs/ubains-INFO-AND-ERROR.log
- 预定对内服务宿主机日志路径:/data/services/api/java-meeting/java-meeting2.0/logs/ubains-INFO-AND-ERROR.log
- 运维服务宿主机日志路径:/data/services/api/python-cmdb/log/uinfo.log
- 讯飞服务宿主机日志路径:/data/services/api/python-voice/log/uinfo.log
### 相关系统网址
- 新统一平台前台地址:https://服务器IP/
- 新统一平台维护地址:https://服务器IP/#/LoginConfig
- 新统一平台后台地址;https://服务器IP/#/LoginAdmin
### 接口调用要求
- 重试机制:
- 重试周期:
- 重试次数:5次
- 重试条件:
- 当调用失败或成功时都等待30秒,再执行下一次测试。
- 记录测试结果。
- 当测试结果为成功时,标识为服务启动正常,结束测试。
### 部署时间要求
- 自动化部署脚本执行时间:40分钟
- 根据文档授权执行时间:10分钟
- 根据文档创建用户使用:10分钟
## 执行要求
1. 部署包上传
- 根据架构选择部署包路径,根据部署文档上传对应的部署包文件到指定目录。
2. 目标服务器登录
- 登录目标服务器,并切换到root用户。
3. 部署执行
- 根据部署文档执行部署操作
- 如遇选择部署的系统,则选择全部系统,并执行部署操作。
## 验收要求
1. 自动化部署完成后检查容器状态是否正常,核查容器日志是否正确。
2. 检查对外服务状态:
- 日志是否正确打印如下信息`SYSTEMVERSION :: target_api_integration2.0.2612.258 2026-03-17 10:59:54`,版本号不固定判断,只要有就行,如有则标识为服务启动正常,若无则再等待10分钟,再次检查,若10分钟后仍然未输出,则标识为启动异常,记录异常日志。
- 调用对外接口`curl -k https://服务器IP/exapi/message/getMsgPageList`
- 成功:返回信息:`{"success":false,"code":"A0076","message":"无效token","result":"Full authentication is required to access this resource"}`
- 失败:返回信息:
```json
<!DOCTYPE html>
<html>
<head>
<title>Error</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>An error occurred.</h1>
<p>Sorry, the page you are looking for is currently unavailable.<br/>
Please try again later.</p>
<p>If you are the system administrator of this resource then you should check
the error log for details.</p>
<p><em>Faithfully yours, nginx.</em></p>
</body>
</html>
```
- 重试机制:根据文档的接口调用要求,执行重试机制。
3. 访问维护平台
- 按照部署文档中第三章系统授权进行执行操作,如遇验证码输入则填入`csba`
- 需上传的授权文件路径根据服务器IP获取对应的授权文件,文档顶部有标注对应路径。
- 继续根据文档执行第三章节的授权操作。
4. 新统一平台服务检查
- 检查服务启动状态:
- 检查预定对内、对外服务日志是否正常,是否存在异常日志输出。
- 检查运维服务日志是否正常,是否存在异常日志输出。
- 检查讯飞服务日志是否正常,是否存在异常日志输出。
- 检查服务接口状态:
- 预定系统:
- 调用预定系统接口`curl -k https://服务器IP/meetingV3/api/systemConfiguration/globalConfig?companyNumber=CN-SZ-00-0201`
- 响应结果:
- 成功:`{"success":false,"code":"A0078","message":"请求错误,accessToken为空","detailed":"com.ubains.meeting.exception.BasisException: 请求错误,accessToken为空"}`
- 失败:`{"code":500,"msg":"内部服务器错误"}`
- 重试机制:根据文档的接口调用要求,执行重试机制。
- 运维集控系统:
- 调用运维集控系统接口`curl -k https://服务器IP/monitor/api2/api/servermonitor/`
- 响应结果:
- 成功:`{"success":0,"data":[{"code":40000014,"error":"用户不存在或重新登录或已退出","describe":""}]}`
- 失败:
```
<!DOCTYPE html>
<html>
<head>
<title>Error</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>An error occurred.</h1>
<p>Sorry, the page you are looking for is currently unavailable.<br/>
Please try again later.</p>
<p>If you are the system administrator of this resource then you should check
the error log for details.</p>
<p><em>Faithfully yours, nginx.</em></p>
</body>
</html>
```
- 重试机制:根据文档的接口调用要求,执行重试机制。
- 讯飞转录系统:
- 调用讯飞转录系统接口`curl -k https://服务器IP/voice/api/iflytek/roommaster?company_id=1&user_id=8&company_secret=57d00f9f-020f-5f1f-b788-55fae843bceb&getall=1`
- 响应结果:
- 成功:`{"success":false,"data":[{"code":40000003,"error":"缺少关键参数","describe":""}]}`
- 失败:
```ignorelang
<!DOCTYPE html>
<html>
<head>
<title>Error</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>An error occurred.</h1>
<p>Sorry, the page you are looking for is currently unavailable.<br/>
Please try again later.</p>
<p>If you are the system administrator of this resource then you should check
the error log for details.</p>
<p><em>Faithfully yours, nginx.</em></p>
</body>
</html>
```
- 重试机制:根据文档的接口调用要求,执行重试机制。
5. 新统一平台访问使用
- 根据部署文档第四章节创建公司管理员,按照描述步骤进行操作。
## 分析要求
1. 部署文档描述清晰,无语法错误。
2. 部署过程清晰明了,无异常现象。
3. 部署到使用的时长记录要求在1小时内完成。
4. 部署过程中无异常日志输出。
5. 部署脚本日志打印清晰明了。
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论