diff --git a/doc/部署运维文档.md b/doc/部署运维文档.md index 629ed93..584cf18 100644 --- a/doc/部署运维文档.md +++ b/doc/部署运维文档.md @@ -1,7 +1,7 @@ # 资金服务平台部署运维文档 -> 版本: v2.0 -> 更新日期: 2026-02-20 +> 版本: v2.1 +> 更新日期: 2026-02-13 > 作者: zhangjf --- @@ -736,65 +736,138 @@ scrape_configs: #### 5.2.1 日志配置 -项目采用 Logback 作为日志框架,支持 **TraceId + SpanId 链路追踪**: +项目采用 Logback 作为日志框架,支持 **TraceId + SpanId 链路追踪**。 + +**关键配置**: ```xml - + + + + + + + + + + - %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId:-}][%X{spanId:-}] %-5level %logger{50} - %msg%n + ${LOG_PATTERN} + UTF-8 - - - ./logs/${APP_NAME}/info.log + + + ${LOG_PATH}/${APP_NAME}/info.log - ./logs/${APP_NAME}/info-%d{yyyy-MM-dd}.%i.log + ${LOG_PATH}/${APP_NAME}/info-%d{yyyy-MM-dd}.%i.log 30 - 100MB + + 100MB + - %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId:-}][%X{spanId:-}] %-5level %logger{50} - %msg%n + ${LOG_PATTERN} - - - ./logs/${APP_NAME}/aop.log - - ./logs/${APP_NAME}/aop-%d{yyyy-MM-dd}.%i.log - 30 - - - %msg%n - + + + ${LOG_PATH}/${APP_NAME}/error.log + - - - - + + + ${LOG_PATH}/${APP_NAME}/json.log + + {"app_name":"${APP_NAME}"} + + ``` +**多实例日志隔离**: + +| 实例 | INSTANCE_NAME | 日志目录 | +|------|--------------|---------| +| 普通租户 | `fund-sys` | `/datacfs/applogs/fund-sys/` | +| VIP租户 | `fund-sys-vip` | `/datacfs/applogs/fund-sys-vip/` | + **日志文件结构**: ``` -logs/ +/datacfs/applogs/ ├── fund-gateway/ │ ├── info.log # 主日志 │ ├── error.log # 错误日志 -│ └── aop.log # API请求日志 +│ ├── json.log # JSON格式日志(ELK) +│ ├── aop.log # API请求日志 +│ └── stdout.log # 标准输出日志 ├── fund-sys/ │ ├── info.log │ ├── error.log -│ └── aop.log -└── ... +│ └── ... +└── fund-sys-vip/ # VIP租户实例 + ├── info.log + └── ... ``` -#### 5.2.2 ELK 日志收集 +#### 5.2.2 启动脚本配置 + +启动脚本支持多租户多实例部署,关键特性: + +```bash +# start.sh 核心逻辑 + +# 1. 加载配置文件 +load_properties "${APP_HOME}/conf/env.properties" +load_properties "${APP_HOME}/conf/service.properties" + +# 2. INSTANCE_NAME处理 +# 如果INSTANCE_NAME为空,自动使用APP_NAME +if [[ -z "${INSTANCE_NAME}" ]]; then + INSTANCE_NAME=${APP_NAME} +fi + +# 3. ClassPath配置(lib/*:conf) +CLASSPATH="${APP_HOME}/lib/*:${APP_HOME}/conf" + +# 4. JVM参数 +JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200" + +# 5. 日志参数(使用INSTANCE_NAME区分实例) +LOG_OPTS="-Dlogging.file.path=${LOG_HOME}" +LOG_OPTS="$LOG_OPTS -Dapp.instance.name=${INSTANCE_NAME}" + +# 6. 启动命令(java -cp模式) +nohup java $JAVA_OPTS $LOG_OPTS $TENANT_OPTS -cp "$CLASSPATH" $MAIN_CLASS >${LOG_HOME}/${INSTANCE_NAME}/stdout.log 2>&1 & +``` + +**关键参数说明**: + +| 参数 | 说明 | 来源 | +|------|------|------| +| `APP_NAME` | 服务名称 | service.properties | +| `INSTANCE_NAME` | 实例名称(唯一) | service.properties,空则用APP_NAME | +| `MAIN_CLASS` | 主类 | service.properties | +| `LOG_HOME` | 日志根目录 | env.properties | +| `TENANT_ID` | 租户ID | service.properties | + +**启动命令示例**: + +```bash +# 单实例启动 +./bin/start.sh + +# 多实例启动(VIP租户) +INSTANCE_NAME=fund-sys-vip TENANT_ID=vip001 ./bin/start.sh +``` + +#### 5.2.3 ELK 日志收集 ```yaml # filebeat.yml