SKywalking Agent配置+ Oracle监控插件安装指南

前言:

SkyWalking + Elasticsearch8 容器化部署指南
Skywalking版本:V10.2.0
Skywalking Agent版本:V9.4.0

Skywalking Agent下载地址:Downloads | Apache SkyWalking
插件下载地址:Releases · SkyAPM/java-plugin-extensions
插件版本:apm-oracle-10.x-plugin-2.3.1.jar

一.Agent包准备

打开下载地址,在如下地方下载需要版本的Agent

image-20250909151601226

二.配置Java项目并连接Skywalking

1.非容器化启动Java

agent包上传至jar包目录后解压,如图:

tar -zxvf apache-skywalking-java-agent-9.4.0.tgz

image-20250909181909540

修改Java的启动命令:

#!/bin/bash
var=$(date +%Y%m%d%H%M)
dir_base=/opt/app/trpms-api
jar_name='trpms-0.0.1-SNAPSHOT.jar'
filename=/opt/app/trpms-api/trpms-0.0.1-SNAPSHOT.jar
if [ $(find $dir_base -name '*.*.bak*' | wc -l) -gt 6 ]; then
   #删除以.bak2结尾的备份jar包
   find $dir_base -name '*.*.bak*' | xargs rm -rvf
   echo "delete bak.jar success!"
fi
#重命名备份jar包
cp $filename $filename.bak$var
echo "cp name success!"

export JAVA_HOME=/opt/java/jdk-11.0.12
echo ${JAVA_HOME}
cd ${dir_base}
echo 'deploying...'

if [ $(pgrep -f ${jar_name} | wc -l) -gt 0 ]; then
  pkill -9 -f ${jar_name}
fi
echo ${dir_base}/${jar_name}
nohup ${JAVA_HOME}/bin/java -Xms512m -Xmx1024m -jar ${dir_base}/${jar_name} --spring.profiles.active=prd-scfai s>${dir_base}/out.log 2>&1 &
echo 'ok!'

以上原本的Java启动脚本,绑定 Skywakling 需要在Java启动参数中添加如下命令:

#!/bin/bash
var=$(date +%Y%m%d%H%M)
dir_base=/opt/app/trpms-api
jar_name='trpms-0.0.1-SNAPSHOT.jar'
filename=/opt/app/trpms-api/trpms-0.0.1-SNAPSHOT.jar

# 添加SkyWalking agent路径变量
skywalking_agent_path="/opt/app/trpms-api/skywalking-agent/skywalking-agent.jar"

if [ $(find $dir_base -name '*.*.bak*' | wc -l) -gt 6 ]; then
   find $dir_base -name '*.*.bak*' | xargs rm -rvf
   echo "delete bak.jar success!"
fi

cp $filename $filename.bak$var
echo "cp name success!"

export JAVA_HOME=/opt/java/jdk-11.0.12
echo ${JAVA_HOME}
cd ${dir_base}
echo 'deploying...'

if [ $(pgrep -f ${jar_name} | wc -l) -gt 0 ]; then
  pkill -9 -f ${jar_name}
fi

# 检查SkyWalking agent是否存在
if [ ! -f "$skywalking_agent_path" ]; then
    echo "错误: 找不到SkyWalking agent: $skywalking_agent_path"
    echo "请确保SkyWalking agent已正确安装在该路径"
    exit 1
fi

echo ${dir_base}/${jar_name}
echo "使用SkyWalking agent: $skywalking_agent_path"

# 使用绝对路径而不是相对路径
nohup ${JAVA_HOME}/bin/java -Xms512m -Xmx1024m \
  -javaagent:"$skywalking_agent_path" \
  -Dskywalking.agent.service_name=trpms-api \
  -Dskywalking.collector.backend_service=<your ip>:11800 \
  -jar ${dir_base}/${jar_name} \
  --spring.profiles.active=prd-scfai \
  >${dir_base}/out.log 2>&1 &

echo 'ok!'

命令解释:
-javaagent:"$skywalking_agent_path":指定 SkyWalking Java Agent 的路径
-Dskywalking.agent.service_name=trpms-api:设置当前应用在 SkyWalking 中的服务名称
-Dskywalking.collector.backend_service=172.20.23.66:11800:指定 SkyWalking 收集器(OAP Server)的地址和端口

启动成功后,就可以在Skywalking管理页面看见该系统的监控信息。
image-20250909174233611

2.Docker容器化部署

以下是一个完整配置的Dockerfile打包文件:

# 配置了sky-walking的dockerfile
#此处任意Java镜像即可
FROM <镜像地址>/java:corretto11-font
MAINTAINER shanyoufusu
WORKDIR /usr/app
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
ARG APP_NAME="app"
ARG PROFILE
ENV JAVA_OPTS="-Xms512m -Xmx4096m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/app/log" \
    SPRING_PROFILES_ACTIVE=$PROFILE \
    APPLICATION_NAME=$APP_NAME \
    AGENT_ADDRESS="<your ip>:11800"
ADD target/${APPLICATION_NAME}.jar ${APPLICATION_NAME}.jar
# 将agent文件夹放入容器,jenkins配置里,docker build前一步,cp到target文件夹下的
ADD target/agent/ /usr/local/agent
EXPOSE ${EXPORT}
ENTRYPOINT exec java ${JAVA_OPTS} \
  -javaagent:/usr/local/agent/skywalking-agent.jar \
  -Dskywalking.agent.service_name=$APPLICATION_NAME \
  -Dskywalking.collector.backend_service=${AGENT_ADDRESS} \
  -jar ${APPLICATION_NAME}.jar

注意文件中:ADD target/agent/ /usr/local/agent这一步是通过Jenkinsfile提前对skywalking-agent包进行了预处理,skywalking-agent已被提前拷贝至Jenkins/var/jenkins_home/目录并命名为agent

			dir("$buildDir") {
                         //  复制Skywalking包
                        sh 'cp -r /var/jenkins_home/agent target/'
                         sh 'ls ./target'  
                         echo "开始打包docker镜像:$imageName"

请按照实际情况修改ADD target/agent/ /usr/local/agent命令

依照此Dockerfile打包文件,可把skywalking-agentcopy至容器内部,在容器运行时就可以把数据传输至Skywalking OAP

三.Oracle监控插件安装

1.简要说明

Skywalking默认是不带Oracle数据库监控的功能,所以需要安装对应的插件去实现对Oracle数据库的监控,以此去排查数据库中存在的慢sql

image-20250909180400874

如上图,5342Pgsql的默认端口1521Oracle的默认端口。进入后就可以分别看到数据库的监控信息

image-20250909180744867

2.插件安装和命令配置

进入下载页面后,点击下载我们需要的安装包。

image-20250909181104350

下载后传入之前解压的skywalking-agent目录,如下图:

image-20250909181850691

image-20250909182008940

然后再运行Java应用的时候需要添加如下命令:

-Dskywalking.plugin.jdbc.trace_sql_parameters=true

如下:

# 配置了sky-walking的dockerfile
#此处任意Java镜像即可
FROM <镜像地址>/java:corretto11-font
MAINTAINER shanyoufusu
WORKDIR /usr/app
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
ARG APP_NAME="app"
ARG PROFILE
ENV JAVA_OPTS="-Xms512m -Xmx4096m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/app/log" \
    SPRING_PROFILES_ACTIVE=$PROFILE \
    APPLICATION_NAME=$APP_NAME \
    AGENT_ADDRESS="<your ip>:11800"
ADD target/${APPLICATION_NAME}.jar ${APPLICATION_NAME}.jar
# 将agent文件夹放入容器,jenkins配置里,docker build前一步,cp到target文件夹下的
ADD target/agent/ /usr/local/agent
EXPOSE ${EXPORT}
ENTRYPOINT exec java ${JAVA_OPTS} \
  -javaagent:/usr/local/agent/skywalking-agent.jar \
  -Dskywalking.agent.service_name=$APPLICATION_NAME \
  -Dskywalking.collector.backend_service=${AGENT_ADDRESS} \
  -Dskywalking.plugin.jdbc.trace_sql_parameters=true \
  -jar ${APPLICATION_NAME}.jar

启动后就能再虚拟数据库处,看到Oracle的数据库信息已经被监测。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐