Tongweb7049m10适配skywalking(by lqw)

文章目录

声明

本帖仅供参考,实际操作,建议先在测试环境测试并做好备份。

参考来源

东方通应用服务器软件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了:

相关推荐
写了20年代码的老程序员1 小时前
企业微信、飞书、钉钉 Webhook 接入,后端代码为什么总是越写越丑
java·微信
解决问题no解决代码问题1 小时前
设计模式分类介绍
java·开发语言·设计模式
码不停蹄的玄黓1 小时前
SpringBoot 自动装配原理
java·spring boot·后端
白露与泡影1 小时前
Java虚拟线程实战:从线程池痛点到性能优化全流程
java·开发语言·性能优化
码上有光1 小时前
c++模板进阶知识讲解(对模板的进一步的运用与理解)
java·前端·c++·特化·模板进阶·偏特化
IT空门:门主1 小时前
Java 单例模式详解:7 种实现方式 + volatile 原理 + 反射与序列化问题
java·开发语言·单例模式
SimonKing1 小时前
别再把业务逻辑写进回调接口了!支付回调的正确打开方式
java·后端·程序员
学代码的真由酱1 小时前
Java文档搜索引擎-测试报告
java·自动化测试·功能测试·搜索引擎·性能测试·测试报告
布吉岛的石头1 小时前
Java 程序员第 34 阶段大模型权限与安全设计:接口鉴权与访问控制落地
java·安全·flask