文章目录
- 声明
- 参考来源
- 安装前准备
- [安装和配置jdk 17](#安装和配置jdk 17)
- [SkyWalking 服务端安装](#SkyWalking 服务端安装)
- [skywalking 配置 JDK 路径](#skywalking 配置 JDK 路径)
- [SkyWalking Java Agent 安装](#SkyWalking Java Agent 安装)
- [OAP 服务端配置(添加 TongWeb 组件定义,必须)](#OAP 服务端配置(添加 TongWeb 组件定义,必须))
- 修改数据库配置(可选)
- [创建skwalking 统一管理脚本](#创建skwalking 统一管理脚本)
- skywalking与tongweb交互的逻辑思路
- [TongWeb 插件安装](#TongWeb 插件安装)
- [配置 Agent 参数](#配置 Agent 参数)
- [配置 TongWeb 启动参数](#配置 TongWeb 启动参数)
- 启动skywalking
- 测试skywalking的ui页面
- TongWeb部署测试应用
声明
本帖仅供参考,实际操作,建议先在测试环境测试并做好备份。
参考来源
东方通应用服务器软件TongWeb_V7.0工具使用指南(Tongweb安装目录下的doc目录里有对应的产品手册,可联系项目对应的销售或者东方通技术人员获取)

安装前准备
1.已安装好Tongweb7049m10(相关安装指引参考:TongWeb7-绿色版安装及启动停止和控制台访问)
2.外网,确保能下载到skywalking的安装包(否则需要自行下载安装包,本贴的指令里带有安装包的下载网址,可参考使用)。
安装和配置jdk 17
SkyWalking 9.x 要求 JDK 17+,系统自带 JDK 1.8 不兼容。
bash
# 创建安装目录
mkdir -p /opt/skywalking/jdk-17
# 下载毕昇 JDK 17(
wget -P /tmp https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_jdk/bisheng-jdk-17.0.18-b13-linux-x64.tar.gz
# 解压
tar -xzf /tmp/bisheng-jdk-17.0.18-b13-linux-x64.tar.gz -C /opt/skywalking/jdk-17/
# 配置环境变量
vi /erc/preofile
# 检查是否有以下配置,没有的话添加
export JAVA_HOME=/opt/skywalking/jdk-17/bisheng-jdk-17.0.18
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
# 生效
source /etc/profile
# 检查
[root@localhost skywalking]# java -version
openjdk version "17.0.18" 2026-01-20
OpenJDK Runtime Environment BiSheng (build 17.0.18+13)
OpenJDK 64-Bit Server VM BiSheng (build 17.0.18+13, mixed mode, sharing)
[root@localhost skywalking]#
SkyWalking 服务端安装
bash
# 下载
wget -P /tmp https://mirrors.huaweicloud.com/apache/skywalking/9.6.0/apache-skywalking-apm-9.6.0.tar.gz
# 解压
tar -xzf /tmp/apache-skywalking-apm-9.6.0.tar.gz -C /opt/skywalking/
# 目录结构
# /opt/skywalking/apache-skywalking-apm-bin/
# ├── bin/ # 启动脚本
# ├── config/ # OAP 配置文件
# ├── logs/ # 日志目录
# └── webapp/ # Web UI
skywalking 配置 JDK 路径
bash
# SkyWalking 启动脚本需要指向 JDK 17,参考下述操作指令,修改oapService.sh webappService.sh startup.sh 文件,在文件**开头**添加 `JAVA_HOME` 设置
cd /opt/skywalking
# 批量修改
for f in oapService.sh webappService.sh startup.sh; do
sed -i "2a export JAVA_HOME=/opt/skywalking/jdk-17/bisheng-jdk-17.0.18" /opt/skywalking/apache-skywalking-apm-bin/bin/$f
done
SkyWalking Java Agent 安装
bash
# 下载
wget -P /tmp https://archive.apache.org/dist/skywalking/java-agent/9.3.0/apache-skywalking-java-agent-9.3.0.tgz
# 解压
tar -xzf /tmp/apache-skywalking-java-agent-9.3.0.tgz -C /opt/skywalking/
# 目录结构
# /opt/skywalking/skywalking-agent/
# ├── skywalking-agent.jar # Agent 主 jar
# ├── config/
# │ └── agent.config # Agent 配置文件
# ├── plugins/ # 默认插件
# └── optional-plugins/ # 可选插件
OAP 服务端配置(添加 TongWeb 组件定义,必须)
bash
vi /opt/skywalking/apache-skywalking-apm-bin/config/component-libraries.yml
# 添加 TongWeb 组件定义,找到 `Apache-Kylin` 节点,在其下方添加(注意格式和首字母缩进):
TongWeb:
id: 188
languages: Java

修改数据库配置(可选)
本次示范主要为了测试Tongweb7049m10,暂时使用的默认的h2,有需要的话可以参考下述指令更换为mysql。
bash
### 存储配置(可选:切换为 MySQL)
# 默认使用 H2 内存数据库(重启数据丢失),生产环境建议切换 MySQL:
vi /opt/skywalking/apache-skywalking-apm-bin/config/application.yml
storage:
selector: ${SW_STORAGE:mysql}
mysql:
properties:
jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
dataSource.user: ${SW_DATA_SOURCE_USER:root}
dataSource.password: ${SW_DATA_SOURCE_PASSWORD:your_password}
#同时需要将 MySQL 驱动 jar 放入 oap-libs/ 目录。
创建skwalking 统一管理脚本
bash
cat > /opt/skywalking/skywalking.sh << 'SCRIPT'
#!/bin/bash
SKW_HOME=/opt/skywalking/apache-skywalking-apm-bin
LOG_DIR=/opt/skywalking/logs
mkdir -p $LOG_DIR
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
oap_pid() { ps aux | grep 'OAPServerStartUp' | grep -v grep | awk '{print $2}'; }
webui_pid() { ps aux | grep 'skywalking-webapp' | grep -v grep | awk '{print $2}'; }
start() {
echo "启动 SkyWalking..."
cd $SKW_HOME/bin
nohup sh oapService.sh > $LOG_DIR/oap.log 2>&1 &
echo "等待 OAP 启动(30秒)..."
sleep 30
nohup sh webappService.sh > $LOG_DIR/webapp.log 2>&1 &
sleep 5
status
}
stop() {
echo "停止 SkyWalking..."
PID=$(webui_pid)
[ -n "$PID" ] && kill $PID && echo "WebUI 已停止 (PID: $PID)"
PID=$(oap_pid)
[ -n "$PID" ] && kill $PID && echo "OAP 已停止 (PID: $PID)"
}
restart() { stop; sleep 3; start; }
status() {
echo -e "${YELLOW}=== SkyWalking 状态 ===${NC}"
PID=$(oap_pid)
if [ -n "$PID" ]; then
echo -e "OAP: ${GREEN}运行中${NC} (PID: $PID)"
else
echo -e "OAP: ${RED}未运行${NC}"
fi
PID=$(webui_pid)
if [ -n "$PID" ]; then
echo -e "WebUI: ${GREEN}运行中${NC} (PID: $PID)"
else
echo -e "WebUI: ${RED}未运行${NC}"
fi
echo "端口检查:"
ss -tlnp 2>/dev/null | grep -E '11800|12800|8080' || netstat -tlnp 2>/dev/null | grep -E '11800|12800|8080'
}
case "$1" in
start) start ;;
stop) stop ;;
restart) restart ;;
status) status ;;
*) echo "用法: $0 {start|stop|restart|status}" ;;
esac
SCRIPT
chmod +x /opt/skywalking/skywalking.sh
skywalking与tongweb交互的逻辑思路
bash
用户请求到达 TongWeb 应用服务器
↓
TongWeb 启动时,通过 external.vmoptions 配置加载 SkyWalking Agent
(-javaagent 参数指向 skywalking-agent.jar)
↓
Agent 自动加载 TongWeb 专属插件(sw8.9-tw7.x-http-plugin-7.0.jar),
拦截 HTTP 请求,打上标签:组件 ID(TongWeb)、Layer(Http/MIDDLEWARE)
↓
Agent(数据采集器)收集和处理拦截的数据
↓
Agent 将数据发送到 OAP Server(SkyWalking 服务端)
↓
OAP Server(SkyWalking 服务端) 根据内置的组件库定义(component-libraries.yml)解析数据:
- 根据组件 ID 识别:这是 TongWeb
- 根据 Layer 分类:归到"中间件"组
↓
数据存储到后端数据库(Elasticsearch / MySQL等)
↓
skywalking的ui页面从数据库读取数据
展示组件名称、Layer 分类、调用链等信息
TongWeb 插件安装
插件位置在TongWeb安装目录的lib下的apm目录,如下图所示:


bash
# 解压插件包
unzip tw7-skywalking-plugin.zip -d /tmp/tw7-plugin/
# 复制 HTTP 插件到 Agent 的 plugins 子目录(不影响 Agent 主 jar)
cp /tmp/tw7-plugin/tw7-skywalking-plugin/sw8.9-tw7.x-http-plugin-7.0.jar /opt/skywalking/skywalking-agent/plugins/
# 备份原 Agent jar(在替换 class 之前)
cd /opt/skywalking/skywalking-agent
cp skywalking-agent.jar skywalking-agent.jar.bak
# 创建临时目录,从插件包内的补丁 jar 中提取 class 文件
mkdir -p /tmp/agent-patch
cd /tmp/agent-patch
jar xf /tmp/tw7-plugin/tw7-skywalking-plugin/skywalking-agent.jar org/apache/skywalking/apm/network/trace/component/ComponentsDefine.class
# 将提取的 class 打入 Agent 主 jar
cd /opt/skywalking/skywalking-agent
jar uf skywalking-agent.jar org/apache/skywalking/apm/network/trace/component/ComponentsDefine.class
配置 Agent 参数
bash
vi /opt/skywalking/skywalking-agent/config/agent.config
# 添加一下配置
# 服务名称(在 SkyWalking UI 中显示)
agent.service_name=${SW_AGENT_NAME:tongweb-application}
# 是否收集 HTTP 请求参数
plugin.tongweb.collect_http_params=${SW_PLUGIN_TONGWEB_COLLECT_HTTP_PARAMS:false}
# HTTP 参数最大长度(-1 表示不限制)
plugin.http.http_params_length_threshold=${SW_PLUGIN_HTTP_HTTP_PARAMS_LENGTH_THRESHOLD:1024}
配置 TongWeb 启动参数
bash
# /opt/TongWeb7.0.4.9_M10_Enterprise_Linux为实际tongweb安装路径
vi /opt/TongWeb7.0.4.9_M10_Enterprise_Linux/bin/external.vmoptions
在 `#server_options` 下添加:
# 实际请配置为你的skywalking-agent.jar
-javaagent:/opt/skywalking/skywalking-agent/skywalking-agent.jar
# 配置后需要重启tongweb
cd /opt/TongWeb7.0.4.9_M10_Enterprise_Linux/bin/
./forcestopserver.sh
ps -ef |grep tongweb
# 确认没有tongweb进程再执行
cd /opt/TongWeb7.0.4.9_M10_Enterprise_Linux/bin/
./startservernohup.sh
执行后查看logs目录下的server.log,看是否有报错
启动skywalking
之前的章节里,已经配置了skywalking的管理脚本,下面是相关指令:
bash
sh /opt/skywalking/skywalking.sh start # 启动
sh /opt/skywalking/skywalking.sh stop # 停止
sh /opt/skywalking/skywalking.sh restart # 重启
sh /opt/skywalking/skywalking.sh status # 查看状态
测试skywalking的ui页面
bash
检查浏览器与服务器的网络是否能测通(这是百分之八十的新手都会犯的错误)。
例如:
window 的cmd 输入 telnet 服务器ip 8080,回车看是否telnet通
例如:
检查防火墙是否关闭
systemctl status firewalld
浏览器访问 http://服务器ip:8080

TongWeb部署测试应用
登录到Tongweb的控制台页面,配置一下服务器选择文件可选目录(配置为tongweb所在的目录的上一级目录即可,例如/opt):

配置后可点击应用管理,部署应用,然后从tongweb的samples下选择beanValidate.war,然后一直下一步:

部署好后点击http访问,然后多次刷新该页面:


之后再去刷新skywalking的ui页面,可以看到识别到tongweb了:
