mirror of
https://github.com/whyour/qinglong.git
synced 2026-08-20 18:32:30 +08:00
fix: preserve container startup diagnostics
This commit is contained in:
+58
-18
@@ -23,37 +23,75 @@ copy_dep() {
|
||||
}
|
||||
|
||||
pm2_log() {
|
||||
t '---> pm2日志'
|
||||
local panelOut="/root/.pm2/logs/qinglong-out.log"
|
||||
local panelError="/root/.pm2/logs/qinglong-error.log"
|
||||
tail -n 300 "$panelOut"
|
||||
tail -n 300 "$panelError"
|
||||
t '---> 服务诊断信息'
|
||||
pm2 status || true
|
||||
|
||||
local systemLogDir="$dir_data/syslog"
|
||||
local latestSystemLog
|
||||
latestSystemLog=$(find "$systemLogDir" -maxdepth 1 -type f -name '*.log' 2>/dev/null | sort | tail -n 1)
|
||||
if [[ -n "$latestSystemLog" ]]; then
|
||||
t '---> 最近的系统日志: %s' "$latestSystemLog"
|
||||
tail -n 300 "$latestSystemLog"
|
||||
else
|
||||
t '---> 未找到系统日志: %s' "$systemLogDir"
|
||||
fi
|
||||
|
||||
if [[ "$QL_CONTAINER" == "true" ]]; then
|
||||
t '---> 容器内 PM2 日志不落盘;早期启动错误请执行 docker logs --tail 300 <容器名>'
|
||||
return
|
||||
fi
|
||||
|
||||
local pm2Home="${PM2_HOME:-$HOME/.pm2}"
|
||||
local panelOut="$pm2Home/logs/qinglong-out.log"
|
||||
local panelError="$pm2Home/logs/qinglong-error.log"
|
||||
[[ -f "$panelOut" ]] && tail -n 300 "$panelOut"
|
||||
[[ -f "$panelError" ]] && tail -n 300 "$panelError"
|
||||
}
|
||||
|
||||
check_ql() {
|
||||
local api=$(curl -s --noproxy "*" "http://localhost:${ql_port}")
|
||||
local basePath="${ql_base_url%/}"
|
||||
local api
|
||||
local attempt
|
||||
for ((attempt = 1; attempt <= 10; attempt++)); do
|
||||
api=$(curl -s --max-time 2 --noproxy "*" "http://localhost:${ql_port}${basePath}/")
|
||||
[[ $api =~ "<div id=\"root\"></div>" ]] && break
|
||||
sleep 1
|
||||
done
|
||||
t '\n=====> 检测面板'
|
||||
echo -e "\n\n$api\n"
|
||||
if [[ $api =~ "<div id=\"root\"></div>" ]]; then
|
||||
t '=====> 面板服务启动正常\n'
|
||||
else
|
||||
t '=====> 面板服务启动异常,请检查上方诊断信息\n'
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_pm2() {
|
||||
pm2_log
|
||||
local currentTimeStamp=$(date +%s)
|
||||
local api=$(
|
||||
curl -s --noproxy "*" "http://localhost:${ql_port}/api/system?t=$currentTimeStamp" \
|
||||
-H 'Accept: */*' \
|
||||
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36' \
|
||||
-H "Referer: http://localhost:${ql_port}/crontab" \
|
||||
-H 'Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7' \
|
||||
--compressed
|
||||
)
|
||||
local basePath="${ql_base_url%/}"
|
||||
local api
|
||||
local attempt
|
||||
for ((attempt = 1; attempt <= 10; attempt++)); do
|
||||
api=$(
|
||||
curl -s --max-time 2 --noproxy "*" "http://localhost:${ql_port}${basePath}/api/health?t=$currentTimeStamp" \
|
||||
-H 'Accept: */*' \
|
||||
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36' \
|
||||
-H "Referer: http://localhost:${ql_port}/crontab" \
|
||||
-H 'Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7' \
|
||||
--compressed
|
||||
)
|
||||
[[ $api == *'"code":200'* && $api == *'"status":"ok"'* ]] && break
|
||||
sleep 1
|
||||
done
|
||||
t '\n=====> 检测后台'
|
||||
echo -e "\n\n$api\n"
|
||||
if [[ $api =~ "{\"code\"" ]]; then
|
||||
if [[ $api == *'"code":200'* && $api == *'"status":"ok"'* ]]; then
|
||||
t '=====> 后台服务启动正常\n'
|
||||
else
|
||||
pm2_log
|
||||
t '=====> 后台服务启动异常,请检查上方诊断信息\n'
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -63,10 +101,12 @@ main() {
|
||||
|
||||
reset_env
|
||||
copy_dep
|
||||
check_ql
|
||||
check_pm2
|
||||
reload_pm2
|
||||
local checkStatus=0
|
||||
check_ql || checkStatus=1
|
||||
check_pm2 || checkStatus=1
|
||||
t '\n=====> 检测结束\n'
|
||||
return $checkStatus
|
||||
}
|
||||
|
||||
main
|
||||
|
||||
Reference in New Issue
Block a user