第一种:docker部署方式
1、mysql存储
docker-compose.yml文件:
version: '3.9'
services:
mysql:
image: mysql:8.0.32
container_name: mysql8
restart: always
volumes:
- /data/docker/mysql/log=/var/log/mysql
- /data/docker/mysql/data=/var/lib/mysql
- /data/docker/mysql/conf=/etc/mysql/conf
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: skywalking
MYSQL_USER: skywalking
MYSQL_PASSWORD: skywalking
ports:
- "3306:3306"
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--default-authentication-plugin=mysql_native_password
--bind-address=0.0.0.0 # 关键:允许所有网络接口连接
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "skywalking", "-pskywalking"] # 使用 skywalking 用户测试
interval: 10s
timeout: 5s
retries: 10
start_period: 30s
networks:
- skywalking-net
# SkyWalking OAP 服务器
oap:
image: apache/skywalking-oap-server:9.5.0
container_name: skywalking-oap-server
restart: always
volumes:
- /Users/yulei/Documents/package/mysql-connector-java/mysql-connector-java-8.0.13.jar:/skywalking/oap-libs/mysql-connector-java-8.0.13.jar
ports:
- "11800:11800" # 接收 Agent 数据的 gRPC 端口
- "12800:12800" # 接收 Agent 数据的 HTTP 端口
environment:
- SW_STORAGE=mysql # 使用 MySQL 存储
- SW_STORAGE_MYSQL_JDBC_URL=jdbc:mysql://localhost:3306/skywalking?rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&useSSL=false
- SW_STORAGE_MYSQL_USER=skywalking
- SW_STORAGE_MYSQL_PASSWORD=skywalking
- SW_STORAGE_MYSQL_MAX_SIZE_OF_ARRAY_COLUMN=20
- SW_STORAGE_MYSQL_NUM_OF_REPLICAS=2
- TZ=Asia/Shanghai
depends_on:
mysql:
condition: service_healthy
networks:
- skywalking-net
# SkyWalking UI
ui:
image: apache/skywalking-ui:9.5.0
container_name: skywalking-ui
restart: always
ports:
- "8089:8089" # 容器内端口是8080,映射到主机8081
environment:
- SW_OAP_ADDRESS=http://oap:12800
depends_on:
- oap
networks:
- skywalking-net
volumes:
mysql-data:
driver: local
networks:
skywalking-net:
driver: bridge
2、elasticsearch方式
先本地docker部署elasticsearch
下载镜像elasticsearch:8.13.0
本地建es文件夹
做好挂载目录映射
命令:
docker pull elasticsearch:8.13.0
docker run --name elasticsearch \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms256m -Xmx512m" \
-e "xpack.security.enabled=false" \
-e "xpack.security.enrollment.enabled=false" \
-e "xpack.ml.enabled=false" \
-v /Users/yulei/Documents/package/es/data:/usr/share/elasticsearch/data \
-v /Users/yulei/Documents/package/es/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:8.13.0
下载skywalking相关镜像:
docker pull apache/skywalking-oap-server:9.5.0
docker pull apache/skywalking-ui:9.5.0
docker-compose启动方式
yml文件如下:
version: '3.8'
services:
elasticsearch:
image: elasticsearch:8.13.0
container_name: elasticsearch
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms512m -Xmx512m
- xpack.security.enabled=false
- xpack.security.enrollment.enabled=false
- xpack.ml.enabled=false
ports:
- "9200:9200"
- "9300:9300"
volumes:
- es-data:/usr/share/elasticsearch/data
- es-plugins:/usr/share/elasticsearch/plugins
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9200/_cluster/health"]
interval: 10s
timeout: 5s
retries: 20
start_period: 60s
networks:
- skywalking-net
oap:
image: apache/skywalking-oap-server:9.5.0
container_name: oap
restart: always
ports:
- "11800:11800"
- "12800:12800"
environment:
- SW_STORAGE=elasticsearch
- SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200
- SW_STORAGE_ES_PROTOCOL=http
depends_on:
elasticsearch:
condition: service_healthy # 等待 Elasticsearch 健康
networks:
- skywalking-net
ui:
image: apache/skywalking-ui:9.5.0
container_name: skywalking-ui
restart: always
ports:
- "8081:8080" # 容器内端口是8080,映射到主机8081
environment:
- SW_OAP_ADDRESS=http://oap:12800
depends_on:
- oap
networks:
- skywalking-net
volumes:
es-data:
driver: local
es-plugins:
driver: local
networks:
skywalking-net:
driver: bridge
启动方式:
docker-compose -f ./docker-compose-skywalking-es.yml up -d
启动完成后:
检查是否启动成功:
es检查:
# 查看容器日志
docker logs -f elasticsearch
# 检查健康状态
curl -X GET "http://localhost:9200/_cluster/health?pretty"
# 查看节点信息
curl -X GET "http://localhost:9200/?pretty"
skywalking检查:
# 检查 OAP 状态
curl -X GET "http://localhost:12800/version"
# 查看 SkyWalking 是否创建了索引
curl -X GET "http://localhost:9200/_cat/indices?v" | grep skywalking
# 访问 SkyWalking UI
open http://localhost:8081
第二种:IntelliJ IDEA
1. 项目准备
2. 导入项目到 IDEA
-
打开 IntelliJ IDEA -
选择 File
->Open
-
选择 SkyWalking 解压后的目录 -
等待 Maven 依赖下载完成
3. 配置启动类
-
OAP Server: oap-server/server-starter/src/main/java/org/apache/skywalking/oap/server/starter/OAPServerStartUp.java
-
Web UI: oap-server/server-webapp/src/main/java/org/apache/skywalking/oap/server/webapp/ApplicationStartUp.java
4. 配置启动参数
方案一:直接运行 OAP Server
-
找到 OAPServerStartUp.java
-
右键选择 Run 'OAPServerStartUp.main()'
-
或者配置运行配置:
方案二:使用 Maven 启动
方案三:配置完整的启动配置
-
Run
->Edit Configurations
-
点击 +
->Application
-
配置如下:
5. 配置文件准备
-
复制配置文件: -
修改 config/application.yml
(如果需要):
6. 完整的 IDEA 启动步骤
步骤 1:配置模块
-
确保所有 Maven 模块都已导入 -
等待依赖下载完成
步骤 2:创建运行配置
步骤 3:解决常见问题
7. 快速启动脚本
startup.sh
文件:8. 验证启动
9. 启动 Web UI(可选)
10. JAVA-AGENT上报
下载apache-skywalking-java-agent-9.5.0
idea中package打包,生成skywalking-agent目录,
把skywalking-agent放到你的项目jar下面
#! /bin/sh
start(){
now=`date "+%Y%m%d%H%M%S"`
exec java -javaagent:/Users/yulei/Documents/package/skywalking/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=webfunnyManagePlatform -Dskywalking.collector.backend_service=127.0.0.1:11800 -jar -Xms256M -Xmx256M webfunny_manage-2.0.jar >/dev/null 2>&1 &
printf 'start %s success' "$prog"
echo $! >server.pid
}
stop(){
kill `cat server.pid`
rm -rf server.pid
printf 'stop %s finished' "$prog"
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
printf 'Usage: %s {start|stop|restart}\n' "$prog"
exit 1
;;
esac